Расширенный поиск в Expression Engine - Проблемы с поиском по ключевому слову - PullRequest
0 голосов
/ 14 ноября 2011

У меня небольшие проблемы с поиском в экспрессионном движке!У меня есть выпадающая форма настройки, которая прекрасно работает, однако мне нужно добавить поле ОПЦИОНАЛЬНОГО ключевого слова в эту форму поиска.Любые идеи, как я буду делать это с моим текущим кодом:

Основной код формы:

<form method="post" action="/properties/search-results/">

            <p>Keywords:</p>
            <input id="keywords" type="text" name="keywords"/>

            <p>Town:</p>
            <select id="town" name="cat[]" multiple="multiple">
                <option value="" selected="selected">Any</option>
                {exp:channel:categories channel="property" style="linear" category_group="1"}
                <option value="{category_id}">{category_name}</option>
                {/exp:channel:categories}
            </select>

            <p>Property Type:</p>
            <select id="propertyType" name="cat[]">
                <option value="" selected="selected">Any</option>
                {exp:channel:categories channel="property" style="linear" category_group="2"}
                <option value="{category_id}">{category_name}</option>
                {/exp:channel:categories}
            </select>

            <input style="margin-top:20px; width: 100px;" type="submit" name="submit" value="Search"/>
        </form>

Шаблон результатов поиска:

<?php
// Grab the categories selected from the $_POST
// join them with an ampersand - we are searching for AND matches
$cats = "";
foreach($_POST['cat'] as $cat){
// check we are working with a number
if(is_numeric($cat)){
$cats .= $cat."&";
}
}
// strip the last & off the category string
$cats = substr($cats,0,-1);
?>

{exp:channel:entries channel="property" dynamic="on" category="<?php echo($cats);?>" orderby="date" sort="asc"}

Мне нужно ключевое словополе для поиска в {title} моих записей!

Спасибо за любую помощь!

1 Ответ

1 голос
/ 15 ноября 2011

Попробуйте: сначала установите плагин Search Fields . (Это необходимо, поскольку собственный параметр EE "search:field_name" работает только с пользовательскими полями, а не с заголовками записей.)

Тогда используйте этот пересмотренный код:

<?php
// Grab the categories selected from the $_POST
// join them with an ampersand - we are searching for AND matches
$cats = array();
foreach($_POST['cat'] as $cat)
{
    // check we are working with a number
    if(is_numeric($cat))
    {
        $cats[] = $cat;
    }
}
$cats = implode('&', $cats);

if(!empty($_POST['keywords']))
{
    $keywords = trim($_POST['keywords']);
}
?>

<?php if($keywords) : ?>
{exp:search_fields search:title="<?php echo($keywords);?>" channel="property" parse="inward"}
<?php endif; ?>
    {exp:channel:entries channel="property" <?php if($keywords) : ?>entry_id="{search_results}"<?php endif; ?> category="<?php echo($cats);?>" orderby="date" sort="asc"}
        {!-- do stuff --}
    {/exp:channel:entries}
<?php if($keywords) : ?>
{/exp:search_fields}
<?php endif; ?>
...