AnotherPages. Виртуальные страницы для СЕОшников и не только.

Компонент позволяет создавать неограниченное количество «виртуальных копий» ресурса, не создавая дубль самого ресурса. Бесплатно.


Т.е. берём ресурс, меняем некоторые ключевые поля и выводим на экран со всеми остальными данными. Можно подменять: основные поля ресурса, tv (указываем в настройках). TV-поля пока обрабатываются только текстовые, комбобокс и файл (например меняем ключевые слова и мета-описание, если храним их в TV).

В первую очередь актуально для товаров minishop2.
Например, на основании одного товара «Платье белое» можно (не создавая реальных ресурсов и не копируя данный) создать связанные с ним страницы товаров «Платье летнее белое с лампасами», «Праздничное платье» и т.п… Таким образом можно охватить дополнительную семантику.





Автоматически генерируется отдельный файл ap_sitemap.xml, добавьте его в robots при желании.
В комплекте сниппет, выводящий список ссылок на виртуальные копии данного ресурса.
Поиск и отдача виртуальной страницы производится на событие OnPageNotFound.

Недостатки: на данный момент «копии» ресурса не участвуют в поиске по сайту (а нужны ли они в поиске?); может ещё что-то, всё-таки это не ресурсы.

Если будет интерес к компоненту, попозже добавлю функционал загрузки по шаблону из csv.

Забрать можно тут.
Алексей Шумаев
07 ноября 2019, 16:38
modx.pro
8
521
+20
Поблагодарить автора Отправить деньги

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

Scorp Satex
07 ноября 2019, 19:10
0
Здравствуйте.

А можно документацию? Скрины как выглядит в админке? :)

Забрать можно тут < — ссылка битая.
Ilya Ev
07 ноября 2019, 22:09
0
Классный компонент, а хлебные крошки строит? И можно ли управлять вложенностью, т.е. делать урл как отдельная страница site.ru/dop.html так и подраздел страницы к которой виртуальная добавлена site.ru/page/dop.html?
    Алексей Шумаев
    07 ноября 2019, 22:15
    0
    Хлебные пока нет, это планировал на потом, если потребуется.
    URL любой можно указать. Если не указывать — сгенерит по настройкам системы.

    На самом деле — это заготовка, реализация хорошей идеи на скорую руку.
    Я его не очень использовал пока — сделал по просьбе товарища, пробует.
    Собственно, жду обратной связи от пользователей.
    Планировал развивать, насколько время позволит.
    Yar
    Yar
    08 ноября 2019, 12:14
    0
    Интересная разработка. А Гугл и Яндекс в индекс такие ресурсы пускают? Может есть какие-либо цифры по приросту трафика на конкретном проекте (без ссылок, просто: было-стало)? Спасибо.
      Алексей Шумаев
      08 ноября 2019, 13:08
      0
      А это все в процессе выяснения) Коллега-сеошник занимается. Но на некоторых взлетевших ресурсах такая штука замечена.
      Поэтому ожидаем результата. С т.з. поисковиков должно быть все нормально.
      Надо пробовать.
      Я и выложил пораньше, чтобы собрать какую-то обратную связь. Может кто-то что-то полезное подскажет — внедрим. Всем польза.
        Yar
        Yar
        11 ноября 2019, 11:59
        0
        Хорошо, пишите по мере поступления информации.
          Алексей Шумаев
          15 ноября 2019, 08:41
          +1
          «Тестовый» сайт сегодня занял первое место по ключевому запросу. До этого — что не делали — болтался на 2-5 странице (по объективным причинам). Но, повторюсь, для меня сео — тема мутная и что там в итоге повлияло на отдачу чёрного ящика — я не знаю ) Скорее всего все наши действия в куче.
            Yar
            Yar
            15 ноября 2019, 12:03
            0
            Ну что ж, офигенно) Добавил компонент в TODO. Спасибо!
      DeHuCkA
      08 ноября 2019, 13:53
      0
      Полезно!
      Где он данные хранит? В своей табличке?
        Алексей Шумаев
        08 ноября 2019, 13:59
        0
        Да.
        На всякий случай: не стоит пускаться во все тяжкие и запускать компонент на боевом сайте прямо сходу.
        Как и любое действие, которые делается во имя сео, — тренироваться нужно на кошках.
        Используйте возможности fenom'а:
        // видит только авторизованный в админке
        {if $_modx->hasSessionContext('mgr')}
            {'!apList' | snippet : ['elinking' => 0]}
        {/if}
        
        // только для ресурса id=5
        {if 'id' | resource == 5}
            {'!apList' | snippet : ['elinking' => 0]}
        {/if}
        Роман
        11 ноября 2019, 11:51
        0
        Яндекс будет клеить такие страницы.
          Алексей Шумаев
          11 ноября 2019, 11:56
          +1
          Это проверено? На каком основании он их склеит?
          Таки это совсем разные страницы (если вы замените все ключевые поля).
          Однако для меня сео — нечто невнятное и нестабильное, поэтому я не спорю. Пробуйте.
          У нас пока нет чёткого результата (не запустили изменения в индекс в значимом объёме + время нужно).
            Николай
            11 ноября 2019, 12:30
            0
            Исходя из этой логики тогда он склеит и обычные страницы категорий… в одну)
              Роман
              12 ноября 2019, 12:53
              0
              Николай, а вы разве не знали. Для этого и есть canonical, чтобы определялась главная страница категории.
            Сергей Лим
            12 ноября 2019, 00:25
            0
            Задумка очень хорошая. А если речь идет не об одном товаре, а о выборке. Допустим есть 5 строительных магазинов: A,B,C,D,E и они допустим в категории «Строительные магазины». Можно ли их засунуть в виртуальную категорию «Обои», допустим только магазины A,D,E.
              Алексей Шумаев
              12 ноября 2019, 00:41
              0
              В текущем виде — нет, это не ресурсы, поэтому их нельзя просто взять и выбрать.
              Хотя вариант есть ) Об этом ниже.

              Вопрос с «родителем» для этих страниц нужно решить.
              Я думал сделать 2 варианта:
              1) можно их делать «потомками» исходной страницы или потомками родителя исходной страницы. Что логично, т.к. это по-сути синонимы этой страницы;
              2) назначать им нескольких «родителей» (как мультикатегории в ms2) — тогда теоретически их можно выводить в списках товаров. Самый простой вариант — заюзать preparesnippet. В нём проверять наличие «виртуальных» страниц у данного ресурса и передавать в чанк массив с их данными. В чанке проверить на пустоту этот массив — если не пуст — foreach / рендер. В общем, есть варианты.
              Dmitrii
              12 ноября 2019, 09:35
              0
              как быть с canonical URL? По умолчанию отдает урл основной страницы
                Алексей Шумаев
                12 ноября 2019, 09:45
                0
                Не знаю. Возможно, я не понял вопрос )
                Вы можете вывести любой каноникал, какой вам нужен, это не имеет отношения к работе компонента.
                Предложите, как и что нужно настроить.
                  Dmitrii
                  12 ноября 2019, 09:50
                  0
                  Как получить урл сгенерированной страницы, и сделать проверку на эту страницу в шаблоне?
                  <link rel="canonical" href="http://site.com/canonical-link.html"/>
                  С помощью этого атрибута можно довольно быстро устранить проблемы дублирующего контента.
                    Алексей Шумаев
                    12 ноября 2019, 09:58
                    0
                    Виртуальная страница имеет ресурс-источник. У вас есть его id в переменной $.get.id, наверное так:
                    {$.get.id | url : ['sheme' => 'full']}
                    Пишу на ходу, если не получится — уточню попозже.
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                21