mvtSeoData

Позволяет автоматически генерировать longtitle, pagetitle, description, content с использованием переменных шаблона для товаров и категорий Minishop2. Бесплатно.

Например (для категории Minishop2):
title
Чайники купить в интернет–магазине какой-то-магазин.рф | Страница 2
description
Купить недорого Чайники по цене от 350 руб. до 3500 руб. В наличии 48 наименований. Доставка по всей России. ☎ +7-800-500-XXXX | Страница 2
content
Чайники Мега от известного производителя, представлены в интернет-магазине «какой-то-магазин.рф» в разделе: Электрические чайники. Самая бюджетная цена на Чаник малый простой — 80 руб. Самая высокая на Чайник большой волшебный — 15 850 руб. В наличии на складе более 53 наименований чайников различного исполнения и характеристик.
Доступные переменные:


Интерфейс:


Существует 2 типа шаблонов: общие и предназначенные для конкретного ресурса.
Компонент сначала ищет предназначенный ресурсу шаблон, если не находит — смотрит общий по типу документа: категория MS2 (msCategory), товар MS2 (msProduct).

Можно также сделать отдельные шаблоны для разных категорий с учётом вложенности.
Или для всех товаров определённой категории.
Это позволяет точечно отрабатывать каждый раздел каталога:


Переменные для Категорий MS2 собираются компонентом для каждой категории в результате процесса предварительной «индексации», чтобы не создавать лишней нагрузки на сайт в процессе работы.
Сформировать индекс можно как из панели управления:


так и посредством создания задачи в crontab:
#например,  - запускать каждый день в час ночи 
0 1 * * * php ~/core/components/mvtseodata/cron/run.php
Последнее предпочтительнее, если в вашем магазине меняется ассортимент и цены — настройте нужный график обновления для получения актуальных данных.

Получение данных возможно 2 способами:

  1. Установка плейсхолдеров или замена штатных «на лету» (плагин mvtSeoData на событие OnLoadWebDocument)
    Плагин автоматически заменяет стандартные плэйсхолдеры: pagetitle, longtitle, description, content.
    При настройке шаблона обратите внимание на параменр «Приоритет»:
    • ресурс: если соответствующее поле ресурса не пусто, оно не будет заменено шаблоном
    • компонент: соответствующее поле ресурса будет заменено шаблоном
    • компонент дополняет ресурс: поле шаблона дополнит соответствующее поле ресурса
    Если вам не нужна автозамена — вы можете выключить плагин и воспользоваться сниппетом.

  2. Сниппет mvtSeoData
    {set $seodata = '!mvtSeoData' | snippet}
    Предполагает работу с fenom, возвращает массив с ключами: longtitle, pagetitle, description, content, image (можно использовать для тегов типа og:image).
    Если вы используете механизмы расширения и наследования шаблонов, то, запустив сниппет в базовом шаблоне, переменная $seodata будет доступна везде. Соответственно, можно делать, например, так:
    {set $content = 'content' | resource}
    {if $content?}
        {$content}
    {else}
        {if $seodata['content']? }
            {$seodata['content']}
        {/if}
    {/if}
Недостатки:
— пока не умеет склонять, получается иногда так: «2 наименований».
Особого значения не имеет вроде.
Остальные недостатки ищутся…

Обновлено 07.07.20: теперь для шаблона товара доступны все переменные, которые определены для ресурса в fenom, например {$article}, {$size},…

Modstore
Алексей Шумаев
05 июля 2020, 01:09
modx.pro
2
3 314
+17
Поблагодарить автора Отправить деньги

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

