Полный поиск по документам MODX
Поиск ищет каждое слово отдельно, затем убирает повторяющийся результат
В месте вывода результата поиска прописать [ ! search ! ]
код сниппета ниже
<? if ( isset ($_GET['search']) && !empty($_GET['search'])){ $search = $modx->db->escape($modx->stripTags($_GET['search'])); //профикс $search = str_replace(";", "", $search); $search = str_replace("'", "", $search); $search = str_replace('"', "", $search); $search = str_replace("=", "", $search); $search = str_replace("-", "", $search); $search = str_replace("″", "", $search); $search = quotemeta ($search); $search = trim($search); //$search= mysql_real_escape_string($search); // если ищем по TV документа MODX $search = explode(" ", $search); foreach($search as $index => $value) { //echo 'Индекс элемента массива = '. $index .', значение = '.$value."<BR />"; // выводит на экран значения всех переменных массива. $res_keys = $modx->db->query("SELECT `contentid` FROM `modx_site_tmplvar_contentvalues` WHERE `value` LIKE '%".$value."%'"); while( $row_keys = $modx->db->getRow( $res_keys ) ) { //echo "<BR />".$row_keys[contentid]."<BR />"; $array_id .= $row_keys[contentid].' '; } } $array_id = explode(" ", $array_id); // соберём значения в массив //массив ID результатов $array_id = array_unique($array_id); // удалим дубли // если ищем по полям документа MODX foreach($search as $index => $value) { $res_keys = $modx->db->query("SELECT * FROM `modx_site_content` WHERE `pagetitle` LIKE '%".$value."%' AND `parent` =115"); while( $row_keys = $modx->db->getRow( $res_keys ) ) { //echo "<BR />".$row_keys[pagetitle].$row_keys[id]."<BR />"; $array_id_pagetitle .= $row_keys[id].' '; } } $array_id_pagetitle = explode(" ", $array_id_pagetitle); // соберём значения в массив //массив ID результатов $array_id_pagetitle = array_unique($array_id_pagetitle); // удалим дубли $array_value = array_merge ($array_id_pagetitle, $array_id); $array_value = array_unique($array_value); // удалим дубли // удалим пустые значения $array_empty = array(null); $array_value = array_diff($array_value, $array_empty); //print_r ($array_value); $parents = implode(",", $array_value); //echo $parents; echo '<div>Результаты поиска по слову: '.$_GET['search'].'</div> <table width="100%"> <thead> <tr><td>Договор</td><td>Дата</td><td>ФИО</td><td>Сфера</td></tr> </thead> <tbody> '.$modx->runSnippet('catalogView', array( 'sortBy' => 'NumDogovor', 'sortDir' => 'asc', 'tpl' => 'cat_item', 'dataType' => 'documents', 'products' => ''.$parents.'', 'noResult' => '<tr><td></td><td></td><td>Поиск не дал результатов</td><td></td></tr>' )).' <tbody> </table>'; //echo $search; }