Skip to content
My City Selector - extension for joomla
Branch: free
Clone or download
Latest commit c97515c Apr 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cookbook Update configure_domain.md Apr 15, 2019
doc_images doc image was updated Mar 25, 2019
jexter Free Jun 16, 2017
README.md Readme update Mar 27, 2019
loader.md Update loader.md Sep 21, 2017
mcs_update.xml 2.0.40 Mar 11, 2018

README.md

My City Selector Joomla Extension

Package: component + module + plugins
для получения расширенной версии (без ограничений) просьба писать на konstantin(dog)kutsevalov(dot)name или vlad[at]smolensky(dot)info

Пиратские копии: https://joomlok.com/products/citychanger-vybor-goroda-v-joomla - если вы купили тут, мы не оказываем поддержку. Поймите правильно, стоимость нашего расширения не окупает затрачиваемых усилий даже на 20%, то есть мы ежемесячно выкладываем до 80% своих усилий и денег на поддержку просто ради хобби.

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

Joomla >= 3.3.0 (последний тест на 3.8.8)
PHP >= 5.6
PHP Extension ionCube

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

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

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

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

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

Установка

Скачиваете отсюда: https://github.com/art-programming-team/mycityselector/releases

Расширение включает в себя два плагина (system/plgmycityselector & editors-xtd/mcsinsert), компонент (com_mycityselector) и модуль (mod_mycityselector). Все они ставяться одним пакетом, поэтому загруженный архив распаковывать не нужно. Устанавливайте как есть. Помимо самого расширения, вам потребуется установленный php модуль ionCube.

Настройка

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

  • Включить модуль "My City Selector MOD" и настроить его.
  • Прописать в настройках компонента "MyCitySelector" базовый домен вашего сайта.

После чего, при определенном уровне удачи все должно заработать :)

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

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

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

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

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

  • [city Город] текст [/city] - из первой версии
  • [mcs-N Название] - новый маркер, появился во второй версии, можно вставлять с помощью редактора (см. ниже)
  • {city_name} - спец. маркеры позволяющие выводить название города в мета теги (подробнее ниже)
  • {city_code}, {cityCode}, {province_code}, {provinceCode}, {country_code}, {countryCode} - символьные коды города, региона, страны

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

$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} более продвинутые. Их может быть много на одной странице и у каждого свои условия по городам. Кроме того, вам не нужно вводить их вручную. В редакторе Вы можете найти кнопку для вставки маркера в текущую позицию курсора.

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

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

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

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

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

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

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

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

  • {city_name} или {cityName} (как больше нравится) => Именительный (Омск)
  • {city_name2} или {cityName2} или {cityGenitive} => Родительный (Омска)
  • {city_name3} или {cityName3} или {cityDative} => Дательный (Омску)
  • {city_name4} или {cityName4} или {cityAccusative} => Винительный (Омск)
  • {city_name5} или {cityName5} или {cityAblative} => Творительный (Омском)
  • {city_name6} или {cityName6} или {cityPrepositional} => Предложный (Омске)

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

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

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

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

  • McsData::isBaseUrl() - (true|false) является ли текущий хост базовым доменом
  • McsData::findCityByName($name) - (array|null) ищет город в базе по название (Омск, Владивосток) и возвращает в виде массива
  • McsData::findCityByCode($code) - (array|false) ищет город в базе по коду (совпадает с названием поддомена: omsk)
  • McsData::get('isCitySelected') - (true|false) делал ли пользователь выбор города?
  • McsData::get('moduleId') - идентификатор модуля расширения в базе Joomla
  • McsData::get('basedomain') - домен указанный в настройках расширения
  • McsData::get('cityId') - ID текущего города в базе
  • McsData::get('city') - код текущего города в базе (omsk)
  • McsData::get('cityName') - название текущего города в базе (Омск)
  • McsData::get('default_city') - город по умолчанию (указанный в настройках расширения)

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

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

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

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

  • переопределение шаблона модуля из админки
  • создание своего шаблона

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

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

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

Если вам кажется, что некоторые моменты можно бы было описать лучше или где-то закралась неточность, то можете написать мне об этом на почту или сделать pull request.

Robots.txt

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

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

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

Для Nginx:

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

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

Было решено делиться накопленным опытом и разными трюками в использовании расширения. В итоге вот сборник рецептов.

##Благодарности

Спасибо Vlad-Online за огромную помощь в написании второй версии расширения!

Спасибо Renderlife за первую версию дизана.

Спасибо VidoksRu за пожертвование на обновление дизайна.

И конечно же, спасибо всем, кто помогал в тестировании и/или делал пожертвования.

You can’t perform that action at this time.