simplesearch modx与日期下拉集成

时间:2017-08-28 08:54:27

标签: modx modx-revolution

我刚接触modx(革命版2.5.7)和简单搜索(simplesearch-1.9.2-pl) 我需要在modx插件中使用simplesearch extra添加日期下拉列表(需要使用匹配日期获取结果作为模板变量作为类型日期)。我附上了搜索页面的截图供参考。请帮我解决这个问题。

search page image

1 个答案:

答案 0 :(得分:0)

https://forums.modx.com/thread/95128/advsearch-to-show-search-value-based-on-dropdown-box.
After many painful debugging , got my code working. 
[b]My code[/b] ,

[[!AdvSearchForm? &tpl=`AdvanceSearchForm_tpl`]]
</h1>
<h2>Results</h2>
<p>[[!AdvSearch? &parents=`12`&queryHook=`FilterCalenderSnippet`   ]]

[b]form tpl (AdvanceSearchForm_tpl) :--[/b]
[code]<form id="[[+advsearch.asId]]_advsea-form" class="advsea-form" action="[[~[[+advsearch.landing]]]]" method="[[+advsearch.method]]">
  <fieldset>
    <input type="hidden" name="id" value="[[+advsearch.landing]]" />
    <input type="hidden" name="asId" value="[[+advsearch.asId]]" />
    [[+advsearch.helpLink]]<input type="text" id="[[+advsearch.asId]]_advsea-search" name="[[+advsearch.searchIndex]]" value="[[+advsearch.searchValue]]" />
[[$SeminarCalendarDateChunk]]// give the dropdown of dates,you can put your form elements 
    [[+advsearch.liveSearch:isnot=`1`:then=`<input type="submit" id="[[+advsearch.asId]]_advsea-submit"  name="sub" value="[[%advsearch.search? &namespace=`advsearch` &topic=`default`]]" />`:else`=``]]
  </fieldset>
</form>
[[+advsearch.resultsWindow]]


[b]Query Hook snippet(FilterCalenderSnippet)[/b]
[ul]
[li]My Date tv is EventDateTv[/li]

[/ul]

[code] 

<?php
$andConditions = array();
// here i need to show events between one given input month. so I did some php to fetch first and last days of given month
if (!empty($_REQUEST['calendar_date'])) {
   $dateToTest = $_REQUEST['calendar_date'];// my form element name is calendar_date
$lastday = date('Y-m-t',strtotime($dateToTest));
$andConditions['tv.EventDateTv:>='] = $dateToTest;
$andConditions['tv.EventDateTv:<='] = $lastday ;
}

if (!empty($andConditions)) {
    $qhDeclaration = array(
        'qhVersion' => '1.3',
        'andConditions' => $andConditions
    );
    $hook->setQueryHook($qhDeclaration);
}

return true;
[/code]`enter code here`