Плагин I18n Search

Плагин для создания поиска по сайту, блога, каталога, новостей

на

Этот плагин задуман для настройки поиска на сайте по тегам и словам. Но именно это свойство данного плагина позволяет использовать его, как плагин для создания новостей. Плагин I18n Search - один из самых актуальных плагинов для сайтов всех типов: от сайтов-визиток до многостраничных блогов, от МФА-сайтов до сайтов-каталогов.

Скачать плагин
Файл скачан 1515 раз(а)

Я слегка поправил этот замечательный плагин. Добавил в его настройки чекбокс, позволяющий отключать HTML-теги UL и LI. Так как я обычно использую в сочетании с ним плагин I18N Special Pages, они мне очень мешали при адаптивной верстке.

Скачать плагин
Файл скачан 275 раз(а)

Поиск

Для размещения формы поиска в компоненте или в шаблоне используется следующий код:

<?php get_i18n_search_form(array('slug'=>'search')); ?>

В этом случае нужно указать ссылку (slug) страницы, на которой будут отображаться результаты поиска. Обычно используется ссылка search.

Если вам лень заглянуть в настройки плагина, то код может выглядеть так:

<?php get_i18n_search_form(array('slug'=>'search', 'showTags'=>0, 'PLACEHOLDER'=>'Поиск')); ?>

Для размещения формы поиска на странице результатов поиска можно использовать такой код:

(% searchform %)

На странице для отображения результатов поиска вам необходимо разместить такой код:

(% searchresults %)

Это минимальный код, настроить отображение формы и результатов поиска по умолчанию можно на странице "Настройки поиска", ссылку на которую вы найдете на вкладке "Плагины". Наряду с минимальными настройками, там же вы найдете дополнительные параметры, которые значительно расширяют возможности настроек по умолчанию. Вот так выглядит страница настроек. Если вам лень зайти в настройки, вы можете установить все параметры для формы поиска прямо в коде:

<?php get_i18n_search_form (array('slug'=>'search', 'showTags'=>1, 'minTagSize'=>90, 'maxTagSize'=>200, 'GO'=>'искать', 'PLACEHOLDER'=>'Поиск')); ?>

Если вы разместите на странице поиска и форму поиска с таким кодом:

(% searchform live=1 showTags=1 minTagSize=90 maxTagSize=200 %)

и в код для отображения результатов посика добавите live=1:

(% searchresults live=1 HEADER='' %)

то результаты поиска будут отображаться по мере введения слов или при клике на теге.

Если в настройках поиска вы поставите галочку в чекбокс "Отметить искомые слова на страницах" и добавите в ваш CSS-файл правило:

span.mark { background-color: yellow; }

то искомые слова будут выделяться заданным цветом на найденной странице. А если вы используете плагин FAQ, то будут открываться автоматически все ответы, содержащие условия поиска.

Настройки страницы результатов поиска и страницы новостей

Вы можете настроить по вашему усмотрению и результаты поиска. Для страницы новостей вам достаточно добавить параметр tags или words.

Формат даты
'DATE_FORMAT'=>'%d.%m.%Y' — вы можете выставить любой формат даты, либо оставить определенный по умолчанию в языковом файле.
%A — день недели;
%d — день 00;
%m — месяц цифрами;
%B — полный месяц;
%b — три буквы месяца;
%H — часы;
%M — минуты;

Количество результатов
'max'=>4 — максимальное количество результатов поиска;

Объем информации результатов поиска
'numWords'=>'1p' — один абзац, если в абзаце есть изображение, то оно будет показано в результате поиска;
'numWords'=>'30' — 30 слов;
'numWords'=>'-1' — полный текст;
'numWords'=>'0' — заголовок с датой;

Пагинатор
'showPaging'=>1 и 'showPaging'=>0 для показа и отключения пагинатора;
'FIRST_TEXT'=>' — по умолчанию " 'FIRST_TITLE'=>'Первая страница' — по умолчанию "First page"
'PREV_TEXT'=>'— по умолчанию " 'PREV_TITLE'=>'Предыдущая страница' — по умолчанию "Previous page"
'NEXT_TEXT'=>'>' — по умолчанию ">"
'NEXT_TITLE'=>'Следущая страница' — по умолчанию "Next page"
'LAST_TEXT'=>'>>' — по умолчанию ">>"
'LAST_TITLE'=>'Последняя страница' — по умолчанию "Last page"

Сортировка результатов поиска
'order'=>'created' — по дате создания (последние сверху);
'order'=>'+created' — по дате создания (первые сверху);
'order'=>'date' — по дате публикации (последние сверху);
'order'=>'+date' — по дате публикации (первые сверху);
'order'=>'reverseurl' — по возрастанию url;
'order'=>'url' по убыванию url;
'order'=>'+menuOrder' — по размещению в меню;
'order'=>'+title' - по алфавиту.

При работе с плагинами I18n Special Pages и I18n Custom Fields можно сортировать результаты поиска по любому полю, используемому ими:

