Создание и редактирование шаблонов вывода

    Создание компонента подразумевает автоматическое создание новой таблицы в базе данных. Структура таблицы определяется набором полей для нее. Для добавления компонента (или его редактирования) необходимо заполнить соответствующую форму (см. «Руководство пользователя»).
    Четыре макета (префикс, суффикс, макет вывода объекта в списке и полного вывода) представляют собой HTML-текст со вставками функций PHP, системных функций NetCat и специальных переменных. Так же, как и содержимое макетов дизайна, эти макеты выполняются при помощи функции eval(): eval(“echo $template;”). Поэтому к ним применимы все те же правила, что и для макетов дизайна: маскировка кавычек и обратного слеша, сцепление строк при помощи точки и пр. В Приложении 2 приведен список функций и переменных, которые можно использовать в макетах и компонентах.
    Префикс и суффикс обычно используются в следующих случаях:
    1. Если компонент подразумевает какой-либо HTML-текст перед списочной частью (или после нее), он указывается в макетах префикса и суффикса соответственно. Например, теги < table…> и < /table> (а также, возможно, заголовочная часть страницы), если данные на страницах компонента должны представляться в табличном виде.
    2. Если компонент содержит элементы навигации по компоненту раздела (если подразумевается, что список будет многостраничным). Например, необходимо реализовать навигацию в следующем виде:
Новости 11 - 20 из 35 пред. | 1 | 2 | 3 | след.

    Для реализации этого примера необходимо внести в суффикс (или префикс, что встречается реже) примерно следующий текст:



    При этом настройки вывода блока навигации (поле «Шаблоны вывода навигации» в макете дизайна) должны быть следующими:



    В этом примере ссылка «пред.» или «след.» будут показаны только в том случае, если мы находимся не на первой (или последней) странице списка.
    Все записи в списке будут показаны в соответствии с макетом вывода записи. Он также представляет собой HTML-текст со вставками переменных и функций, полный список которых приводится в Приложении 2. Для каждой записи определен набор переменных, каждая из которых соответствует полю компонента. Если Name – название поля в компоненте, то для ее отображения в макете вывода записи нужно указывать переменную $f_Name, т.е. к названию поля прибавлять префикс «$f_».
    К любым переменным (в т.ч. и соответствующим полям компонента) можно применять любые доступные функции, например, opt($var, $output) (вывод $output в том случае, если $var не пусто и не равно нулю), is_even($var) (проверка на четность), стандартные функции PHP.
    К примеру, необходимо вывести анкету сотрудника. Сущность «Сотрудник» состоит из полей:
    - ФИО (Name, Строка, обязательное для заполнения)
    - Дата рождения (Date, Дата и Время, обязательное для заполнения)
    - Фото (Photo, Файл)
    - Характеристика (Description, Текстовый блок, обязательное для заполнения)
    - Отдел (Depart, Список)
    Сортировать записи нужно по фамилиям сотрудников. Для этого в поле «Сортировать по полю» установим значение «Name». Вывод записей должен происходить в следующем виде:

Фото Фото Фото Фото Иванов Иван Иванович
Фото Фото Фото Фото Родился 32.13.1999, «Отдел маркетинга»
Фото Фото Фото Фото  
Фото Фото Фото Фото Не пьет, не курит, не судим, женат, имеет трех детей и
Фото Фото Фото Фото автомобиль ВАЗ.

    Данный пример может быть реализован примерно так.
    Префикс:



    Суффикс:



    Макет вывода записи:



    В приведенном примере префикс открывает таблицу, суффикс ее закрывает, а каждый объект представляет собой строку из 2х ячеек. В первой ячейке показывается фотография сотрудника с альтернативным текстом, соответствующим имени сотрудника. Если фотографии нет, показывается другая картинка (например, пустая или с надписью «Нет фото»). Во второй ячейке выводится имя сотрудника, дата рождения, затем отдел (если он есть) и потом характеристика. Обратите внимание: т.к. отдел является необязательным параметром, он проверяется на «не пустоту». Эту проверку можно было бы не осуществлять, но в тогда будет выведен некорректный текст:

