Старый проект, все новости и статьи работают еще через get, поэтому страницы естественно генерируются вида element-id=3222, ну а если таких страниц 1000? Заходить и в каждой генерировать символьный код? это очень долго и не удобно, ведь именно поэтому и решено было использовать вот такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
if(!CModule::IncludeModule("iblock")) { echo "Error with iblock module!"; die; } $arParams['IBLOCK_ID'] = 10; $arParams['LIST_CNT'] = 2; $arParams['IS_ADD_RAND'] = false; $arParams['TYPE_WORK'] = 'element'; // {section | element} $arOrder = array( "sort" => "inc", ); $arFilter = array( "IBLOCK_ID" => $arParams['IBLOCK_ID'], //"IBLOCK_LID" => SITE_ID, //"CODE" => "", "CODE" => false ); $arTransParams = array( "max_len" => 100, "change_case" => 'L', // 'L' - toLower, 'U' - toUpper, false - do not change "replace_space" => '_', "replace_other" => '_', "delete_repeat_replace" => true ); if($arParams['TYPE_WORK'] == 'section'){ //for SECTIONS $db_elemens = CIBlockSection::GetList($arOrder, $arFilter, false); $db_elemens->NavStart($arParams['LIST_CNT']); echo '<pre>'; while($ar_res = $db_elemens->GetNext()) { $transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams); if($arParams['IS_ADD_RAND']){ $transName = $transName.$arTransParams["replace_space"].$ar_res["ID"]; } $arPropArray = Array( "CODE" => $transName ); $el = new CIBlockSection; $res = $el->Update($ar_res["ID"], $arPropArray); echo "result for <b>".$ar_res["NAME"]."</b> is <b>".$transName.'</b>'.($res?" and OK":" and failed")."\r\n"; } echo '</pre>'; }elseif($arParams['TYPE_WORK'] == 'element'){ // for ELEMENTS $db_elemens = CIBlockElement::GetList($arOrder, $arFilter, false, array("nTopCount" => $arParams['LIST_CNT'])); $i = ; echo '<pre>'; while($obElement = $db_elemens->GetNextElement()) { $ar_res = $obElement->GetFields(); $transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams); if($arParams['IS_ADD_RAND']){ $transName = $transName.$arTransParams["replace_space"].$ar_res["ID"]; } $arPropArray = Array( "CODE" => $transName, ); $el = new CIBlockElement; $res = $el->Update($ar_res["ID"], $arPropArray); echo "result for <b>".$ar_res["NAME"]."</b> is <b>".$transName.'</b>'.($res?" and OK":" and failed")."\r\n"; } echo '</pre>'; } |