Нужен совет
Есть такой код:
Это код перелинковки!Т.е. из определенного инфоблока берутся морфологические слова(и из Яндекса морфологии), после чего они ищутся в тексте другого определенного инфоблока и заменяются ссылками!
правильно ли я это все сделал?!И как это все сделать отдельным компонентом?!
Заранее большое спасибо!
Есть такой код:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); { $count = 0; $arSelect = Array("ID", "NAME", "PREVIEW_TEXT", "PROPERTY_NUMBERREPLACE"); $arFilter = Array("IBLOCK_ID"=>"11", "ACTIVE"=>"Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); while($obj = $res->GetNextElement()) { $row = $obj->GetFields(); $keywords = explode("|", $row["PREVIEW_TEXT"], -1); foreach($keywords as $key) { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/xml.php"); $strQueryText = QueryGetData( "export.yandex.ru", 80, "/inflect.xml?name=$row[NAME]", "", $error_number, $error_text ); print_r($strQueryText); $objXML = new CDataXML(); $objXML->LoadString($strQueryText); $arData = $objXML->GetArray(); $arRest = array(); foreach ($arData['inflections']['#'][inflection] as $arValue) { $ke = $arValue['#']; echo '<pre>', print_r($ke).'</pre>'; $arSelectter = Array("ID", "NAME", "DATE_ACTIVE_FROM", "PREVIEW_TEXT", "DETAIL_TEXT"); $arFilterter = Array("IBLOCK_ID"=>10, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "DETAIL_TEXT"=>"%$ke%"); $res1 = CIBlockElement::GetList(Array(), $arFilterter, false, Array("nPageSize"=>50), $arSelectter); while($obj1 = $res1->GetNextElement()) { $art = $obj1->GetFields(); $ke = " $ke "; $arResult['DETAIL_TEXT'] = str_replace("$ke", '<a href="/golossariy/" title="ссылка">'.$ke.'</a>' , $arResult['DETAIL_TEXT'] , $cnt); $count += $cnt; print_r ($key); } } } } echo "<h4>Сделано $count замен</h4>"; } { $el = new CIBlockElement; $arLoadProductArray = Array("DETAIL_TEXT"=> $art[DETAIL_TEXT]); $PRODUCT_ID = $art['ID']; $res2 = $el->Update($PRODUCT_ID, $arLoadProductArray); } { $el2 = new CIBlockElement; $PROP = array(); $PROP[334] = $count; $arrLoadProductArray = Array( "PROPERTY_VALUES" => '$PROP' ); $PRODUCT_ID2 = $row['ID']; $res3 = $el2->Update($PRODUCT_ID2, $arrLoadProductArray); } ?> |
Это код перелинковки!Т.е. из определенного инфоблока берутся морфологические слова(и из Яндекса морфологии), после чего они ищутся в тексте другого определенного инфоблока и заменяются ссылками!
правильно ли я это все сделал?!И как это все сделать отдельным компонентом?!
Заранее большое спасибо!