Залил я в инфоблок 4 тыс элементов и захотелось мне сделать красивые урли для них. До этого были небольшие списки до 100 элементов (было проще заполнить руками). А тут вот захотелось процесс автоматизировать.
Битриксовый механизм генерирует (транслитерирует/переводит) код из наименования только в режиме AJAX (а жаль).
Подсмотрел немного аяксовый механизм и сделал тоже самое на PHP.
Примерчик сыроват, но для решение моей задачи хватило.
Может кому будет полезно, а может кто и доработает.
Битриксовый механизм генерирует (транслитерирует/переводит) код из наименования только в режиме AJAX (а жаль).
Подсмотрел немного аяксовый механизм и сделал тоже самое на PHP.
<?php define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS", true); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); set_time_limit(0); if (!CModule::IncludeModule('iblock')) return; $el = new CIBlockElement; $db = CIBlockElement::GetList( array(), array('IBLOCK_ID' => 5, 'CODE' => false), false, array('nTopCount' => 100), array('ID', 'CODE', 'NAME') ); $n = 1; while ($i = $db->GetNext(true, false)) { $word = iconv(SITE_CHARSET, 'UTF-8', $i['NAME']); $rWord = rawurlencode($word); $answer = file_get_contents("http://www.google.com/uds/Gtranslate?q=".$rWord."&langpair=ru%7Cen&key=notsupplied&v=1.0"); $answ = json_decode($answer); printf("%4d", $n); if ($answ->responseStatus == '200') { $code = iconv('UTF-8', SITE_CHARSET, $answ->responseData->translatedText); $code = strtolower($code); $code = str_replace(' ', '-', $code); $code = preg_replace('/[^-a-z0-9]/', '', $code, -1, $count); $res = $el->Update($i['ID'], array('CODE' => $code), false,false,false); if (!$res) $msg = $el->LAST_ERROR; else $msg = 'OK'; print '. ['.$i['ID'].'] ' . $i['NAME'] . ' = ' . $code . ' - ' . $msg . "<br>\r\n"; } else { print '. ' . $answ->responseStatus . "<br />\r\n"; } $n++; } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?> |
Примерчик сыроват, но для решение моей задачи хватило.
Может кому будет полезно, а может кто и доработает.