Bitrix24 как преработих модула за търсене
програмиране статии
Стандартният модул за търсене на битрикс е доста добър, но има един недостатък, ако го използвате в решението за корпоративен портал Bitrix24. Факт е, че резултатите от търсенето дават лична кореспонденция!
И така, започнах да ровя в кода за този модул. Използвайки метода poke, намерих мястото на заявката. Заявката не е цял ред, а парчета динамичен код. Всичко се случва в метода MakeSQL () на класа CSearch на скрипта bitrix/modules/search/classes/mysql/search.php
Полетата за избор са зададени в масива $ arSelect
FROM блок и клауза WHERE тук
Резултатът е следният ред
След анализ на ситуацията стигнах до извода, че съобщенията с MODULE_ID = задачи, блог, форум изгарят, те трябва да бъдат филтрирани. Всичко това става чрез изрязване и повторно присъединяване към изрязаното, вече филтрирано.
Отсечете лесно
, да, и го прикачете по същия начин, като използвате UNION.
Но обединението трябва да бъде почти идентично с първичната заявка, полетата за избор, техния брой.
Нека го направим хитро - заменете псевдонима sc (ОТ b_search_content sc), без да докосвате $ arSelect селекциите и организаторите на $ strSql
Това е всичко? Блокът SELECT и блокът FROM са готови, остава да се напишат клаузите WHERE. Модулът със задачи дава резултати от лични и групови задачи, от блог модула е достатъчно да ограничите ‘POST’, ‘COMMENT’.