Адрес текущей страницы в Joomla

Тема в разделе "Возможности CMS Joomla!", создана пользователем DKraev, 12.07.2010.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Здравствуйте. Требуется разместить кнопку "Печать" на всех страницах сайта, независимо от типа содержимого.

    В принципе, это не проблема. Но уперся вот в чем. Забыл как получить адрес текущей страницы...

    Кто может подсказать?
     
  2.  
  3. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Угу. Всем спасибо. Решается так:

    Код (PHP):
    1. <?php $uri = &JFactory::getURI();
    2. $url = $uri->toString(array('path', 'query', 'fragment'));
    3. print $url; ?>
     
    woojin нравится это.
  4. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    спасибо!!
    сам ничего не мог сказать т.к. ни разу ни сталкивался
     
  5. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    а ты пока ковырялся не наткнулся на такую штуку:

    в шаблоне есть подключение скрипта
    Код (CODE):
    1. <?php include ("js/slide.php"); ?>

    в самом скрипте функция
    Код (CODE):
    1. function slide

    эта функция переключает фоновые изображения в соответствии с пунктами меню, только вот зараза титл нихрена она на может поменять на другой

    попробовал воспользоваться твоим примером
    Код (PHP):
    1. if ($this->title == '123') {$this->setTitle ('Оформить заказ');} else { }


    тоже ничего не получается, значит надо сделать какой то NEW из какого то класса, а вот из какого я что то ни как не найду
     
  6. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Ниче не понял. Понятней спроси. Чего точно надо.
     
  7. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    в определенном месте страницы вызывается функция SLIDE которая находится в файле SLIDE.PHP
    так вот эта фоункция должна заменять TITLE браузера по мимо своих основных функций, но если использовать тот принцип который я описал в прошлом посте, ничего не происходит

    это означает что в эту функцию не передуётся пременная $THIS, значит её надо откуда то там достать и чтобы она содержала функции получения ТИТЛА и УСТАНОВКИ, не обязательно чтобы эта переменная была именно $THIS

    так понятно?
     
  8. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Код (PHP):
    1. <?php
    2. $id = 1;//задаем нужный нам Itemid пункта меню
    3. $itemid = JRequest::getInt('Itemid',0); //получаем текущий если он есть, или 0
    4. if ($itemid == $id){//сравниваем текущий с заданным и если совпадают
    5. $doc = JFactory::getDocument();
    6. $doc->setTitle('Задаем нужный там тайтл');
    7. }
    8. ?>
     
  9. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    так... видать я как то ни так объяснил... ничего сейчас код будет

    файл INDEX.PHP шаблона
    Код (PHP):
    1. <?php include ("js/slide.php"); ?>
    2. <?php slide(f); ?>

    файл SLIDE.PHP
    Код (PHP):
    1. <?php function slide($exp='') {
    2.                     $menu = & JSite::getMenu();
    3.                     $active = $menu->getActive();
    4.                     $pm=mb_convert_case($active->name, MB_CASE_LOWER, "UTF-8");
    5.                     $pt=mb_convert_case($active->name, MB_CASE_UPPER, "UTF-8");
    6.                     if ($this->title == 'пусто') {$this->setTitle ($pt);}
    7.                     switch($pm) {
    8.                         case 'brend':
    9.                             if ($exp=='f') {echo 'brend';} else {?>
    10.                             <div id="ps">
    11.                                 <div id="panel">
    12.                                     <jdoc:include type="modules" name="left" style="xhtml" />
    13.                                 </div>
    14.                                 <p class="slide"><a href="#" class="btn-slide">СВЕРНУТЬ</a></p>
    15.                             </div>
    16.                             <?php } break;
    17.                         case 'бутик':
    18.                             if ($exp=='f') {echo 'butiq';} else {?>
    19.                             <div id="ps">
    20.                                 <jdoc:include type="modules" name="left" style="xhtml" />
    21.                             </div>
    22.                             <?php } break;
    23.                         case 'видео':
    24.                             if ($exp=='f') {echo 'video';}
    25.                             break;
    26.                         case 'услуги':
    27.                             if ($exp=='f') {echo 'uslugi';} else {?>
    28.                             <div id="ps">
    29.                                 <div id="panel">
    30.                                     <jdoc:include type="modules" name="left" style="xhtml" />
    31.                                 </div>
    32.                                 <p class="slide"><a href="#" class="btn-slide">СВЕРНУТЬ</a></p>
    33.                             </div>
    34.                             <?php } break;
    35.                         case 'контакты':
    36.                             if ($exp=='f') {echo 'kontakt';} else {?>
    37.                             <div id="ps">
    38.                                 <div id="panel">
    39.                                     <jdoc:include type="modules" name="left" style="xhtml" />
    40.                                 </div>
    41.                                 <p class="slide"><a href="#" class="btn-slide">СВЕРНУТЬ</a></p>
    42.                             </div>
    43.                             <?php } break;
    44.                         case '   ':
    45.                             if ($exp=='f') {echo 'privet';}
    46.                             break;
    47.                         default: ?>
    48.                             <jdoc:include type="modules" name="left" style="xhtml" />
    49.                     <?php }
    50.                    
    51.                 } ?>

    такая конструкция напрочь работать отказывается, и как сделать так чтобы заработала не понимаю

    попробовал по твоему примеру, выдаётся ошибка:
    Код (CODE):
    1. <b>Catchable fatal error</b>:  Object of class JDocumentHTML could not be converted to string in <b>E:\programs\xampp\htdocs\loden\templates\loden_fashionfresh\js\slide.php</b> on line <b>3</b><br />

    знаешь как исправить - помоги
     
  10. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Сперва ты объясни что за хренотень и что она должна делать.

    Код (PHP):
    1. if ($this->title == 'пусто') {$this->setTitle ($pt);}

    Пока вижу что если в тайтле слову "пусто", то вставить в тайтл название пункта активного меню. При каких условиях в тайтле появится слово "пусто", я понятия не имею
    А вообще чтобы заменить $this в данном случае
    Код (PHP):
    1. $doc = JFactory::getDocument();
    2. if ($doc->title == 'пусто') {$doc->setTitle ($pt);}

    Кстати
    Код (PHP):
    1. <?php slide('f'); ?>
     
    Последнее редактирование: 12.07.2010
  11. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    эта конструкция не работает, ошибку я написал выше, это пусто получается из названия статьи, там просто пустая статья

    у меня есть некоторое количество модулей которые переключаются в зависимости от выбранного пункта меню, а по скольку пустой пункт меню создать не возможно, так что пришлось сделать пункт с пустой статьёй
    адрес http://woojin-site.no-ip.org/loden
    посмотри откуда там берётся это ПУСТО, если есть желание
     
  12. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Ясно. Покажи как вставлял и что находится в стр. 3 которая выдает ошибку.
    Чем это там переменную $doc в строку пытается конвертировать
     
  13. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    смотри
    все флешки вкладывать не стал, думаю поймёшь что они переключаются
     

    Вложения:

  14. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Ну весь шаблон я ковырять не буду. Ну ты даешь.
    Код (PHP):
    1. <?php function slide($exp='') {
    2.                     /*$doc = & JFactory::getDocument();
    3.                     echo '$doc='.$doc;*/

    Ясен пень что 3 строка давала ошибку, если раскомментировать.
    Что мешало строку
    Код (PHP):
    1. if ($this->title == 'пусто') {$this->setTitle ($pt);}

    тупо заменить на
    Код (PHP):
    1. $doc = JFactory::getDocument();
    2. if ($doc->title == 'пусто') {$doc->setTitle ($pt);}
     
  15. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    это определение - создание, не знаю как правильно назвать выдаёт ошибку

    <b>Catchable fatal error</b>: Object of class JDocumentHTML could not be converted to string in <b>E:\programs\xampp\htdocs\loden\templates\loden_fashionfresh\js\slide.php</b> on line <b>3</b><br />

    я же уже писал
     
  16. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    woojin, так мы ж с тобой вроде делали уже это. Ты сказал, что получилось все.
     
  17. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    Посмотри полностью общение, просмотри архив.

    посмотрел как подключается эта функция?
    Если написать, как написал botanist, то выходит ошибка, приведенная в моем прошлом сообщении. Как это убрать, я не знаю, но нужно сделать, чтобы работало.

    P.S. т.к. делали мы с тобой, работает исключительно в INDEX.PHP, мне надо чтио бы этот же механизм работал в подключаемом файле и соответсвенно функции

    предложения есть?
    можешь в аську писать 326039387 (я там ссылку давал можешь глянуть откуда берётся ПУСТО)

    если надо то я предложенную botanist конструкцию могу подключить и посмотришь что за ошибка возникает и как там ничего не показывается
     
  18. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Уф. Я умею читать. В том числе тексты ошибок. Или мы смотрим в разные файлы или еще чего. Перевожу текст ошибки понятным языком.
    Ошибка выдается 3-й строкой файла templates\loden_ fashionfresh\js\slide.php и гласит:
    "Объект класса JDocumentHTML не может быть преобразован в строку".
    Смотрю в третью строку файла и вижу
    echo '$doc='.$doc;
    Да это будет выдавать указанную ошибку.
    Предлагаю 10 строку заменить на две строки
    Получаю ответ что замена 10-й строки вызывает ошибку в 3-й строке этого же файла. Бред.

    woojinПредлагаю выспаться и вернуться к вопросу позже.
     
  19. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    мне бы к завтрому эту штуку победить
    и если убрать строку 3 то всё равно не получается узнать ТИТЛ страницы
     
  20. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    А может тогда вообще с другой стороны зайти? Менять фоны не отдельным скриптом, а в самом jndex.php?

    Например так:

    Код (PHP):
    1. <?php if ($Itemid == '10') { ?>
    2.          Выводим код один
    3. <?php } elseif ($Itemid == '20')  { ?>
    4.          Выводим код два
    5. <?php } else { ?>
    6.          Выводим код по умолчанию
    7. <?php } ?>


    Вроде так должно работать.
     
  21. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Ну ладно. С учетом того что оба уже довольно утомлены.
    В index.php шаблона перед закрывающим </head> добавь.
    Код (PHP):
    1. <?php
    2. $actmnu = &JSite::getMenu()->getActive()->name;
    3. $doc = JFactory::getDocument();
    4. if ($doc->getTitle() == 'пусто'){
    5. $doc->setTitle($actmnu);
    6. }
    7. ?>

    И перейди на страницу с "пусто".
    Пардон ошибка была.
     
    woojin нравится это.

Поделиться этой страницей

Загрузка...