Часто на информационных сайтах ключевые слова в статьях заменяются на ссылки. Например, так делает .
Реализовать подобное решение не сложно. Возможно, где-то уже описано, но я не нашёл. Предлагаю свой вариант.
[spoiler]
Прежде всего надо определиться, что ключевые слова - это ни что иное, как . Т.е. надо для каждого создаваемого элемента заполнять связанные с ним теги.

Положим, для вывода элемента используется компонент bitrix:catalog.element. Задача сводится к тому, чтобы перед показом статьи выбрать теги текущего инфоблока (в зависимости от задачи могут быть и другие инфоблоки) и зменить их в тексте на ссылки.
В своём примере я вставляю ссылку на страницу с комплексным компонентом поиска (bitrix:search.page).
Итак, (1) копируем компонент в шаблон сайта.
(2) создаём в папке своего шаблона файл result_modifier.php следующего содержания:
В итоге при просмотре получаем нечто похожее на изображение:
Обратите внимание, что
Реализовать подобное решение не сложно. Возможно, где-то уже описано, но я не нашёл. Предлагаю свой вариант.
[spoiler]
Прежде всего надо определиться, что ключевые слова - это ни что иное, как . Т.е. надо для каждого создаваемого элемента заполнять связанные с ним теги.

Положим, для вывода элемента используется компонент bitrix:catalog.element. Задача сводится к тому, чтобы перед показом статьи выбрать теги текущего инфоблока (в зависимости от задачи могут быть и другие инфоблоки) и зменить их в тексте на ссылки.
В своём примере я вставляю ссылку на страницу с комплексным компонентом поиска (bitrix:search.page).
Итак, (1) копируем компонент в шаблон сайта.
(2) создаём в папке своего шаблона файл result_modifier.php следующего содержания:
if(CModule::IncludeModule("search"))
{
$txt = &$arResult['DETAIL_TEXT'];
$arFilter = array(
"SITE_ID" => SITE_ID,
"TAGS" => "",
);
$exFILTER = array(
"LIMIT" => 99,
array(
"MODULE_ID" => "iblock",
"PARAM2" => $arParams['IBLOCK_ID']
)
);
$obSearch = new CSearch();
$obSearch->Search($arFilter, array("CNT" => "DESC"), $exFILTER, true);
while($f = $obSearch->GetNext())
$txt = str_replace($f['NAME'], '<a href="/search/?tags='.$f['NAME'].'" title="статьи по теме">'.$f['NAME'].'</a>', $txt);
}
|
В итоге при просмотре получаем нечто похожее на изображение:

Обратите внимание, что
- при включенном кешировании компонента результат будет кешироваться, это важно с точки зрения нагрузки;
- происходит прямая замена без учёта регистра и изменения формы слова; первое можно легко реализовать используя функцию регулярных выражений для замены, второе используя модуля поиска. Но всё это может создать приличную нагрузку на хостинг.
- на странице /search/index.php содержится компонент bitrix:search.page