Здравия всем собравшимся

Кто не хочет забивать голову - читайте вывод в самом низу.
Для остальных распишу. Для доп навигации хотел сделать простой вывод документов по фильтру с выбором этих фильров самим юзером. Не хотелось брать трактор типа tvEditor’а, посему начали изобретать велосипед под нужды. Выкладываю (с согласия автора) то, что по моему описанию реализовал
p4sh0k:
MultiSearchForm
Снипет генерирующий форму для мульти поиска
<?php
$TVs = isset($TVs) ? $TVs : ""; # string tv
$IgnoreText = isset($IgnoreText) ? $IgnoreText : "не важно"; # string tv
$TVm = preg_split('~\s*,\s*~', $TVs);
echo "<form action='[~[*id*]~]' method='post' class='MultiSearchForm'><table>";
foreach ($TVm as $m) {
$SqlTVs=mysql_query("SELECT * FROM mx_site_tmplvars WHERE name like '".$m."'");
while( $SqlTVm = mysql_fetch_array($SqlTVs) ) {
echo "<tr><td><label>".$SqlTVm['caption']."</label> <select name='".$SqlTVm['name']."'>";
$ValueTVm = preg_split('~\s*\|\|\s*~', $SqlTVm['elements']);
if( $ValueTVm[0]=="" ) { $IgnoreT=$IgnoreText; $IgnoreV=0; }
foreach($ValueTVm as $vm) {
echo "<option value='".$IgnoreV.$vm."'>".$IgnoreT.$vm."</option>";
$IgnoreT=""; $IgnoreV="";
}
echo "</select></td></tr>";
}
}
echo "<tr><td colspan=2><input type='submit' value='Search'></td></tr></table></form>";
?>
MultiSearch
Снипет генерирующий результат мульти поиска
<?php
$startID = isset($startID) ? $startID : 0; # parent directory
$TVs = isset($TVs) ? $TVs : ""; # string tv
$tpl = isset($tpl) ? $tpl : "resmultisearch"; # chank for results
$noResults = isset($noResults) ? $noResults : "Sorry, not results.";
$TVm = preg_split('~\s*,\s*~', $TVs);
$delim='';
$params['filter'] ='';
foreach($TVm as $m) {
if($_POST[$m]!="0") {
$params['filter'] .= $delim.'tv'.$m.','.$_POST[$m].',1';
$delim='|';
} }
$params['startID'] = $startID;
$params['tpl'] = $tpl;
$params['noResults'] = $noResults;
# foreach($params as $p) echo $p."<br>"; # print param for ditto
return $modx->runSnippet("Ditto", $params);
?>
Вызов (если на одной странице):
[!MultiSearchForm? &TVs=`avtor-text,category,datap,vziato-text` &IgnoreText=`не важно`!]
[!MultiSearch? &startID=`[*id*]` &TVs=`avtor-text,category,datap,vziato-text` &tpl=`ditto_full` &noResults=`Извините, ничего не найдено.`!]
Где
avtor-text,category,datap,vziato-text - перечисление ТВ.
Так как описал я видимо не слишком детально, то получился не совсем нужный сниппет. Он выводит только возможные значения ТВ. А хотелось, чтобы выводил все занесенные в бд значения. Думаю (не пробовал, почему - читайте в выводе), можно решить это костылями = создать к каждому ТВ (благо у меня их мало, много только их значений) еще один ТВ, с возможными значениями
@SELECT value FROM mx_site_tmplvar_contentvalues WHERE tmplvarid=11 ORDER BY value, где
mx_ - префикс таблицы,
11 - ИД нужного ТВ. И такой ТВ задавать в форме.
Допустим, работает. Но документов ведь не мало

А из пагинации работает только первая страница (оно и понятно - при обновлении результаты поиска скидываются). И думается, это не последнее, что прийдет в голову в результате пользования нового велика.
Вывод: лично я поставил трактор tvEditor, в котором все это есть и работает (осталось понять как). А на сей велик забиваю. Однако, его можно доделать и юзать (в определенных случаях), как легкий аналог tvEditor’а. Возможно кто-то займется - отписывайте

Если кто-то займется, акромя пагинации и считки ВСЕХ значений ТВ (а не только возможных значений), была идея прикрутить к фильтрам вывода дроп-меню со значениями чанков вывода. Дабы админ мог задать несколько разных чанков, а юзер имел возможность вывести "только заголовки", "заголовки с аннотацией", "полный контент" и т. п.