Поиск по сайту на ModX

Для начала нужно поставить плагин "SimpleSearch". Сделаем форму поиска, в этом примере мы будем рассматривать выпадающую форму поиска при клике на пункт меню "поиск". Пишем разметку и стили.

HTML

<a class="nav-link" href="" data-toggle="collapse" data-target="#collapse001" aria-expanded="false">ПОИСК</a>

<div id="collapse001" class="search-form collapse" style="">
<form class="simplesearch-search-form" action="" method="get" id="search_form">
		<input type="text" class="search-input" name="search" value="">
		<input type="submit" class="search-btn button-search" value="Поиск">
</form>   
</div>

CSS

.search-form {
    position: absolute;
    right: 5px;
    top: 50px;}
.search-form input.search-input {
    outline: none;
    font-family: "Roboto-Regular";
    width: 350px;
    border: 2px solid #ff9900;
    border-radius: 5px;
    padding: 3px 10px;
    box-shadow: 0 0 3px #000;}
.search-form input.search-input:focus {
    box-shadow: 1px 1px 13px #ff9900;}
.search-form input.search-btn {
    width: 80px;
    font-family: "Roboto-Bold";
    border: 3px solid #393737;
    background-color: #ff9900;
    text-transform: uppercase;
    transition: 0.5s;}
.search-form input.search-btn:hover {
    box-shadow: 1px 1px 13px #ff9900;
    transition: 0.5s;}

Далее создаем чанк формы поиска в ModX, рекомендую создать категорию "Формы поиска" и поместить его туда. Чанк называем "SearchFormTpl". И приводим HTML чанка к такому виду (символ "((" заменяем на две квадратные скобки):

HTML SearchFormTpl

<form class="simplesearch-search-form" action="((~((+landing))))" method="((+method))" id="search_form">
	<input type="text" class="search-input" name="((+searchIndex))" id="((+searchIndex))" value="((+searchValue))">
	<input type="submit" class="search-btn button-search" value="Поиск">
</form>  

Создаем шаблон для страницы "Результаты поиска".

Шаблон "Результаты поиска" (символ "((" заменяем на две квадратные скобки)

<!DOCTYPE html>
<html lang="ru">
    <base href="((++site_url))" />
    
(($HEAD))

<body>

(($HEADER))





	<div class="container-page-001 overlay-black">
		<div class="container-page-001-content">
		    <h1 class="container-page-001__title">Поиск по сайту на ModX</h1>
		    <nav aria-label="breadcrumb">
            (($BREADCRUMBS))
            </nav> 
		</div>
	</div>
	
	
	
	
	
    <div class="container-page-003">
		<div class="container-page-003-content">
		    ((*content))
		    ((!SimpleSearch?))
		</div>
	</div>
	
	
	
	
	
(($FOOTER))

(($SCRIPT))

</body>
</html>

Создаем страницу "Результаты поиска" и прицепляем ее у только что созданному шаблону для этой страницы.

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

Код (символ "((" заменяем на две квадратные скобки)

((SimpleSearchForm?
&tpl=`SearchFormTpl`
&landing=`36`
))

В "tpl" указывая чанк формы поиска, в "landing" указывая id страницы поиска. На этом все, форма поиска оп сайту работает. Далее стилизуем результаты поиска и пагинацию на странице поиска. В результатах поиска мы можем выделить искомый текст, для этого добавим небольшой css в свои стили.

CSS

.simplesearch-highlight {
    font-weight: 700;
    font-style: italic;
    color: #393737;}

Те ресурсы, в которых не нужно делать поиск, убираем галочку "Доступен для поиска" в настройках ресурса.

 

Параметры сниппета SimpleSearch

ИмяОписаниеПо умолчанию
tpl Часть, которая используется для отображения содержимого каждого результата поиска. SearchResult
containerTpl Блок, который используется для обертывания результатов поиска, разбивки на страницы и сообщения. SearchResult
useAllWords Если true, будут найдены только результаты со всеми указанными словами поиска. 0
maxWords Максимальное количество слов для включения в поиск. Только применимо, если useAllWords выключен. 7
minChars Минимальное количество символов для запуска поиска. 3
searchStyle Чтобы выполнить поиск с помощью «частичного» поиска LIKE или поиска соответствия «соответствие», основанного на релевантности. partial
andTerms Нужно ли добавлять логическое И между словами. 1
matchWildcard Включить поиск подстановочных знаков. Установите значение false, чтобы выполнить точный поиск по поисковому запросу. 1
docFields Список отдельных полей документов для поиска. pagetitle,
longtitle,
description,
introtext,
alias,
,content
fieldPotency Оценка и сортировка результатов  
perPage Кол-во результатов поиска для одной страницы. 10
showExtract Показывать ли вырез содержимого каждого результата поиска. 1
extractSource Позволяет пользователю определять, откуда происходит извлечение. Если значением этого параметра является имя поля ресурса (включая ТВ, если установлено & includeTVs), то это поле ресурса используется для выписки. В противном случае параметр берется как имя выполняемого фрагмента. Фрагмент передается массивом ресурсов в качестве параметров. Если у этого имени нет фрагмента, то экстракт будет пустым. content
extractLength Количество символов для извлечения из содержимого для каждого результата. 200
extractEllipsis Строка, используемая для переноса результатов извлечения. По умолчанию используется многоточие.
includeTVs Указывает, должны ли значения TemplateVar быть включены в свойства, доступные для каждого шаблона ресурса. По умолчанию 0. Включение этого параметра может замедлить работу, если у вас много Дополнительных полей. 0
processTVs Указывает, должны ли значения TemplateVar быть отображены так, как они были бы на суммированном ресурсе. По умолчанию 0. Некоторые примечания: к ТВ можно получить доступ по имени своего ТВ По умолчанию SimpleSearch не использует префикс, например НЕ будет отображаться.
ТВ обрабатываются во время индексирования для поиска Solr, поэтому здесь нет необходимости делать это.
0
highlightResults Укажите или не выделите поисковый запрос в результатах. 1
highlightClass Имя класса CSS для добавления к выделенным условиям в результатах. sisea-highlight
highlightTag Тег html для обертывания выделенного термина в результатах поиска. span
pageTpl Часть, используемая для ссылки на страницы. PageLink
currentPageTpl Блок, используемый для текущей ссылки на странице. CurrentPageLink
pagingSeparator Сепаратор (разделитель) для использования между ссылками на страницы. |
ids Список ID документов, через запятую, для ограничения поиска  
idType Тип ограничения для параметра ids. Если родители, то все элементы идентификаторов будут добавлены в параметр ids для поиска. Если документы, будут использоваться только указанные идентификаторы в поиске. parents
exclude Список идентификаторов ресурсов, через запятую, для исключения из поиска, например. «10,15,19». Это исключает ресурсы с идентификаторами «10», «15» или «19».  
depth Если для idtype задано значение для родителей, глубина вниз по дереву ресурсов, которая будет искать с указанными идентификаторами. 10
hideMenu Нужно ли возвращать Ресурсы, на которых есть hidemenu. 0 показывает только видимые ресурсы, 1 показывает только скрытые ресурсы, 2 показывает оба. 2
contexts Контексты поиска. По умолчанию используется текущий контекст, если ни один из них не указан явно.  
searchIndex Имя параметра REQUEST, который будет использоваться поиском. search
offsetIndex Имя параметра REQUEST, используемого для смещения страницы. sisea_offset
placeholderPrefix Префикс для глобальных заполнителей, заданный снипетом. sisea.
toPlaceholder Нужно ли устанавливать вывод для прямого возврата или установить в заполнитель с именем этого свойства.  
urlScheme Необходимая схема URL: http, https, full, abs, relative и т.д. См. документацию $modx->makeUrl(). Это используется, когда генерируются ссылки для разбивки на страницы.  
customPackages Установите для поиска пользовательских таблиц, загрузив их пакет. Подробности смотрите ниже.  
postHooks Перечисленный запятыми список хуков для запуска, которые могут добавлять граненные множества к конечным результатам.  
activeFacet Текущая активная грань. Оставьте это самостоятельно, если вы не хотите, чтобы результат показывался с нестандартного аспекта, полученного через postHook. default
facetLimit Количество результатов non-active-facet для отображения на главной странице результатов. 5
sortBy Список полей ресурсов, через запятую, для сортировки результатов. Оставьте поле пустым для сортировки по релевантности и оценке.  
sortDir Список инструкций для сортировки результатов, разделенных запятыми. Должно соответствовать количеству элементов в параметре sortBy. DESC
noResultsTpl Чанк для использования, если результаты поиска не найдены.  

 

Параметры сниппета SimpleSearchForm

ИмяОписаниеПо умолчанию
tpl Чанк, который будет использоваться для отображения формы поиска. SearchForm
landing Ресурс, на котором вызывается сниппет SimpleSearch, который отображает результаты поиска.  
searchIndex Имя параметра REQUEST, который будет использовать поиск. search
method Следует ли отправлять поиск через POST или GET. GET
toPlaceholder Укажите, следует ли установить вывод для прямого возврата или установить заполнитель с этим именем свойства.  

 

Так же с моим портфолио можно ознакомиться на любой из представленной социальной сети, на своих страницах я публикую посты о своих работах, заданиях и целях.

Для связи со мной можно воспользоваться любой социальной сетью,
или написать на почту:

С моим резюме можно ознакомиться по ссылке:

© 2020-2024 Портфолио Юдина Александра г.Пенза. Все права защищены