1С-Битрикс. Оптовая генерация символьных кодов

25.12.2013  03:31

Допустим, уже на имеющемся сайте на Битриксе вы решили сделать красивые ссылки у страниц, заодно и удовлетворить СЕОшника, да поисковым системам понравиться. Работал сейчас над сайтом, у которого ~2500 новостей и символьных кодов не было. Перед запуском новой версии сайта я решил причинить непоправимое улучшение и сделать красивые ссылки с ЧПУ.

Итак, простенький код:

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->RestartBuffer();
ini_set('max_execution_time', '3600');
ini_set('memory_limit', '256M');
CModule::IncludeModule("iblock");
$arFilter = Array('IBLOCK_ID'=>3, 'GLOBAL_ACTIVE'=>'Y', 'CODE'=>false);
  $by = "SORT";
  $order = "ASC";
  $db_list = CIBlockElement::GetList(Array($by=>$order), $arFilter, false, false, Array(0 => "ID", 1 =>"NAME", 2 => "CODE"));
  $db_list->NavStart(2000);//сколько выбрать записей
  while($ar_result = $db_list->GetNext())
  {
	$title_castr = $ar_result['NAME'];
	$el = new CIBlockElement;
	$arParamsEl = array(
	"max_len"=>100,
	"change_case"=>"L",
	"replace_space"=>"-",
	"replace_other"=>"-"
	);//правила генерирования символьного кода
	$sys_name = Cutil::translit($title_castr,"ru",$arParamsEl);
	echo $ar_result['ID'].' '.$ar_result['NAME'].': '.$ar_result['CODE'].' - '.$sys_name.'
'; $arLoadProductArray = Array( "CODE" => $sys_name ); $PRODUCT_ID = $ar_result['ID']; $res = $el->Update($PRODUCT_ID, $arLoadProductArray); }

Всё! Если обновление не прошло, коды повторяются, тогда можно к символьным кодам добавить "-2" или любую другую часть.
Непонятно почему в самом Bitrix такого до сих пор нет, хоть с простеньким интерфейсом и базовыми возможностями. Хотя нечто подобное видел на маркетплейсе, но ставить левый модуль ради простой задачи как-то не целесообразно.


перейти в Блог | Блог (стр. 10)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 20  PHP 29  web-программирование 46  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)