Шаблоны для title ресурсов

Добрый день!

Подскажите дополнение для создания своих правил (шаблонов) для title ресурсов.

Суть такая:
Есть магазин.
Необходимо для товаров разных категорий создать свои правила для title.

Что-то типа таких:

"«Название товара»" купить, "«Название товара»" цена и отзывы, инструкция по применению
— "«Название магазина»"

«Название товара» инструкция по применению, «Название товара» цена, «Название товара» купить — "«Название магазина»"

Есть ли дополнение, для создания таких правил и вывода?
Андрей Шевяков
15 декабря 2016, 12:31
modx.pro
1
3 447
0
Поблагодарить автора Отправить деньги

Комментарии: 4

Андрей
15 декабря 2016, 16:47
1
+2
Тоже недавно возникла такая задача, решил написанием плагина.

Вешается на событие OnLoadWebDocument, так же создал TV поля pattern-seo-title, pattern-seo-keywords, pattern-seo-description.

if ($modx->event->name == 'OnLoadWebDocument') {
    
  function getMeta($id) {
    global $modx;
    
    if ($resource = $modx->getObject('modResource', $id)) {
      
      $title = $resource->getTVValue('pattern-seo-title');
      $keywords = $resource->getTVValue('pattern-seo-keywords');
      $description = $resource->getTVValue('pattern-seo-description');

      if ((isset($title) && !empty($title)) || (isset($keywords) && !empty($keywords)) || (isset($description) && !empty($description))) {
        $modx->setPlaceholder('pattern.seo.title', $title);
        $modx->setPlaceholder('pattern.seo.keywords', $keywords);
        $modx->setPlaceholder('pattern.seo.description', $description);
      } else {
        getMeta($resource->get('parent'));
      }        
    }
  }
  
  $id = $modx->resource->parent;
  
  getMeta($id);
    
}

В разделе для которого нужно применить шаблон, в TV полях уже можно писать например — "«[[*pagetitle]]»" купить, "«[[*pagetitle]]»" цена и отзывы, инструкция по применению — "«[[++site_name]]»"

В шаблоне выводятся как плейсхолдеры [[+pattern.seo.title]], [[+pattern.seo.keywords]], [[+pattern.seo.description]]

Я выводил так, на Fenom

{set $pattern_seo_title = $_modx->getPlaceholder('pattern.seo.title')}
{set $pattern_seo_keywords = $_modx->getPlaceholder('pattern.seo.keywords')}
{set $pattern_seo_description = $_modx->getPlaceholder('pattern.seo.description')}

{if $_modx->resource['seo-title']?}
	{$_modx->resource['seo-title']}
{elseif $pattern_seo_title?}
	{$pattern_seo_title}
{else}
	{$_modx->resource.pagetitle}
{/if}

{if $_modx->resource['seo-keywords']?}
	{$_modx->resource['seo-keywords']}
{else}
	{$pattern_seo_keywords}
{/if}

{if $_modx->resource['seo-description']?}
	{$_modx->resource['seo-description']}
{else}
	{$pattern_seo_description}
{/if}
Андрей Шевяков
15 декабря 2016, 23:25
0
Вот еще что нарыл:

1) В pdoTools есть сниппет pdoTitle, может пригодиться
2) Есть дополнение CustomUrls CustomUrls
статейка по использованию Статья

Попробую с ними поработать.
    Андрей Шевяков
    15 июня 2017, 14:19
    +1
    Андрей, спасибо за такой шикарный компонент — seoTemplates!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4