…32.13.1999, отдел «»…

    Поэтому весь текст, относящийся к необязательному параметру, нужно выводить только в том случае, если параметр не пустой. Если же в данном примере поле «Характеристика» было бы необязательным, код бы не изменился, т.к. отсутствие значения между «< br>< br>» и «< /td>» не повлияло бы на вид страницы.
    Для демонстрации следующего приема усложним задачу. Пусть сотрудники должны выводиться по 10 человек на странице. Для этого установим соответствующий атрибут компонента в 10. Если оставить шаблоны компонента такими же, будут выведены первые 10 сотрудников, а на следующие страницы попасть будет нельзя. Для исправления этого необходимо ввести в суффикс или префикс элементы навигации по списку записей.
    В NetCat поддерживается навигация по списку двух типов, которые могут совмещаться. В первом типе на каждой странице содержатся ссылки на следующую и предыдущую страницу. Для реализации этого типа навигации в суффикс должен быть введен примерно следующий код:



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



    Аналогично следует поступить и с параметром $nextLink. Также можно использовать переменные $begRow, $endRow, $totRows, которые обозначают соответственно номер первой записи на странице, номер последней записи на странице и общее число записей на всех страницах.
    Второй способ навигации подразумевает вывод списка всех страниц. Для его реализации нужно в суффикс или префикс внести функцию:



    Внешний вид этого блока навигации должен быть настроен:



    Следующий прием одновременно показывает пример присваивания переменной значения и реализации такой частой задачи, как чередование формата вывода записей. Пусть необходимо выводить по две записи в строке. Для реализации этого примера нам потребуется ввести некую переменную-счетчик, четность которой необходимо проверять. Ввести счетчик нужно в префиксе, добавив в него строчку:



    В данном случае функция opt() ничего не выводит, только присваивает начальное значение переменной $f_Counter (название может быть другим). В макете же вывода записи нужно:
    - проверять четность счетчика и выводить в зависимости от этого код;
    - прибавлять единицу к счетчику.
    Для этого содержимое макета должно быть примерно таким:



    В первой строке, в случае четности записи, выводится тег < tr>, в предпоследней, в случае нечетности, выводится тег < /tr>, а в последней к параметру прибавляется единица. Примерно так же можно организовать, например, вывод строк с разным цветом фона через одну.
    Для демонстрации примера применения макета полного вывода еще усложним задачу. У каждого сотрудника должна быть еще и более полная характеристика (FullDescr, Текстовый блок, обязательное для заполнения), которая будет выводиться на отдельной странице при нажатии на ссылку «подробнее». Для этого добавим в макет вывода записи ссылку «подробнее» (ее можно продублировать, например, на фотографии или имени сотрудника):



    Ссылка будет иметь вид /about/persons/person_117.html, где /about/persons/ – адрес текущего раздела, person – ключевое слово компонента раздела, а 117 – номер объекта. Если при добавлении сотрудника было введено ключевое слово объекта, оно будет использовано в адресе страницы, который будет выглядеть так: /about/persons/ivanov.html. Пока шаблон отображения одного объекта на отдельной странице пуст, страница, куда можно попасть после нажатия на ссылку, также будет пуста. Для ее заполнения внесем следующий текст в этот шаблон:



    Чтобы вывести имя сотрудника в название страницы, укажем шаблон заголовка данного компонента:



    Стоит отметить, что в шаблон отображения объекта в списке необходимо добавить переменную $f_AdminButtons (в произвольном месте). В обычном режиме она пуста, а в режиме администрирования содержит статусную информацию о записи, ссылки «изменить», «удалить» и «включить/выключить». Также в шаблон (обычно в его начало) необходимо добавить переменную $f_AdminCommon. В режиме администрирования она будет выводить блок с технической информацией о компоненте и ссылками на добавление объекта и удаление всех объектов. Настройка дизайна этих административных блоков будет описана ниже.
« Назад          Содержание          Далее »


Сайты по теме:


    

Интересное в сети: