Jump to content


Photo
- - - - -

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

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

17 replies to this topic

#1 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 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

Attached Files


Edited by SmetDenis, 28 January 2015 - 05:54.
подправил скрипт

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



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


#2 Iv_Le

Iv_Le
  • JBZoo User (rus)
  • User rate: 8.3
  • posts: 219
  • topics: 45

Posted 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>


Edited by Iv_Le, 23 April 2015 - 11:38.

  • 0

#3 Iv_Le

Iv_Le
  • JBZoo User (rus)
  • User rate: 8.3
  • posts: 219
  • topics: 45

Posted 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

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


Edited by Iv_Le, 23 April 2015 - 14:43.

  • 0

#4 woodman

woodman
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 10 July 2015 - 15:58

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

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

 

 

Attached Thumbnails

  • Untitled-2.jpg

  • 0

#5 SmetDenis

SmetDenis
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 13 July 2015 - 10:08

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

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



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


#6 woodman

woodman
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 13 July 2015 - 10:35

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


  • 0

#7 SmetDenis

SmetDenis
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 13 July 2015 - 10:35

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

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



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


#8 woodman

woodman
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 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
  • Topic Starter
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 13 July 2015 - 10:53

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

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



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


#10 woodman

woodman
  • JBZoo User (rus)
  • User rate: 38.4
  • posts: 648
  • topics: 59

Posted 13 July 2015 - 10:59

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

 

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


  • 0





Also tagged with one or more of these keywords: категории, заголовок категории, заголовки, meta-теги, seo

Click to return to top of page in style!