Онлайн-руководство разработчика NetCat
Netcat 7 — нейросеть в вашем сайте!
Подробнее
Модуль «Поиск по сайту» 14.2.1Начало работы с модулем 14.2.2Язык запросов 14.2.3Способы хранения индекса 14.2.4Интерфейс модуля в панели управления сайтом 14.2.5Области индексирования 14.2.6Области HTML-страниц 14.2.7Области поиска на сайте 14.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 14.2.9Правила индексирования 14.2.10Постановка задачи переиндексирования в очередь 14.2.11Интеграция модуля в макеты дизайна сайта 14.2.12Простая форма поиска 14.2.13Расширенная форма поиска 14.2.14Вывод результатов поиска 14.2.15Стилизация списка подсказок 14.2.16Расширенные настройки 14.2.17Разработка расширений модуля 14.2.18Обзор архитектуры модуля 14.2.19Обработчики документов различных типов 14.2.20Текстовые фильтры 14.2.21Анализаторы текста 14.2.22Корректировщики запросов 14.2.23Подключение других поисковых систем 14.2.24Решение проблем с поиском 14.2.25Решение проблем с индексированием 14.2.26Справочник API

Шаблоны действий

Форма добавления

Помимо отображения объектов, в компоненте настраиваются вывод форм для добавления и редактирования объектов. Настраивание альтернативных форм может понадобиться в том случае, если вам нужно поместить форму для пользователей на сайте и её нужно стилизовать в соответствии с требованиями дизайна или когда нужно скрыть некоторые поля в форме.

Откройте форму редактирования компонента и перейдите на вкладку «Шаблоны действий». В разделе находится ряд вкладок: добавление, изменение, удаление, поиск.

По умолчанию все поля пустые. Для того, чтобы редактировать нужную форму нажмите на ссылку «Сгенерировать код…». После генерации кода вы сможете настроить формы или условия по своему усмотрению.

У форм есть переменная $warnText, отвечающая за вывод ошибок, возникающих при заполнении формы. Поместите её в нужном месте.

Удобнее и правильнее всего создавать свою форму на основе формы, сгенерированной системой.

Приведём пример формы добавления с двумя полями: Название и Файл:

<?=( $warnText ? "Ошибка: $warnText" : NULL )?>
<form name='adminForm' enctype='multipart/form-data' method='post' action='/netcat/add.php'>
<input name='admin_mode' type='hidden' value='<?=$admin_mode?>' />
<input name='catalogue' type='hidden' value='<?=$catalogue?>' />
<input name='cc' type='hidden' value='<?=$cc?>' />
<input name='sub' type='hidden' value='<?=$sub?>' />
<input name='posting' type='hidden' value='1' />
<input name='f_Parent_Message_ID' type='hidden' value='<?=$f_Parent_Message_ID?>' />
<?=nc_form_moderate('add', $admin_mode, 0, $systemTableID, $current_cc, (isset($f_Checked) ? $f_Checked  : null), $f_Priority , $f_Keyword, $f_ncTitle, $f_ncKeywords, $f_ncDescription )?>
</div>
<?=nc_string_field("Name", "", $classID, 1) ?><br />
<br />
<?=nc_file_field("File", "", $classID, 1);?><br />
<br />
<br/> Звездочкой (*) отмечены поля, обязательные для заполнения <br/><br/>
<?=nc_submit_button(NETCAT_MODERATION_BUTTON_ADD)?>
</form>

Функции генерации полей:

nc_bool_field()
функция генерирует поле типа «Логическая переменная»

nc_date_field()
функция генерирует поле типа «Дата и время»

nc_field_extension
вывод содержимого из связанного поля

nc_file_field()
функция генерирует поле типа «Файл»

nc_float_field()
функция генерирует поле типа «Число с плавающей запятой»

nc_get_field_params()
функция отдаёт массивы полей, для генерации альтернативных форм

nc_int_field()
функция генерирует поле типа «Целое число»

nc_list_field()
функция генерирует поле типа «Список»

nc_load_multifield()
инициализирует объект призвольного поля мультифайла

nc_multilist_field()
функция генерирует поле типа «Множественный выбор»

nc_put_field()
функция генерирует поле любого типа

nc_related_field()
элементы для редактирования поля типа «связь с другим объектом»

nc_string_field()
функция генерирует поле типа «Строка»

nc_text_field()
функция генерирует поле типа «Текстовый блок»

Вы можете переопределить значения полей по своему усмотрению.

Например, вывод строкового поля

<?=nc_string_field("Name", "", $classID, 1) ?>

можно заменить на

<input type='input' name='f_Name' value='<?=$f_Name?>'>


ВАЖНО! Если в альтернативной форме будет отсутствовать какое либо поле и соответственно не будет передано никакое значение, то в объект сохранится пустое значение.

Условие добавления

По умолчанию данные, передаваемые в форме, проверяются на соответствие введённого значения типу поля. Сообщение об ошибке записывается в переменную $warnText и выводится на экран.

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

