Хак для title и знак палочки "|" Почему система его трет и не вопсринимает?

Тема в разделе "Joomla и SEF (ЧПУ)", создана пользователем deniro21, 21.06.2010.

  1. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Здравствуйте. Скачал Seo path (Хак) для Joomla 1.5, и теперь в метаданных материалов появилась возможность вводить Title. Но проблема вот в чем: когда я пытаюсь ввести Title содержащий в себе знак палочки "|" в качестве разделителя, то при сохранении во-первых не сохраняется заголовок, а во вторых выскакивает ошибка.
    Вот пример заголовка:
    Код (html):
    1. Миниотель Гостиный двор | Гостиницы  | Отзывы, рейтинг, рецензии

    Вот ошибка которая появляется:
    Warning: html_entity_decode() expects parameter 1 to be string, array given in Z:\home\Имя сайта\www\libraries\joomla\html\parameter\element\text.php on line 45

    Залезал в этот файл в 45-уй строку. Там сидит вот такой вот параметр:

    Код (PHP):
    1. $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES);


    Пробовал его удалить, но палочка все равно не вопсринимается. Без нее - все супер. С ней - ошибка, плюс в титле страницы пишется "Array". Я конечно понимаю, что эту палочку можно заменить на другой разделитель, но мне хотелось бы оставить ее. Как быть и где копать? Заранее благодарен.
     
  2.  
  3. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Попробуй так
    Код (PHP):
    1. $value = implode('|',$value);
    2. $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES);
     
    deniro21 нравится это.
  4. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Забыл. Проверку на массив добавь
    Код (PHP):
    1. if (is_array ($value)){
    2. $value = implode('|',$value);
    3. $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES);
    4. }else{
    5. $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES);
    6. }
     
  5. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Ок. Сейчас попробую
     
  6. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Теперь он принимает, и ошибок больше не выдает. Но в Title самой страницы по прежнему "Array"
     
  7. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Если ввести Title без "|", то он появляется. А если с ней - то не появляется.:)
     
  8. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    А. Ну так в index.php шаблона куда-нибудь в header добавь
    Код (PHP):
    1. <?php
    2. $title = $this->getTitle();
    3. if (is_array($title)){
    4. $title = implode('|',$title);
    5. }
    6. $this->setTitle($title);
    7. ?>
     
  9. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Вставил в head - ничего не изменилось. Попробовал повставлять в body и т.д. - толку ноль. По прежнему в title надпись "Array" . Затем решил попробовать тоже самое на любом другом шаблоне. Вставил этот же код в index и все заработало. Видимо дело в моем шаблоне, но понять не могу с чем именно. Я вложил сам index шаблона и весь шаблон заодно. Он заграничный. Может там как то все подругому сделано и прописываать код надо не в индексе?
     

    Вложения:

    • Shablon.tar.gz
      Размер файла:
      369 КБ
      Просмотров:
      0
    • index.rar
      Размер файла:
      2.9 КБ
      Просмотров:
      0
  10. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    Ну шаблон я ковырять не стану. Некогда свои проблемы.
    Попробуй так
    Код (PHP):
    1. <?php
    2. $doc = &JFactory::getDocument();
    3. $title = $doc->getTitle();
    4. if (is_array($title)){
    5. $title = implode('|',$title);
    6. }
    7. $doc->setTitle($title);
    8. ?>
     
  11. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Попробовал. Не помогло....
     
  12. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    3
    Пол:
    Мужской
    Вопрос решил. Отчаявшись, я начал действовать методом тыка и выискивать в index.php все, что хоть как-нибудь связано с title. В результате в самом начале индекса нашел вот такие строки:
    Код (PHP):
    1. // set title
    2. $this->setTitle($mainframe->getCfg('sitename') . '  ' . $this->getTitle());

    Попробовал их удалить, и все заработало по решению предложенному выше. Так что, если кто-нибудь юзает шаблоны YooTheme и попадет в такую же ситуацию - берите на заметку. botanist - спасибо большое за помощь. Плюсую.:)
     

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

Загрузка...