Перейти к содержимому


Фотография
- - - - -

Meta title в категориях Zoo (конфликт с меню Joomla)

категории заголовок категории заголовки meta-теги seo

Сообщений в теме: 17

#1 SmetDenis

SmetDenis

Отправлено 13 January 2015 - 07:24

Рецепт был навеян мне решением из для темы - http://forum.jbzoo.c...kataloga-title/
Суть в том что если на категорию ссылаться через пункт меню Joomla, то заголовок категории будет перебиваться пунктом меню. Я говорю об этой опции.
7zhl_200x0.png

Покопавшись в коде, я понял, что Zoo/JBZoo работает нормально. Дело в том что Joomla сама перебивает title. Ниже небольшое решение, как это можно победить

Открываем файл /media/zoo/applications/jbuniversal/framework/events/jsystem.php
И добавляем в функцию onBeforeCompileHead

$categoryId = $this->app->jbrequest->getSystem('category');
if ($categoryId > 0) {
    $category = $this->app->table->category->get($categoryId);
   
    if ($category) {
        $params = $category->getParams('site');
       
        $title       = $params->get('metadata.title') ? $params->get('metadata.title') : $category->name;
        if ($title) {
            $this->app->document->setTitle($this->app->zoo->buildPageTitle($title));
        }
       
        $description = $params->get('metadata.description');
        if ($description) {
            $this->app->document->setDescription($description);
        }
       
        $keywords = $params->get('metadata.keywords');
        if ($keywords) {
            $this->app->document->setMetadata('keywords', $keywords);
        }
    }
}

$itemId = $this->app->jbrequest->getSystem('item');
if ($itemId) {
    $item = $this->app->table->item->get($itemId);
   
    if ($item) {
        $title = $item->getParams()->get('metadata.title');
        $title = empty($title) ? $item->name : $title;
        $this->app->document->setTitle($this->app->zoo->buildPageTitle($title));
       
        foreach (array('keywords', 'author', 'robots') as $meta) {
            if ($value = $item->getParams()->get('metadata.' . $meta)) {
                $this->app->document->setMetadata($meta, $value);
            }
        }
    }
}

i60i_200x0.png

Функция onBeforeCompileHead сработает в последний момент, перед тем как скомпилировать HMTL для тега head, поэтому установит meta наверняка. Её могут перебить только специфические плагины.

Проверял на JBZoo 2.1.5

Прикрепленные файлы

  • Прикрепленный файл  jsystem.php   4.3К   13 Количество загрузок:

Сообщение отредактировал SmetDenis: 28 January 2015 - 05:54
подправил скрипт

  • 4
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как моно скорее!


— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#2 Iv_Le

Iv_Le

Отправлено 23 April 2015 - 11:25

Это нужно делать осторожно. 

 

В одном из советов от разработчиков на этом же форуме конструкция

$document->setMetadata('description', strip_tags(trim($this->renderPosition('meta-description'))));
$document->setMetadata('keywords', strip_tags(trim($this->renderPosition('meta-keywords'))));
$document->setTitle(strip_tags(trim($this->renderPosition('meta-title'))));

у меня слетела.

 

И стало показывать в <keywords> часть информации из старого (до перехода на JBZoo) каталога. Имя элемента + поле из старого Zoo связанное с датой (сторонний плагин)

 

 

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

 

Сейчас буду смотреть и изучать почему пошло не так.

 

П.С.

Стоит отметить, что с конструкцией в 1-м сообщении у меня появился <title>. Раньше было пусто: <title></title>


Сообщение отредактировал Iv_Le: 23 April 2015 - 11:38

  • 0

#3 Iv_Le

Iv_Le

Отправлено 23 April 2015 - 12:03

:-) Вобщем решил свою проблему так: вырезал из куска кода

foreach (array('keywords', 'author', 'robots') as $meta) {
            if ($value = $item->getParams()->get('metadata.' . $meta)) {
                $this->app->document->setMetadata($meta, $value);

'keywords' и норм. Есть и заголовок в <title> и <keywords> тоже что-то показывает.

 

 

П.С.

Поскольку тот топик закрыли, осмелюсь здесь спросить. Почему после выполнения инструкций страница кода выглядит так:

 

EBATVffs.png

С переносом строки.


Сообщение отредактировал Iv_Le: 23 April 2015 - 14:43

  • 0

#4 woodman

woodman

Отправлено 10 July 2015 - 15:58

Как еще можно явно задать тайтл для главной страницы не через название пункта меню?

Я применил данный рецепт для 220 и у меня слетели js скрипты с фильтров и кнопок, вот такая штука в консоли

 

 

Прикрепленные файлы

  • Прикрепленный файл  Untitled-2.jpg   311.87К   0 Количество загрузок:

  • 0

#5 SmetDenis

SmetDenis

Отправлено 13 July 2015 - 10:08

Как еще можно явно задать тайтл для главной страницы не через название пункта меню?

В пункте меню главной страницы есть опция "заголовок браузера".
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как моно скорее!


— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 woodman

woodman

Отправлено 13 July 2015 - 10:35

И все же после этого рецепта у меня даже страница логина в админку не отображается, просто белый экран + все js с фронта слетели.


  • 0

#7 SmetDenis

SmetDenis

Отправлено 13 July 2015 - 10:35

И все же после этого рецепта у меня даже страница логина в админку не отображается, просто белый экран + все js с фронта слетели.

Включите вывод ошибок и покажите фатальную ошибку php. дайте ссылку.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как моно скорее!


— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 woodman

woodman

Отправлено 13 July 2015 - 10:52

Вот ссылка - http://test.nadzor.ua/

Рецепт применен, конфиг - Joomla: 3.4.1 JBZoo: 2.2.0 Pro rev2816 Zoo: 3.3.4

 

Ошибка: ReferenceError: JBZoo is not defined

       

 


  • 0

#9 SmetDenis

SmetDenis

Отправлено 13 July 2015 - 10:53

Ошибка: ReferenceError: JBZoo is not defined

Речь ведь про главную страницу?
Я не вижу ошибки.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как моно скорее!


— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 woodman

woodman

Отправлено 13 July 2015 - 10:59

Речь не только о главной, видите, JS'ы слетели сверху слева с фильтра, если зайти в любую категорию или товар, то там на кнопках видно и по адресу http://test.nadzor.ua/administratorу меня пустая страница.

 

В том-то и дело, что ошибки php вроде как и нет.... то, что я показал, это фаербаг в консоли мне написал.


  • 0





Темы с аналогичным тегами категории, заголовок категории, заголовки, meta-теги, seo

Click to return to top of page in style!