Как сделать поддомены по городам на Modx Revolution с помощью плагина SEODomains
Коллеги, привет, это очередной маленький мануал по теме Modx Revo, а именно - как сделать поддомены по городам на modx быстро и без танцев с бубном, все мероприятия с бубном я уже сделал (за вас) поэтому вот готовое решение.
Будем использовать SEODomains, он немного платный 490 рублей где-то (ты кофе покупаешь дороже), и он работает!
Итак, вот здесь он продается https://modstore.pro/packages/other/seodomains.
Вот FAQ по модулю https://docs.modx.pro/components/seodomains#vybor-goroda-na-sayte. Демо здесь https://seodomains.tyrsyna.ru/.
Автор Mikhail Tyrsyna , я связывался с ним в ТГ, но грит - не занимается больше Modx, поэтому я это все пишу. Есть возможность импорта доменов из XLSX файла, но я не использовал.
1. Установка SEODomains на Modx
Коннектимся к поставщику-репозиторию https://modstore.pro/, как это сделать - здесь https://modstore.pro/faq#help/1.
Дальше - оплачиваем, получаем ключ, загружаем в движок... как обычно устанавливаем плагин, там ничего сложного.
2. Wildcard *.site.ru
Идем в хостинг и создаем вот такой поддомен *.site.ru, это Wildcard, - своего рода подключение возможности использовать SSL для всех поддоменов сразу - это надо.
3. Добавляем поддомены spb.site.ru, msk.site.ru и т.д.
Создаем для домена в хостинге поддомены по городам, регионам и т.п. типа: spb.site.ru, samara.site.ru и т.д. - вручную сделать быстрее (15-20мин), если у тебя например города списком заранее сделаны в екселе, то добавить руками быстрее чем выдумывать автоматизацию пол дня.
4. Добавляем поддомены в плагине
Идем в плагин и так же делаем с поддоменами, добавляем плейсхолдеры.
Доступные плейсхолдеры:
Есть здесь маленький нюанс: если в плейсхолдере написано например Телефон или Адрес - это совсем не значит что мы прям обязаны его так использовать, мы можем туда любые свои данные записать.
Можно менять контент для каждого ресурса под каждый город отдельно вставкой данных из пх.
//В плагине есть возможность внедрения доп полей если вам нужно.
5. Добавляем плейсхолдеры в контент, тайтлы, дескрипшны и т.д.
Идем в шаблоны и дописываем нужный плейсхолдер, для какого-то города я делал просто добавление типа такого: "Услуги по ремонту кровли[[!+sd.city_r]]" , где в плейсхолдере [[!+sd.city_r]] было записано: " в г.Самара" - пробел впереди чтобы он подставлялся. Получится: "Услуги по ремонту кровли в г.Самара".
Итак, на этом этапе у нас должны уже работать поддомены (рекомендую сначала сделать только часть от всех городов), детально все настроить, чтобы поддомен давал соответствующие заголовки.
6. Вызов модального окна выбора города (поддомена)
Дальше нам нужно куда то разместить вызов сниппета SeoDomainsList, чтобы выпадающий список появлялся, создаем например div блок, и вставляем вот это:
И тут может возникнуть проблема)) - модальное окно может не появляться или отображаться криво, потому что ОН ТРЕБУЕТ jquery и bootstrap, подключаем в таком порядке в хедер:
У автора в демо (https://seodomains.tyrsyna.ru/) есть эти файлики, если с демкой случится что - напишите коммент я выложу их.
7. Редактирование внешнего вида модального окна
На этом этапе у нас уже должна появиться ссылка-кнопка, которая вызывает окно выбора города. Я его немного подредактировал под себя - добавил прокрутку, увеличил лимит городов в вызове снипета SeoDomainsList поставил например &limit=`150` и вынес отдельно города, которые часто ищут. В ссылку-кнопку я добавил <span>, чтобы город как-то выделялся.
Файл редактирования модального окна находится в чанках SeoDomains/SeoDomains.City.tpl
8. Каноникалы для поддоменов
Вот это очень важный этап, обычные[[+++base]] и тп не дают правильного результата, я например хочу чтобы каждый поддомен имел свои канонические ссылки, поэтому я формировал их снипетами отдельно для главной и отдельно для всех остальных внутренних страниц.
Отдельно потому что для главной цепляется alias, а он нам не нужен. Да у меня шаблоны для главной и других страниц - разные, [[$block_header_main]] - для главной, а [[$block_header]] для остальных, поэтому в [[$block_header_main]] у меня 1 снипет а в другом - [[$block_header]] другой снипет.
каноникал главной
<link rel="canonical" href="[[!getCanonicalUrlMain]]" />
каноникал остальных
<link rel="canonical" href="[[!getCanonicalUrl]]" />
[[!getCanonicalUrlMain]] и [[!getCanonicalUrl]] это снипеты, которые создаем в снипетах:
Идем в снипеты, создаем снипет для главной [[!getCanonicalUrlMain]]:
//снипет сделан нейронкой, поэтому если что-то не так, то можете предложить лучшее решение
Снипет для остальных страниц [[!getCanonicalUrl]]
Для og тегов я просто вставлял нужные конструкции.
ИТАК, на этом этапе все должно отображаться правильно, когда вы все это отладите можно уже добавлять все остальные домены по городам, как в хостинге поддомены, так и в самом движке, я не заморачивался с автоматизацией, т.к. в данном случае руками - быстрее.
Если есть что добавить, пишите!