Page 1 of 1

И снова про filter для tag_cloud

Posted: Tue Feb 14, 2023 3:05 pm
by richmantrade
Поюзав данную фишку, пришёл к выводу , что для полного счастья очень не хватает одной "плюшки".

Нужно что бы фильтр filter для tag_cloud работал не только по полному вхождению, а искал релевантные варианты.

Нужно это для формирования облака тагов на странице тага.

Сейчас, на странице тага (/scj/cgi/?tag=some-test-tag) конструкция
<tag_cloud filter="GET_tag"
выведет в лучшем случае один результат = some-test-tag , и то, только лишь в том случае, если он в статусе актив.
А хочется, иметь конструкцию, которая выведет (при наличии в базе конечно же) таги:
some-best-tag
some-tag
test-some
etc...

Я думаю, правильнее всего было бы через сфинкс искать. Но для этого наверное нужно индексить таги отдельно от основного индекса. Не знаю, правильно ли это.
Как альтернативный вариант может быть рассмотреть простоq поиск мускулем. Что то типа:

Code: Select all

$for_search = preg_replace(
array('/[\p{P}]/', '/(\s+)/'),
array('', '|'),
$_GET['tag']
);
SELECT FROM rot_tags WHERE tag_name RLIKE '$for_search' ....
Но сфинсом конечно было бы лучше. Если в таге есть предлоги (a the in) - сфинкс это игнорирует, а мускулем "найдётся всё"

Re: И снова про filter для tag_cloud

Posted: Tue Feb 14, 2023 3:26 pm
by admin
Думаю сфинкс для большинства будет просто лень настраивать
почему не match в мускле? зачем регэксп?

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 6:38 am
by richmantrade
Да, MATCH в мускуле - норм вариант будет.

preg_replace в данном случае просто как пример.
[\p{P}] - убирает всё лишнее (кавычки, точки, запятые)
(\s+) - нужно для RLIKE. Меняет пробел на "|". Для MATCH не нужно конечно

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 8:37 am
by admin
<tag_cloud num=1-10 filter=GET_tag tag_status="all">
<!--TAG_NAME--> <br>
</tag_cloud>


добавил в ап
еще добавил

tag_status="all"

если надо будет искать везде а не только активные, смотрите плз то ли что надо

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 8:58 am
by richmantrade
Да, всё хорошо. Спасибо большое !

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 9:30 am
by admin
Отлично)

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 1:52 pm
by richmantrade
Я не уверен на 100%, но у меня складывается впечатление, что если тагов согласно filter для tag_cloud не находиться - появляется ошибка:
Warning: count(): Parameter must be an array or an object that implements Countable in /home/clients/web/domains/domain.com/html/scj/includes/libs/tpl_functions.php on line 983

ЗЫ: И возможно это зависит от кеша. Т.е. если страницу прогружают в первый раз (нет её в кеше) - ошибка есть. А потом нет, пока кеш не удалишь

Re: И снова про filter для tag_cloud

Posted: Thu Feb 16, 2023 1:54 pm
by admin
да, есть такое
добавил в ап