'order'=>'+имя_вашего_поля' — по возрастанию;
'order'=>'-имя_вашего_поля' — по убыванию;

Например, если у вас есть поле с ценой и именем price, для сортировки по цене  можно использовать такой код 'order'=>'+price'

Поиск по тегам для страницы новостей
'tags'=>'_блог' — несколько тегов заключаются в кавычки, при многосложных тегах и для скрытых тегов используется _ tags:"_скрытый мой_тег тег";

Поиск по словам для страницы новостей
'words'=>'шоколад' — словосочетания заключаются в кавычки words:"мой шоколад";

Заголовок
'HEADER'=>' ' — если не нужен, можно оставить пустым;

Отключение кода языка в ссылках
'i18n'=>0 — для отключения показа кода языка в ссылках и перед результатами поиска (для включения использовать 1);

Для муьтиязычных сайтов
'lang'=>'ru' — для показа результатов поиска только выбранного языка;
'DATE_LOCALE'=>'de_DE.utf8,de_DE,de' — язык для отображения даты или несколько языков, разделенных запятыми;

Дополнительно
'NOT_FOUND'=>'Ничего не нашли? Измените параметры поиска.' — cообщение, если ничего не найдено;
'component'=>'name_component' — вы можете создать компонент с нужными для вас перменными и пользовательскими полями;
'idPrefix'=>'myID' — если установить этот параметр, то каждый результат поиска (html-тег li) будет получать идентификатор с этим префиксом + возрастающее число;
'tagClassPrefix'=>'myClassPrefix' — создает класс для каждого результата поиска (html-тег li) в соответствии со всеми тегами данной страницы + заданный префикс.

Выше приведено отображение параметров в коде для размещения в шаблоне или в компоненте, этот код будет выглядеть примерно так:

<?php get_i18n_search_results(array('tags'=>'_блог', 'DATE_FORMAT'=>'%d.%m.%Y', 'max'=>4, 'i18n'=>0, 'lang'=>'ru', 'numWords'=>'1p', 'order'=>'created','showPaging'=>1,'HEADER'=>'')); ?>

Для добавления на страницу в WYSIWYG редакторе используется немного другой код:

(% searchresults tags:_блог max:5 i18n:0 lang:ru DATE_FORMAT:"%d %b %Y - %H:%M" order:created showPaging:1 numWords:1p HEADER="" %)

Помните, что 'tags'=>'_блог' используется только на страницах новостей, на странице для результатов поиска этот параметр не указывается. Для страниц с новостями тег, указанный в коде на странице для результатов поиска новостей, должен присутствовать на каждой странице с полной новостью в поле "Теги, ключевые слова", расположенном в "Свойствах" страницы.

Для использования на мультиязычных сайтах нужно изменить код - i18n:1

Архив новостей

Для создания архива новостей вы можете использовать теги _pub_2013 для годового архива или _pub_201301 для помесячного архива. Вставлять эти теги на страницах не нужно, они генерируются автоматически. Создайте страницы с соответствующей ссылкой (jan-2013) и названием ссылки (Январь 2013 года). Вы можете разместить эти страницы как дочерние для страницы новостей и добавить их в меню в сайдбаре, используя плагин I18n. Вы можете добавлять страницы по мере необходимости, а можете создать сразу 12 страниц на весь год и сделать их Приватными, просто открывая доступ к ним в начале каждого месяца. Минимальный код для страниц с годовыми архивами выглядит так:

(% searchresults tags:_pub_2013 %)

для помесячного архива так:

(% searchresults tags:_pub_201301 %)

Также можно создавать архивы для отдельных тегов:

(% searchresults tags:"_special_blog _pub_201301" %)

RSS для новостей

Создайте страницу со ссылкой rss, и вставьте в нее такой код:

(% searchrss name:news title:"Новости" tags:_новости numWords:30 %)

Ссылка на страницу с RSS-новостями будет выглядеть так: ваш_домен.ру/rss/?news, где news — это параметр name. То есть вы можете использовать одну страницу RSS для разных страниц новостей, всего лишь вставив подобные коды с другими параметрами name и другими тегами.

Облако тегов

С появлением полноценной функции облака тегов и возможностью размещать его где угодно, эти параметры для формы поиска утратили свою актуальность — showTags, minTagSize, maxTagSize. Но вы можете использовать параметры minTagSize, maxTagSize в коде для отображения облака тегов. Например:

<?php get_i18n_tags(array('slug'=>'search', 'minTagSize'=>80, 'maxTagSize'=>200)); ?>

Цифры означают проценты размера шрифта по умолчанию, также необходимо указывать ссылку страницы. Хотя я предпочитаю настраивать минимальный и максимальный размеры тегов все-таки в настройках плагина, а в компонент вставлять код попроще.

<?php get_i18n_tags(array('slug'=>'search')); ?>

Категории для тегов с указанием количества страниц

Создайте компонент с именем tags-and-numbers, разместите в нем следующий код:

