1. Настраиваем компонент search.tags.cloud на выборку тегов из определённого ИБ(каталога)
2. Прописываем путь к странице, на которой будет находиться компонент catalog.section, который и примет параметры для фильтрации.
3. Модифицируем шаблон, так чтобы у нас формировался GET запрос следующего вида /catalog/?TAGS=tage
4. Далее кастомизируем url таким образом, чтобы у нас получилась строка вида «teg%teg%teg
1 |
< ?=str_replace("+", "%" , $res["URL"])?> |
, это необходимо для создания условия(arrFilter).
5. Переходим на страницу catalog.section и разбираем GET запрос, формируем параметры для фильтрации
1 |
< ?$tag = '%'.$_GET["TAGS"].'%';?> < ?$GLOBALS['arrTags'] = array('ACTIVE' => 'Y', "TAGS" => $tag);?> |
данное условие фильтрует по свойству элемента типа «Теги», знаки % означают поиск искомых слов в строке.
6. Передаём arrTags как входной параметр для фильтрации в компонент search.tags.cloud — «FILTER_NAME» => «arrTags».
7. В принципе всё, задача решена. Т.к. я разместил компонент catalog.section на той же странице где и компонент catalog(комплексный), я написал следующее условие
1 |
< ?if ($_GET["TAGS"]):?> |
(показываю catalog.section и скрываю catalog), и чтобы пользователь и поисковые системы понимали, что происходит дописываю в «title», «keywords», «description», параметр поиска
1 2 3 4 |
tegs = str_replace("%", " ", $_GET["TAGS"]); $APPLICATION->SetPageProperty("keywords", $tegs.", ".$APPLICATION->GetPageProperty("keywords")); $APPLICATION->SetPageProperty("description", $tegs.", ".$APPLICATION->GetPageProperty("description")); $APPLICATION->SetPageProperty("title", $APPLICATION->GetPageProperty("title")." - ".$tegs); |