Семён Кудрявцев
07 июля 2020, 09:16
+1
Автору респект! Очень интересный и полезный компонент. Немного хотелок (если у автора будет время):
— В общих шаблонах сейчас можно делать выборку только по ресурсу-родителю, было бы круто если бы можно было ещё и по шаблону выборку делать.
— Возможность добавлять свои переменные в шаблоны (Родные допполя miniShop2 и tv-поля)
— Склонение слов в шаблонах (через модификатор было бы вообще круто)
    Алексей Шумаев
    07 июля 2020, 09:53
    +2
    Вчера вроде 2 пункт частично добавил: для товара (в частности) можно использовать все переменные, определённые в шаблоне типа артикула, цвета и т.д.
    По TV нужно подумать. Остальное в списке.
    Также планируется возможность работы с простым ресурсом (modDocument) — оказалось нужным.
    Bor
    Bor
    10 июля 2020, 13:02
    +2
    Пакет огонь, спасибо.
      Виталик
      16 июля 2020, 20:46
      0
      Добрый вечер. Планируется ли поддержка обычных ресурсов? Без работы minishop2.
        Алексей Шумаев
        16 июля 2020, 22:32
        +1
        Добрый!
        Поддерживается. Я забыл обновить компонент, сейчас залил новую версию.
        В админке обновите кэш браузера.
      Олег Щавелев
      24 июля 2020, 16:19
      0
      @Алексей Шумаев, у меня по какой-то причине нельзя выбрать Ресурс — Родитель пустой селект. Тут не очевидная настройка для первого раза, какие-то ограничения или просто не работает?

      Bor
      Bor
      13 августа 2020, 15:00
      0
      Добрый день. Небольшой вопрос по «Приоритет данных». Вроде при сохранении выбираю «Компонент», но когда открываешь повторно, то снова стоит ресурс. в итоге на заданных ресурсах не отображается введенные значения.
      Что то делаю не верно или это так задумано?
        Алексей Шумаев
        13 августа 2020, 15:40
        0
        Не должно быть такого; у меня нормально.
        Если возможно, отправьте доступ в личку, вечером посмотрю.
          Артем
          01 сентября 2020, 21:55
          0
          Удалось ли найти проблему? Наблюдаю похожую проблему, иногда (не у всех) правил возвращается к приоритету ресурс. Иногда это происходит после сброса кеша, иногда после сохранения нового правила. При этом это происходит хаотично, у некоторых меняется, у некоторых нет
            Алексей Шумаев
            02 сентября 2020, 11:37
            0
            @Bor не предоставлял доступ; соответственно я не смотрел.
            если есть возможность — скиньте в личку доступ к своему сайту.
            Алексей Шумаев
            30 октября 2020, 09:46
            0
            Проблема подтверждена и исправлена, можно обновляться.
            Алексей Шумаев
            30 октября 2020, 09:46
            0
            Проблема подтверждена и исправлена, можно обновляться.
            Виталик
            29 октября 2020, 11:38
            0
            Добрый день.
            А в описании возможно выводить longtitle? к примеру, у меня заполнен longtitle, и из него хочу сформировать шаблон для description:
            ⭐ {longtitle} ⭐ купить в интернет-магазине ✅ «My shop» ✅

            но longtitle не подставляется.
              Алексей Шумаев
              29 октября 2020, 11:53
              0
              Добрый!
              По той логике, которая сейчас заложена в компонент, longtitle используется для , соответственно для генерации я его не ставил. Но сделать можно, попробую сегодня/завтра обновить версию.
              Отпишусь сюда.
                Алексей Шумаев
                30 октября 2020, 09:28
                0
                Компонент обновлён, пробуйте.
                  Виталик
                  05 ноября 2020, 22:50
                  0
                  Огонь, спасибо!
                    Виталик
                    07 декабря 2020, 01:29
                    0
                    Добрый вечер. Все использую, круто. Единственный вопрос, заметил, если у меня где то стоит [[*longtitle]] в шаблоне товара (использую как расшифровку названию), компонент подменяет значение на «Шаблон meta-заголовка:». так задумано или баг?
                    Заранее спасибо
                      Алексей Шумаев
                      07 декабря 2020, 15:03
                      0
                      Добрый день
                      Так и задумано, т.к. исторически у нас СЕОшники используют longtitle как заголовок страницы, а pagetitle — как h1.
                  Goldy Brent
                  10 ноября 2020, 19:05
                  0
                  Данный модуль с языками не работает? На основном языке все ок, а на других (другие контексты) не выводится.
                    Алексей Шумаев
                    10 ноября 2020, 19:41
                    0
                    Вероятно, да — не тестировал.
                    Могу на вашем сайте настроить и обновить версию. Пишите в личку.
                      Goldy Brent
                      14 ноября 2020, 11:59
                      0
                      А вы на своем сервере не можете посмотреть/проверить? Я не могу давать доступы к клиентскому проекту.
                        Алексей Шумаев
                        14 ноября 2020, 16:14
                        0
                        Нет, по 2 причинам:
                        1. Это будет долго
                        2. Не факт, что я эмулирую именно вашу ситуацию.
                        Т. е. вероятна ситуация, когда время потрачу, а задачу не решу.
                        Вы можете сделать клон и дать доступ к нему.
                    Андрей
                    13 ноября 2020, 16:24
                    0
                    Привет! Почему не могу скачать дополнение уже неделю? При поиске по названию или при клике на него пишет «Нет данных для отображения»
                      Алексей Шумаев
                      13 ноября 2020, 16:40
                      0
                      Привет
                      У меня везде нормально.
                      На сайте: modstore.pro/packages/other/mvtseodata
                      Пакет: prntscr.com/vimlyh
                      У тебя проблема с подключением к modstore или что-то ещё, наверное.
                        Андрей
                        13 ноября 2020, 16:46
                        0
                        блин фигня какая то, именно на ваше дополнение такое происходит, остальные открывает…
                        на сайте та тоже открывает
                          Алексей Шумаев
                          13 ноября 2020, 17:45
                          0
                          Нужно задать вопрос в поддержке modstore
                            Андрей
                            13 ноября 2020, 20:15
                            0
                            Получить дополнение в обход modstore возможно?
                              Андрей
                              13 ноября 2020, 23:50
                              0
                              Уже не нужно, справился, спасибо
                          Michael
                          27 февраля 2021, 17:19
                          0
                          Скорее всего надо попросить админа в modstore чтобы в настройках дополнения указал верхнюю версию modx свежую. Бывает что в приложении стоит версия 2,7 максимальная, а ты поставил 2,8 и modx твой не видит приложение. у меня так было. админ исправил за 2 секунды.
                        Катерина
                        25 марта 2021, 16:40
                        0
                        Добрый день! Тоже не выбирается родительская ресурс-родитель, что я делаю не так?)
                        Игорь
                        31 марта 2021, 13:35
                        0
                        Добрый день! На моем сайте, переменная
                        {count_products}
                        выводит не количество товаров в данной категории (как указано в информации компонента), а количество товаров в данной категории у которых указана стоимость (цена). Если стоимость не указана — количество товаров подсчитывается не верно.
                        Подскажите, пожалуйста, как вывести именно количество товаров в данной категории (включая товар без указаной стоимости, например — под заказ).
                          Алексей Шумаев
                          31 марта 2021, 14:50
                          0
                          Добрый! Залил новую версию. Не тестил, т.к. нет времени, но должно работать.
                          Прошу проверить и отписаться )
                            Игорь
                            31 марта 2021, 17:15
                            0
                            Спасибо за оперативность! В целом все работает (не забываем повторно сформировать индекс для товарных категорий).
                            Проблема возникает, если в категории выводятся товары из другой категории. Реальный пример — в основной категории (в которой идет подсчет компонентом) находятся 7 товаров + с другой категории отображается — 3, таким образом всего — 10 (mFilter2 тоже подчитывает — 10). А вот компонент в этой ситуации выводит — 13
                              Алексей Шумаев
                              31 марта 2021, 19:08
                              +1
                              Да, мультикатегорий пока нет, забыл про них. Попозже добавлю.
                                Игорь
                                01 апреля 2021, 14:55
                                0
                                В поле «Описание» не срабатывает проверка на наличие цены у товара:
                                {if $_modx->resource.price?}{$_modx->resource.price}{else}Под заказ{/if}
                                Подскажите, пожалуйста, это штатная работа компонента или я что-то делаю не так (в шаблоне товара проверка работает)?
                                  Алексей Шумаев
                                  01 апреля 2021, 16:14
                                  0
                                  Не понял, что за поле «Описание» имеется ввиду.
                                  Если в поле компонента, то там нет ни фенома, ни ресурса.
                                  Не думаю, что это компонент.
                                    Игорь
                                    01 апреля 2021, 17:07
                                    0
                                    Да, «Описание» это поле компонента. Не могу сказать по какой причине, но выше указанный вызов «условно-работает». Например, если указана стоимость 10, то выведет — «10 Под заказ», если стоимость не указана (0), то — «0 Под заказ».
                                    Феном не работает, но
                                    {$_modx->resource.price}
                                    вполне рабочий
                                      Алексей Шумаев
                                      01 апреля 2021, 17:38
                                      +1
                                      Видимо работает потому, что в любом случае перед выводом код проходит через парсер.
                                      Почему в таком случае не срабатывает феном пока сказать не могу, надо код смотреть )
                                Алексей Шумаев
                                03 апреля 2021, 10:41
                                +1
                                Мультикатегории же, оказывается, есть ) Вроде нормально работают вроде на паре крупных сайтов.
                                Видимо, есть ошибка в подсчёте количества, на крупных сайтах этого можно и не заметить.
                                Если есть возможность дать доступ к админке — я посмотрю твой пример, поправлю.
                                  Игорь
                                  03 апреля 2021, 18:48
                                  0
                                  Спасибо! Воссоздал «проблему» на тестовом сайте, логин и пароль скинул в личные сообщения.
                            дмитрий
                            15 июля 2022, 22:35
                            0
                            Для modx 3 работает?
                              Алексей Шумаев
                              16 июля 2022, 18:59
                              0
                              Пока нет. В обозримом ближайшем будущем (до осени точно) поддержки 3 не планируется.
                              Bor
                              Bor
                              28 июля 2022, 10:28
                              0
                              Добрый день. Не срабатывает для опций, делаю по инструкции. Указываю в шаблон title {#электричество #option_electricity# кВт#} — в итоге, в title выводит только слово — Array.
                              Лог пустой. Возможно, баг какой то?
                                Алексей Шумаев
                                28 июля 2022, 10:34
                                0
                                Добрый день.
                                Не исключено. Напишите через поддержку с указанием доступа к админке, я проверю (к сожалению, оперативно не получится — в течение нескольких дней).
                                Сергей Карпович
                                14 декабря 2022, 15:41
                                0
                                У меня почему то шаблон не работает, если установить приоритет = Ресурс.
                                Но при этом поля longtitle и descriprion в ресурсе пустые
                                  Алексей Шумаев
                                  14 декабря 2022, 16:16
                                  0
                                  Если установлен приоритет ресурса, то модуль смотрит сначала ресурс.
                                  Если у ресурса есть заполненные поля — берёт информацию оттуда.
                                  Соответственно, до шаблона уже не доходит.
                                    Сергей Карпович
                                    14 декабря 2022, 16:25
                                    0
                                    Так я и говорю, в ресурсе поля longtitle и descriprion пустые, а до шаблона все равно не доходит дело.
                                      Алексей Шумаев
                                      14 декабря 2022, 16:27
                                      0
                                      Не могу ничего конкретного сказать, нужно провести отладку в данном случае.
                                      У нас на нескольких сайтах вроде всё работает.
                                  Сергей Карпович
                                  17 июня 2023, 14:30
                                  0
                                  Поймал баг — если в шаблоне категории товаров указать параметр связанный с товарами, например {min_price}, а на странице нет товаров — то получаем белый экран
                                    Алексей Шумаев
                                    18 июня 2023, 11:17
                                    0
                                    Обновите версию.
                                    Забыл, оказывается, залить последнее обновление )
                                      Сергей Карпович
                                      18 июня 2023, 17:43
                                      0
                                      кайф =)
                                        Сергей Карпович
                                        18 июня 2023, 18:37
                                        0
                                        Блин теперь вылезла другая проблема поле pagetitle как то по два раза прогоняется. Получается «pagetitle текст текст»
                                        И в шаблоне заголовка и в SEO title
                                        Скрин: disk.yandex.ru/i/D_2AYTTyoWd61g
                                          Алексей Шумаев
                                          18 июня 2023, 20:09
                                          0
                                          Не должно быть такого, вроде работает на куче сайтов. Напишите через поддержку с доступами к админке и ссылкой на эту страницу в админке, постараюсь сегодня проверить.
                                      Дмитрий
                                      28 июля 2023, 19:38
                                      0
                                      Здравствуйте! Вижу у комментаторов выше тоже есть подобные проблемы. Если я правильно понял, то при настройке приоритета «Ресурс» компонент не подменяет заголовки, если у ресурса заполнено поле. Значит, если не заполнено — то поле должно заполняться из компонента. У меня следующая картина:

                                      1. В чанке вывод meta-заголовков такой:

                                      [[*id:is=`1`:then=`<title itemprop="headline">[[*longtitle:striptags:title:default=`[[++site_name:striptags:title]]`]]</title>`:else=`<title itemprop="headline">[[*longtitle:striptags:title:default=`[[*pagetitle:striptags:title]]`]] | [[++site_name:striptags:title]]</title>`]]
                                      <meta name="description" itemprop="description" content="[[*description:striptags:title]]">

                                      2. Настройки в товаре:


                                      3. Настройки компонента



                                      В итоге meta-description пустой, хотя должно быть выведено «3333»:



                                      Что не так, где копать??

                                      И вопрос про Приоритет: выпадающий список «Приоритет данных» понятно, а рядом поле «Приоритет» с числовым значением на что влияет? Не увидел нигде информации об этом… Благодарю за ответ!
                                        Алексей Шумаев
                                        31 июля 2023, 11:43
                                        0
                                        Просьба написать через форму поддержки и дать доступ к панели сайта.
                                        Постараюсь разобраться в течение нескольких дней.
                                          Дмитрий
                                          01 августа 2023, 11:58
                                          0
                                          Здравствуйте, Алексей. Я, почему-то, не могу по вашему компоненту написать через ТП на сайте, хоть и загружал его из репозитория… Его просто нет там.
                                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                      64