<?php
  global $args;
  $tags = return_i18n_tags();
  foreach ($args as $arg) {
    $tag = strtolower($arg);
    if (count($tags[$tag]) > 0) {
?>
    <a href="<?php echo htmlspecialchars(find_i18n_url('search-results',null)); ?>?tags=<?php echo urlencode($tag); ?>">
      <?php echo htmlspecialchars($arg); ?> (<?php echo count($tags[$tag]); ?>)
    </a>
<?php
    }
  }
?>

Не забудьте заменить search-results, на ссылку вашей страницы поиска. Вы можете добавить html-теги для разделения ссылок, например

или
  • . Затем разместите код этого компонента в шаблоне или в другом компоненте, используя в параметрах имена тегов:

    <?php get_i18n_component('tags-and-numbers', 'tag-1', 'tag-2', 'tag-3'); ?>

    Если вы хотите разместить код компонента на странице, используйте плагин DynPages и его код:

    {% tags-and-numbers tag-1 tag-2 tag-3 %}

    Рендеринг результатов поиска и страницы новостей

    Если вы хотите изменить отображение новостей или результатов поиска, вам предоставлена возможность использовать плагин I18N Custom Fields или плагин I18N Special Pages и компоненты. Создайте компонент с именем renderproduct и кодом:

    <h3 class="search-entry-title">
      <?php if ($showLanguage) { ?>
      <span class="search-entry-language">
        <?php echo htmlspecialchars($item->language, ENT_NOQUOTES); ?>
      </span>
      <?php } ?>
      <a href="<?php echo $item->link; ?>">
        <?php echo htmlspecialchars($item->title, ENT_NOQUOTES); ?>
      </a>
    </h3>
    <?php if ($showDate) { ?>
    <div class="search-entry-date">
      <?php echo strftime($dateFormat, $item->pubDate); ?>
    </div>
    <?php } ?>
    <div class="search-entry-excerpt">
      <?php echo $item->getExcerpt($item->content, $numWords); ?>
    </div>

    А на страницу добавьте такой код:

    (% searchresults tags=products component=renderproduct %)

    Описание переменных вы найдете на сайте автора.

    Дополнительные возможности плагина

    1. Поиск на конкретных страницах и дочерних страницах конкретной родительской страницы

    Для поиска на конкретных страницах вы можете указать в коде дополнительный тег, используемый только на этих страницах:

    (% searchresults addTags=ваш_тег %)

    Для поиска на всех детских страницах конкретной родительской страницы используется такой код:

    (% searchresults addTags=_parent_ссылка-страницы %)

    2. Родительские и дочерние страницы в новостях

    Если вы хотите создавать много категорий новостей, использующих разные теги, которые вам бы хотелось размещать в облаке тегов, вы можете использовать код с указанием в параметре tags ссылки родительской страницы, и все страницы отнесенные к этой категории вы должны размещать под этой родительской страницей:

    (% searchresults tags="_parent_SLUG" numWords="1p" %)

    Все остальные параметры вы можете добавлять на ваше усмотрение.

    3. Навигация по страницам

    Если вы хотите создать возможность перехода с текущей страницы новостей на предыдущую или на следущую страницу, минуя возвращение на страницу с результатами поиска, вы должны создать компонет pagenav с кодом:

    <?php
      $slug = (string) return_page_slug();
      $bc = return_i18n_breadcrumbs($slug);
      $level = count($bc) - 1;
      $nav = return_i18n_menu_data($slug,$level,$level,I18N_SHOW_PAGES);
      $i = 0;
      while ($i < count($nav) && $nav[$i]['url'] != $slug) $i++;
      if ($i > 0) {
        echo '<a href="'.find_i18n_url($nav[$i-1]['url'],$nav[$i-1]['parent']).
             '">&lt;&lt; '.$nav[$i-1]['title'].'</a>&nbsp;&nbsp;&nbsp;';
      }
      if ($i+1 < count($nav)) {
        echo '<a href="'.find_i18n_url($nav[$i+1]['url'],$nav[$i+1]['parent']).
             '">'.$nav[$i+1]['title'].' &gt;&gt;</a>';
      }
    ?>

    и либо добавлять на каждую страницу с новостями, используя плагин DynPages такой код:

    {% pagenav %}

    либо, добавить в шаблон такой код:

    <?php get_i18n_component('pagenav'); ?>

    Вы также можете заменить код '.$nav[$i+1]['title'].' на любой текст, например: "Следующая новость", а код '.$nav[$i-1]['title'].' на "Предыдущая новость". В противном случае будут отображаться заголовки новостей. Чтобы навигация по страницам работала, требуется установить плагин I18n.

    4. Новости по категориям

    Если вы хотите создать дополнительно страницы новостей по категориям, то вы можете использовать, например такой код:

    (% searchresults tags:"новости техника" %)

    На странице с таким кодом будут показаны страницы с тегом "новости", но только имеющие дополнительный тег "техника".

    Этот плагин постоянно обновляется.

    Назад

  • blog comments powered by Disqus
    Эту страницу посетили 21673 раз(а).

    Последние новости

    Последние комментарии

    Для контактов

    Back to top