Нужен совет
Есть такой код:
Это код перелинковки!Т.е. из определенного инфоблока берутся морфологические слова(и из Яндекса морфологии), после чего они ищутся в тексте другого определенного инфоблока и заменяются ссылками!
правильно ли я это все сделал?!И как это все сделать отдельным компонентом?!
Заранее большое спасибо!
Есть такой код:
| Код |
|---|
<?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);
}
?> |
Это код перелинковки!Т.е. из определенного инфоблока берутся морфологические слова(и из Яндекса морфологии), после чего они ищутся в тексте другого определенного инфоблока и заменяются ссылками!
правильно ли я это все сделал?!И как это все сделать отдельным компонентом?!
Заранее большое спасибо!