We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22532
    • 349 Posts
    ну своя узкозаточеная разработка работате обычно быстрее и нет ничего лишнего как там
      • 36823
      • 334 Posts
      Нормально tvExplorer работает, сам на нескольких сайтах использую. Вопросов не возникает как сделать дроп или чек. Админка у модуля очень удобная.
        • 6272
        • 95 Posts
        Здравия всем собравшимся smiley
        Кто не хочет забивать голову - читайте вывод в самом низу.
        Для остальных распишу. Для доп навигации хотел сделать простой вывод документов по фильтру с выбором этих фильров самим юзером. Не хотелось брать трактор типа 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? &amp;TVs=`avtor-text,category,datap,vziato-text` &amp;IgnoreText=`не важно`!]
        [!MultiSearch? &amp;startID=`[*id*]` &amp;TVs=`avtor-text,category,datap,vziato-text` &amp;tpl=`ditto_full` &amp;noResults=`Извините, ничего не найдено.`!]

        Где avtor-text,category,datap,vziato-text - перечисление ТВ.

        Так как описал я видимо не слишком детально, то получился не совсем нужный сниппет. Он выводит только возможные значения ТВ. А хотелось, чтобы выводил все занесенные в бд значения. Думаю (не пробовал, почему - читайте в выводе), можно решить это костылями = создать к каждому ТВ (благо у меня их мало, много только их значений) еще один ТВ, с возможными значениями @SELECT value FROM mx_site_tmplvar_contentvalues WHERE tmplvarid=11 ORDER BY value, где mx_ - префикс таблицы, 11 - ИД нужного ТВ. И такой ТВ задавать в форме.

        Допустим, работает. Но документов ведь не мало smiley А из пагинации работает только первая страница (оно и понятно - при обновлении результаты поиска скидываются). И думается, это не последнее, что прийдет в голову в результате пользования нового велика.

        Вывод: лично я поставил трактор tvEditor, в котором все это есть и работает (осталось понять как). А на сей велик забиваю. Однако, его можно доделать и юзать (в определенных случаях), как легкий аналог tvEditor’а. Возможно кто-то займется - отписывайте smiley Если кто-то займется, акромя пагинации и считки ВСЕХ значений ТВ (а не только возможных значений), была идея прикрутить к фильтрам вывода дроп-меню со значениями чанков вывода. Дабы админ мог задать несколько разных чанков, а юзер имел возможность вывести "только заголовки", "заголовки с аннотацией", "полный контент" и т. п.
          • 6272
          • 95 Posts
          Как будет более-менее конечный вариант - скину сюда пример в помощь ищущим. А пока хотелось бы отметить одну (вроде как само собой разумеющуюся) деталь, из-за которой я махался часа 3, перепроверяя что может быть не так. А всего-то нужно было отрубить кэш сниппета (поставить [! ... !]). Интересно, почему в этой ветке все примеры с [[ ... ]]. Видимо, кэш страниц у них отрублен.
            • 897
            • 1,620 Posts
            достаточно распространненый миф о том что своя разработка работает быстрее и лучше. и культивируется он очень активно. если кому-то трудно и/или лениво разобраться в готовом решении, то возникают сомнения, что "самопал" от такого человека будет лучше, проживет дольше одного-двух проектов и будет более удобен для остальных.
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?
              • 6272
              • 95 Posts
              Согласен. Вообще приступы лени (как и многое другое) бывают у всех, не у всех быстро проходят wink Развитие темы перешло в обсуждение tvExplorer, посему создал новую тему. Обещанные примеры скину там, как только они заработают должным образом.
                • 21610
                • 360 Posts
                Не заработало?
                  Разработка сайтов на MODx
                  • 6272
                  • 95 Posts
                  Поиск по точному значению тв работает. А вот на [+tve.keywordsSearch:excludeTVs->all:label->Слова:+] я забил (не работает). Переметнулся на другие разделы сайта и сниппеты...