if (!$f_field1 && !$f_field2) {
    $warnText = "Необходимо заполнить Field1 или Field2!";
    $posting = 0;
}

Кроме этого, в поле можно писать любой PHP-код.

Действие после добавления

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

В поле можно вписать любой PHP-код.

Форма изменения, условия изменения, действие после изменения

Назначение и функциональность этих форм полностью идентично формам добавления. Разница лишь в том, что эти действия предназначены и работают при изменении объекта.

Для полей типа "Логическая переменная" и "Множественный выбор":

ВАЖНО! Если в альтернативной форме будет отсутствовать какое либо поле и соответственно не будет передано никакое значение, то в объект сохранится пустое значение.
ВАЖНО! Поле f_Checked является обязательным для заполнения.

Частичное сохранение формы

В форме можно установить параметр partial, делающий возможным частичную передачу формы.

<input type="hidden" name="partial" value="1" />

При наличии параметра partial будут сохранены только значения полей, переданные в форме. Обратите внимание, что в условиях изменения, действии после изменения в переменных $f_ИмяПоля будут доступны только переданные в форме поля.

Вкладки в диалогах добавления и изменения

Система поддерживает возможность управлять видом диалогов добавления и изменения объектов. Для этого шаблон добавления или изменения должен быть размечен особым образом.

Существует два варианта разметки — полный и упрощённый.

Полный вариант разметки позволяет указать не только набор вкладок, но и заголовок и подвал диалога, а также скрыть стандартные вкладки (например, вкладку «Дополнительно»). Пример полной разметки:

<div class="nc-modal-dialog">
    <div class="nc-modal-dialog-header">
        <h2>
            Заголовок диалога, у стандартных диалогов используется 
            <?= $current_cc["Sub_Class_Name"] ?>
        </h2>
    </div>
    <div class="nc-modal-dialog-body">
         <!-- 
               Тэг form и скрытые параметры, как указано 
               в разделе «Форма добавления» 
         -->
         <form ...>
             <input type="hidden" ...>
             <div data-tab-caption="Название первой вкладки" 
              data-tab-id="опциональный_id_вкладки_1">
                 Содержимое первой вкладки
             </div>
             <div data-tab-caption="Название второй вкладки" 
              data-tab-id="опциональный_id_вкладки_2">
                 Содержимое второй вкладки
             </div>
         </form>
    </div>
    <div class="nc-modal-dialog-footer">
         <div class="nc-modal-dialog-footer-text">
             Можно вывести дополнительный текст в подвале диалога
         </div>

         <!-- Для стандартных кнопок нужно указать атрибут data-action: -->
         <button data-action="close">Закрыть</button>
         <button data-action="submit">Сохранить</button>
         <button data-action="save-draft">Сохранить черновик</button>

         <button class="nc-btn nc--red">
             Это красная кнопка без стандартной функции
         </button>
    </div>
    <script>
        // здесь можно добавить javascript-код, который будет выполнен 
        // при открытии диалога
    </script>
</div>

ВАЖНО: при использовании полной разметки всё содержимое диалога, включая теги <script>, должно быть внутри <div class="nc-modal-dialog">.

Вкладка «Дополнительно» будет добавлена автоматически. Если вы не хотите, чтобы вкладка «Дополнительно» была показана, добавьте к тэгу div.nc-modal-dialog атрибут data-hidden-tabs="tab-system":

<div class="nc-modal-dialog" data-hidden-tabs="tab-system">

В большинстве случаев нет необходимости менять заголовок и подвал диалога. В этих случаях достаточно указать только тэги с атрибутами data-tab-caption, например:

<!-- Тэг form и скрытые параметры, как указано в разделе «Форма добавления» -->
<form ...>
    <input type="hidden" ...>
    <div data-tab-caption="Название первой вкладки">
        Содержимое первой вкладки
    </div>
    <div data-tab-caption="Название второй вкладки">
        Содержимое второй вкладки
    </div>
</form>

Чтобы получить в JavaScript открытый диалог, используйте:

var dialog = nc.ui.modal_dialog.get_current_dialog();

У объекта nc.ui.modal_dialog, полученного указанным способом, доступны методы:

  • dialog.change_tab(tab_id) — открывает вкладку с указанным значением атрибута data-tab-id
  • dialog.find(selector) — возвращает jQuery-объект с элементами, удовлетворяющими условиям селектора, например: dialog.find('.tpl-property-name')

Форма удаления

На странице выводятся ссылки для подтверждения и удаления объекта.

Форма поиска

HTML-код, записанный в это поле, будет доступен в префиксе или суффиксе списка объектов в переменной $searchForm. Форму поиска можно переопределить по своему усмотрению.

Форма расширенного поиска

В том случае, если у раздела по умолчанию задано действие «Поиск», будет выводиться расширенная форма поиска по компоненту.

Описание проекта