Как urlrewrite написать для городов битрикс
Перейти к содержимому

Как urlrewrite написать для городов битрикс

  • автор:

Справочник городов России на «Битрикс» за 3 шага

Сайты торговых сетей, предприятий с представительствами и филиалами, бюро услуг и почтовые службы нуждаются в справочнике адресов регионов и городов России. Найти и забить вручную? Даже если положить 5 минут на 1 позицию, всего на 1100 населенных пунктов получится 5500 минут, 92 часа и 11 восьмичасовых рабочих дней. Нет, это не вариант.

Поэтому лучше использовать справочник IP-адресов городов России cidr_ru_block.txt, скачав его на сайте ipgeobase.ru

1. Скачаем архив

На странице архивов ipgeobase.ru скачаем файл db_files.zip. Распакуем архив.

2. Загрузим архив в модуль статистики «Битрикс»

Распакованный из архива файл cidr_ru_block.txt загрузим в «Битрикс» по адресу bitrix/modules/statistic/ip2country

3. Используем мастер создания индексов IP

Запустим мастер по адресу /bitrix/admin/wizard_list.php?lang=ru

Зададим мастеру в качестве источника файл cidr_ru_block.txt и режим создания индекса по IP-адресу для конкретной страны и города.

Через класс CCity

CModule::IncludeModule('statistic'); $arOrder = array('REGION_NAME' => 'ASC'); $arFilter = array('COUNTRY_ID' => 'RU'); $res = CCity::GetList($arOrder, $arFilter); while ($el = $res->Fetch()) print_r($el);

Получаем массив населенных пунктов

Array ( [CITY_ID] => 51 [COUNTRY_ID] => RU [COUNTRY_SHORT_NAME] => RUS [COUNTRY_NAME] => RUSSIAN FEDERATION [REGION_NAME] => Алтайский край [CITY_NAME] => Барнаул ) Array ( [CITY_ID] => 353 [COUNTRY_ID] => RU [COUNTRY_SHORT_NAME] => RUS [COUNTRY_NAME] => RUSSIAN FEDERATION [REGION_NAME] => Алтайский край [CITY_NAME] => Заринск ) Array ( [CITY_ID] => 265 [COUNTRY_ID] => RU [COUNTRY_SHORT_NAME] => RUS [COUNTRY_NAME] => RUSSIAN FEDERATION [REGION_NAME] => Алтайский край [CITY_NAME] => Бийск ) . Array ( [CITY_ID] => 477 [COUNTRY_ID] => RU [COUNTRY_SHORT_NAME] => RUS [COUNTRY_NAME] => RUSSIAN FEDERATION [REGION_NAME] => Ярославская область [CITY_NAME] => Гаврилов-ям ) Array ( [CITY_ID] => 585 [COUNTRY_ID] => RU [COUNTRY_SHORT_NAME] => RUS [COUNTRY_NAME] => RUSSIAN FEDERATION [REGION_NAME] => Ярославская область [CITY_NAME] => Мышкин )

И вызываем данные из него при помощи $_SESSION[‘SESS_CITY_ID’]

if ($_SESSION['SESS_CITY_ID'] > 0) < $res = CCity::GetList( false, array('CITY_ID' =>$_SESSION['SESS_CITY_ID']) ); if ($el = $res->Fetch()) print_r($el); >

Urlrewrite битрикс. Как написать правило исключающее из url символьный код элемента?

Заведен инфоблок для городов. К выбору доступны те города которые есть в инфоблоке.

Url при выборе города формируется вида /element_code/catalog/ но соответственно отдает 404, как перенаправлять запрос просто на /catalog/ ? catalog дан для примера, урлов может быть великое множество но все они будут начинаться с element_code города.

  • Вопрос задан более трёх лет назад
  • 1848 просмотров

Комментировать
Решения вопроса 2

gromdron

Работаю с Bitrix24

Если Вы действительно хотите реализовать подобное (и если я вас правильно понял), то Вам нужно будет сделать не только это.

Шаг 1.
1) Создайте страницу /catalog/index.php, на этой странице выведите $_REQUEST
2) Создайте правило (взял из примера выше, у пользователя Артём Лучников )

array( "CONDITION" => "#^/([a-zA-Z0-9_-]*)/catalog/.*#", "RULE" => "city_code=\$1", "PATH" => "/catalog/index.php", )

3) Проверьте, что при заходе, например на /moscow/catalog/, открывается страница и в выведенном массиве есть city_code=moscow

Шаг 2.
1) Скопируйте в свое пространство компонент catalog (комплексный) [например custom:catalog], вынесите его на страницу /catalog/index.php
2) Добавьте в component.php еще одну разделяемую переменную в arComponentVariables — назовите ее, например CITY_CODE, напишите обработчики в тело комплексного компонента, которые будут «переваривать» введенный текст и будут перенаправлять на нужные страницы. В шаблоне sections.php сделайте вывод $_REQUEST
3) Проверьте, что при заходе, например на /moscow/catalog/, открывается страница и в выведенном массиве есть city_code=moscow

Шаг 3.
1) В вынесенном компоненте (из примера выше это custom:catalog), сделайте обработчик указанной переменной city_code, которая и определяет, есть ли указанный город в инфоблоке
2) Проверьте что все работает корректно

Ну и вишенка на торте, что если бы вы сделали выбор инфоблока, откуда берутся города в переменные компонента.

Помогите в создании правил для urlrewrite.php (Битрикс)

Помогите советом. В разных разделах сайта (/catalog/ и /articles/) стоят простые компоненты (bitrix:catalog.section + bitrix:catalog.element) и соответственно (bitrix:news.list + bitrix:news.detail). Пытаюсь настроить ЧПУ. Вот мой urlrewrite.php

 "#^/rest/#", "RULE" => "", "ID" => "", "PATH" => "/bitrix/services/rest/index.php", "SORT" => "50", ), array( "CONDITION" => "#^/articles/([a-zA-Z0-9\\\\.\\\\-_]+)/([a-zA-Z0-9\\\\.\\\\-_]+)/?.*#", "RULE" => "SECTION_CODE=\$1&ELEMENT_CODE=\$2&\$3", "ID" => "", "PATH" => "/articles/detail.php", "SORT" => "100", ), array( "CONDITION" => "#^/([^/]+?)/([^/]+?)/\\??(.*)#", "RULE" => "SECTION_CODE=\$1&ELEMENT_CODE=\$2&\$3", "ID" => "bitrix:catalog.element", "PATH" => "/catalog/detail.php", "SORT" => "200", ), array( "CONDITION" => "#^/([^/]+?)/\\??(.*)#", "RULE" => "SECTION_CODE=\$1&\$2", "ID" => "bitrix:catalog.section", "PATH" => "/catalog/index.php", "SORT" => "300", ), ); ?> 

В данный момент при попытке открыть «Новость детально» перекидывает на «Элемент каталога детально» Чую что то наворотил с правилами регулярки. ЧПУ настройки компонентов следующие (лишние параметры вырезал):

$APPLICATION->IncludeComponent( "bitrix:news.detail", ".default", array( "DETAIL_URL" => "#SECTION_CODE#/#ELEMENT_CODE#/", "ELEMENT_CODE" => $_REQUEST["ELEMENT_CODE"], "ELEMENT_ID" => "", "IBLOCK_TYPE" => "articles", "IBLOCK_URL" => "/articles/" ), false 
  • регулярные-выражения
  • битрикс

Как urlrewrite написать для городов?

1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

Контент для лиц от 16 лет и старше

© 2001-2024 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *