SelectCity - Компонент выбора городов для Joomla 5 (4)

Категория: Компонент
SelectCity - Компонент выбора городов для Joomla 5 (4)
  • Download type: Free
  • Версия: 1.1.18
  • Скачивания: 213
  • Просмотры: 633

Компонент выбора городов SelectCity для Joomla 5 (4)

Поддержать проект:

Ключ для обновления - btSP4aBhIX86rGM



Компонент выбора городов SelectCity для Joomla5:

3 режима работы - поддомен, подпапка, без подстановки алиаса города в url. Создание списка городов.
Импорт и экспорт списка городов в формате csv.

Модуль выбора городов для Joomla:

Выводит список опубликованных городов для выбора. Список формируется AJAX запросом к модулю, что не создает нагрузку во время загрузки страницы. Модуль в popup окне выводит список городов, и содержит форму для поиска.

Ваш город: Барнаул

Плагин выбора городов для Joomla поддерживает замену шорт кодов, примеры работы:

"Барнаул" - название города.
"Барнаул" - число от 1 до 6, название города будет в соответствующем падеже.
"Любой текст" - Барнаул нужно заменить на название любого города, выведится текст если текущий город соответствует городу в шорт коде.
"" - Барнаул нужно заменить на название любого города, выведится текст если текущий город не соответствует городу в шорт коде.
"" - алиас текущего города.
"Digital Agency InSib: Сайты, реклама, Битрикс24." - название сайта из настроек.
"https://insib.su/" - домен сайта.

Для замены шорткодов, плагин использует регулярные выражения.

Плагин создает только один запрос в базу данных для получения списка городов.

Дополнительные настройки:
Генерация robots.txt и sitemap.xml по поддоменам.
Уникализация html кода для поддоменов: добавление в часто используемые классы алиаса текущего домена.

 

В планах: вывод шорткодов для стран и регионов, склонение.

Плагин SelectCity Sitemap WebCron

Плагин создан для уменьшения нагрузки при генерации sitemap.xml поддоменов. Он создает стаитические файлы по пути /media/plg_task_selectcity_sitemap из sitemap.xml в корне сайта.

Настройка: Активировать плагин plg_task_selectcity_sitemap, перейти в Система -> Планировщик задач -> Создать -> SelectCity Sitemap WebCron-> Задать интервал генерации.
Ссылка на создание планировщика: /administrator/index.php?option=com_scheduler&view=select&layout=default

 

ТЕСТИРОВАНИЕ: Joomla 5.1.0 | PHP 8.3.1 | nginx/1.25.5

Контакты:

По вопросам доработки, исправлений писать на - @insib_su

Инструкции:

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

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

use Joomla\Plugin\System\Selectcity\Helper\SelectcityData;

// Получение данных текущего города
$currentCityInfo = SelectcityData::getCurrentCityCases();

// Вывод основных данных о городе
echo "Название города: " . $currentCityInfo['nominative'] . "<br>";
echo "Алиас города: " . SelectcityData::getCityAlias() . "<br>"; 

// Вывод склонений
echo "Именительный падеж: " . $currentCityInfo['nominative'] . "<br>";
echo "Родительный падеж: " . $currentCityInfo['genitive'] . "<br>";
echo "Дательный падеж: " . $currentCityInfo['dative'] . "<br>";
echo "Винительный падеж: " . $currentCityInfo['accusative'] . "<br>";
echo "Творительный падеж: " . $currentCityInfo['instrumental'] . "<br>";
echo "Предложный падеж: " . $currentCityInfo['prepositional'] . "<br>";  

Методы плагина:

use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Factory;        
// Загрузка плагина
// Убедитесь, что импортируется нужный тип плагинов (например, 'system')
PluginHelper::importPlugin('system');

// Укажите имя и тип вашего плагина
$pluginName = 'selectcity';  // Имя вашего плагина
$pluginType = 'system';   // Тип вашего плагина

