My City Option Joomla Extension

Package: component + module + plugins

Версия загружена с сайта: https://mysite.space

##Системные требования

Joomla >= 3.3.0 (последний тест на 3.9.10)
PHP >= 5.6-7.x
Исходный код полностью открыт

Общие сведения

My City Option (MCO) - это расширение для CMS Joomla, позволяющее отображать разную информацию для разных городов.

В новой 2-ой версии основной упор сделан на использование поддоменов для разных городов, так как это самый лучший способ разделять контент с точки зрения поисковиков.

! Ваш домен должен быть настроен так, чтобы любой произвольный поддомен открывал основной сайт. Не нужно создавать много сайтов :) это неверно. Подробнее о настройках домена можно прочитать тут.

*Примечание: все изображения приводимые здесь основаны на версии Joomla 3.6.x

Установка

Установите купленное решение через менеджер расширений Joomla 3.x

Расширение включает в себя два плагина (system/plgmycityoption & editors-xtd/MCSinsert), компонент (com_mycityoption) и модуль (mod_mycityoption). Все они ставяться одним пакетом, поэтому загруженный архив распаковывать не нужно. Устанавливайте как есть.

Настройка

Для того, чтобы начать пользоваться расширением, необходимо сделать две вещи:

После чего все должно заработать

Как это использовать?

Расширение позволяет создавать заготовленные тексты для разных городов и в зависимости от выбранного пользователем города, подставлять их в страницу. Каждому городу на сайте будет соответствовать свой поддомен, а главный домен будет соответствовать вашему городу (который вы можете указать в настройках). Например, ваш сайт site.org для вашего родного города по умолчанию. А остальные города на поддоменах:
spb.site.org
minsk.site.org
kiev.site.org
и так далее в соответствии с настройками. Позже мы добавим (вернем) возможность указывать для городов не только поддомены но и страницы (в рамках одного домена).

Управление текстами происходит через компонент MyCityOption в админке, там же и управление списком городов и настройки компонента.

Часть настроек находится в модуле, который отвечает за отображаемое окно выбора города на сайте.

Для вставки заготовленных текстов на страницы сайта используются специальные маркеры (теги). Всего есть три вида маркеров:

Еще, Вы можете получить название текущего города в своем коде черезе команды

$cityCode = MCSData::get('city');
$cityName = MCSData::get('cityName');

Итак, тег [city] удобен для небольших надписей или сообщений (и для небольшего количества городов). Но если городов много и информация для каждого своя, то лучше воспользоваться компонентом MSC в админке. Основной недостаток этих тегов в том, что на одной странице все теги взаимосвязаны и отобразить разную информацию в нескольких местах страницы может быть невозможным. Но в то же время, они могут быть незаменимы, если вам нужно включать разные позиции модулей для разных городов. Например так:

[city Омск]<jdoc:include type="modules" name="demo1" style="" />[/city]
[city Чита]<jdoc:include type="modules" name="demo2" style="" />[/city]

В этом случае, при выборе города "Омск" будут отображаться все модули из позиции "demo1", а при выборе города "Чита" - из "demo2". Советуем использовать их только при необходимости.

Маркеры {MCS-ID} более продвинутые. Их может быть много на одной странице и у каждого свои условия по городам. Кроме того, вам не нужно вводить их вручную. В редакторе Вы можете найти кнопку для вставки маркера в текущую позицию курсора.

Выбираете нужный контент из списка и вставляете маркер в текст. Все просто.

Перейдем к рассмотрению компонента "MyCityOption". Откройте подпункт "Страны".

При клике по ссылке "регионы" вы сможете открыть список регионов, относящихся к данной стране. Аналогично и в списке регионов, так есть ссылка "города". Делая элементы списков неактывными, вы запрещаете их отображение в окне выбора города. Ничего сложного.

Примечание: Регионы Украины и Беларусии еще не заполнены... Но не расстраивайтесь, Вы ведь можете заполнить их сами, просто используйте кнопку "создать".

Перейдем к управлению текстами.

Тут конечно пусто. Самое время что-нибудь создать. Предположим (совершенно точно), нам нужно для разных городов отображать разные адреса и контакты. Создадим новый текст с названием "Контакты". В качестве текста "по умолчанию" укажем адрес для основного города. А для остальных городов необходимо воспользоваться кнопкой "Добавить поле". В добавленное поле вбиваем желаемый город и вводим для него текст (адрес).

Специальные маркеры

Как было сказано выше имеются дополнительные маркеры, позволяющие выводить название города в title или meta тегах. Вот их полный перечень:

Эти маркеры можно использовать как в шаблоне так и в полях ввода при редактировании контента.

Helper для интеграций

Расширение содержит глобальный класс MCSData который который подключается плагином в самом начале инициализации Joomla, поэтому к его методам можно обращаться из сторонних расширений.

Вот перечень данных, которые вы можете получить в своем коде:

Формат вызова get метода: MCSData::get($paramName, $defaultValue = null);

Получить склонения аналогичным способом не получится, только через спец. маркеры описанные выше.

Кастомизация

Изменить внешний вид шаблона модуля можно двумя способами:

Первый способ достаточно прост, необходимо зайти в менеджер шаблонов сайта, кликнуть по названию своего текущего шаблона перейти во вкладку "Переопределение", найти в списке модуль "mod_mycityoption" и кликнуть по нему. После чего в папке шаблона сайта появится копия шаблона модуля. Его можно будет менять как вам вздумается.

Второй способ в общем-то делается также как и первый, но после дублирования также необходимо переименовать файлы шаблона (придумать свое имя для шаблона) и на основе данной копии сделать свой шаблон.

Примечание: javascript файл подключаемый в шаблоне заточен под его верстку, следовательно, его придется корректировать под свою верстку.

Robots.txt

Если используется вариант с поддоменами, возможно Вам будет полезно использовать скрипт robots.txt.php для подмены директивы Host в вашем robots.txt. Чтобы им воспользоваться, необходимо прописать правило редиректа для "/robots.txt" в настройках вашего сервера.

Для Apache в файле ".htaccess" добавьте строку

RewriteEngine On # эту строку только если такой директивы в htaccess еще нет
RewriteRule ^robots.txt$ /components/com_mycityoption/robots.txt.php [QSA,L]

Для Nginx:

server {
     
     ... other instructions ..
     
     location = /robots.txt {
         rewrite ^(.*)$ /components/com_mycityoption/robots.txt.php last;
     }
}

##Дополнительная информация

Сборник крупных городов.