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
5 624
Поблагодарить автора Отправить деньги
Реклама

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

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

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

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

                                          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
                                            Просьба написать через форму поддержки и дать доступ к панели сайта.
                                            Постараюсь разобраться в течение нескольких дней.
                                              Дмитрий
                                              Дмитрий Старожил
                                              01 августа 2023, 11:58
                                              Здравствуйте, Алексей. Я, почему-то, не могу по вашему компоненту написать через ТП на сайте, хоть и загружал его из репозитория… Его просто нет там.
                                          Bor
                                          Bor Старожил
                                          16 сентября 2024, 22:06
                                          может ли компонент убирать кавычки из названий?
                                            Алексей Шумаев
                                            17 сентября 2024, 08:26
                                            Да, "..." заменяются на «...»
                                              Bor
                                              Bor Старожил
                                              17 сентября 2024, 09:11
                                              нужно использовать какой то модификатор или речь про ручную замену кавычек в товарах?
                                          Сергей Карпович
                                          08 февраля 2025, 19:21
                                          Подскажите, а как вывести на странице шаблон номера страницы?
                                            Алексей Шумаев
                                            09 февраля 2025, 17:07
                                            Не понял вопроса. Напишите подробнее.
                                              Сергей Карпович
                                              09 февраля 2025, 17:51
                                              Я хочу на страницах пагинации, типа: ?page=2
                                              В title, description и H1 (pagetitle) добавить ". Страница 2" и т.п.

                                              Я подозреваю что для этого в компоненте предусмотрено поле «Шаблон номера страницы», но не понятно как этим пользоваться, что либо туда ввожу, не выводится.
                                              Скрин: disk.yandex.ru/d/CnJbzwj0WvNesg
                                                Алексей Шумаев
                                                09 февраля 2025, 18:07
                                                Да, верно, пользоваться так: disk.yandex.ru/i/i936RulxzrTJfg (с реального сайта взял).
                                                Если у Вас не работает и точно всё верно сделано, пришлите доступ к админке в личку, посмотрю.

                                                Есть только нюанс — работать будет при наличии GET-переменной page, т.е. при навигации через ajax работать не будет и не должно. Т.к. это для роботов, которые переходят по конкретному урлу с номером странице, то всё в порядке.
                                                  Сергей Карпович
                                                  09 февраля 2025, 20:13
                                                  Ну да, так и прописываю, но как добавить в необходимые теги не пойму.
                                                  Напишу в личку
                                            Сергей Карпович
                                            09 июля 2025, 19:05
                                            Обнаружил проблему, что {page} не добавляется к заголовку страницы в режиме приоритет ресурс:
                                            Видимо потому что у ресурса pagetitle заполнен, что логично.

                                            Как выкрутиться из этой ситуации? Что бы у ресурса был приоритет и в тоже время шаблон {page} можно было добавить к pagetitle ресурса.
                                              Алексей Шумаев
                                              09 июля 2025, 23:15
                                              Сейчас навскидку не скажу. Скорее всего или нужно добавлять {page} всегда или добавить опцию для таких случаев.
                                              Напишите в личку: временный доступ к админке + ссылку на нужный ресурс, придумаю что-нибудь.
                                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                              75