// Используйте метод bootPlugin для инициализации плагина
$application = Factory::getApplication();
$plugin = $application->bootPlugin($pluginName, $pluginType);

// Проверьте, что плагин был успешно инициализирован
if ($plugin) {
    // Вызовите метод
    if (method_exists($plugin, 'getCurrentCityName')) {
        
        // Вывод основных данных о городе
        echo "Название города: " . $plugin->getCurrentCityName() . "<br>";
        echo "Алиас города: " . $plugin->getCurrentCityAlias() . "<br>"; 
        
        // Вывод склонений
        echo "Именительный падеж: " . $plugin->getCurrentCityCases()[1] . "<br>";
        echo "Родительный падеж: " . $plugin->getCurrentCityCases()[2] . "<br>";
        echo "Дательный падеж: " . $plugin->getCurrentCityCases()[3] . "<br>";
        echo "Винительный падеж: " . $plugin->getCurrentCityCases()[4] . "<br>";
        echo "Творительный падеж: " . $plugin->getCurrentCityCases()[5] . "<br>";
        echo "Предложный падеж: " . $plugin->getCurrentCityCases()[6] . "<br>"; 
    } else {
        echo "Метод не существует в этом плагине.";
    }
} else {
    echo "Плагин не был загружен.";
}

Пример вывода:
Название города: Братск
Алиас города: bratsk
Именительный падеж: Братск
Родительный падеж: Братска
Дательный падеж: Братску
Винительный падеж: Братск
Творительный падеж: Братском
Предложный падеж: Братске

Для генерации robots.txt и sitemap.xml нужно создать перенаправления. В корне сайта должны лежать файлы robots.txt и sitemap.xml, компонент выбора городов для Joomla 5 читает и заменяет в этих файлах домен.

Для Apache:
Добавьте следующее правило в файл .htaccess, который обычно находится в корневой директории вашего сайта:

# Перенаправление запросов к robots.txt на компонент com_selectcity
RewriteCond %{REQUEST_URI} ^/robots\.txt$
RewriteRule ^robots\.txt$ index.php?option=com_selectcity&task=robots [L,QSA]
# Перенаправление запросов к sitemap.xml на компонент com_selectcity
RewriteRule ^sitemap\.xml$ index.php?option=com_selectcity&task=sitemap [L,QSA]

Для Nginx:
Вам нужно добавить следующую конфигурацию в блок сервера (server block) в конфигурационном файле Nginx для вашего сайта:

# Перенаправление запросов к robots.txt на компонент com_selectcity
location /robots.txt {
    rewrite ^/robots\.txt$ /index.php?option=com_selectcity&task=robots last;
}
# Перенаправление запросов к sitemap.xml на компонент com_selectcity
location = /sitemap.xml {
    rewrite ^ /index.php?option=com_selectcity&task=sitemap last;
}

Для корректной работы режима "поддомены" необходимо:

В разделе DNS добавить новую запись для вашего домена с параметрами:
- Запись: *
- Тип: А
- IP адрес или значение: внешний IP вашего впс
Далее, необходимо прикрепить поддомены к сайту (На разных хостингах данная операция делается по разному, лучше уточнить у поддержки). При выключенном плагине, сайт должен открываться по любой_текст.mydomain.com
Подключите ssl сертификат для *

Отладка и профилирование:

Обновление ключей: /administrator/index.php?option=com_installer&view=updatesites

Файлы для импорта: Российские города - all_city_rus.csv || с населением от 100 000 filtered_cities_rus.csv 

💪Спасибо:
@omnamahshivayas - за вклад в тестирование и поддержку проекта.
@sergeytolkachyov - за статьи по разработке Joomla, которые легли в основу проекта, консультации и помощь в разработке.

Edit alias

Добавлено
Редактирование алиаса города в компоненте

29.05.2024, 21:24
  • Тип расширения: Пакет
  • Состав пакета: Компонент, Модуль, Плагин
  • Версия Joomla: 5,
Ваш город: Барнаул

Phone Number

Email Address