3.3. Функции

Шаблон Zebrum Lite представляет собой PHP-файл, поэтому для вывода частей страницы используются PHP-функции.

3.3.1. Вывод области с содержимым страницы

Хочется обратить особое внимание на функцию z_html(). Вызов этой функции в шаблоне для обычной страницы приведет к подключению части шаблона из файла page.php.

Содержимое файла page.php в стандартном шаблоне:

<div class="page">
    <h2 class="pagetitle"><?php z_h1(); ?></h2>
    <?php z_breadcrumb(array('title' => 'Путь:')); ?>

    <div class="entry"><?php z_content(); ?></div>
    <?php z_pagenumbers('subpages'); ?>

    <div class="postinfo">Эта страница была опубликована <?php z_time('d.m.Y'); ?>
    в <?php z_time('H:i'); ?>.
    <?php z_pagetags('<br />Метки: '); ?></div>
</div>

Таким образом все содержимое страницы выносится в отдельный файл page.php.

Это сделано для того, чтобы у модулей была возможность самим формировать HTML-код содержимого страницы.

Например, модули zmodule_allpages, zmodule_listpages и zmodule_tags сами формируют HTML-код содержимого страницы, используя для этого файл части шаблона listpages.php, который определяет как выводить список страниц.

Если в шаблоне не используется вызов функции z_html(), то страницы, использующие эти модули, не будут отображать своего содержимого.

3.3.2. Мета-информация о странице

Для вывода тэгов с информаций о странице используется функция z_head(). Её вызов должен быть внутри тэга <head>.

<head>
    <?php z_head(); ?>
</head>

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

<title>Бесплатный движок для твоих сайтов!</title>
<meta name="keywords" content="zebrum, бесплатная cms, cms на файлах" />
<meta name="description"
    content="Бесплатная система для создания и поддержки мини-сайтов." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="alternate" type="application/rss+xml"
    title="Zebrum Lite" href="http://mysite.ru/feed/" />

Плагины и модули могут добавлять свою информацию в секцию HEAD. Например, информация об RSS-ленте появится только при включенном плагине zplugin_rss.

Информация о заголовке браузера, ключевых словах и описании страницы берется из свойств объекта страницы.

В самом шаблоне до вызова функции z_head() можно заменить заголовок браузера или мета-тэги, используя объект шаблона. Изменение свойств объекта страницы в шаблоне до вызова функции уже не повлияет на результат её выполнения.

3.3.3. Объекты страниц в шаблоне

В шаблонизаторе для формирования HTML-кода может находиться не одна страница, а несколько.

Например, при подключении части шаблона listpages.php из модуля zmodule_allpages в шаблонизатор передается несколько страниц для формирования списка страниц.

Для перемещения между объектами страниц используется аналог курсора, который указывает на текущей объект страницы из списка. При этом большинство функций шаблонизатора (например, z_h1 или z_pagetags) выводят информацию о странице, на которую указывает курсор.

Рассмотрим упрощённый вариант шаблона listpages.php.

Пример 3.3. Упрощённый шаблон listpages.php

<h1><?php z_h1(); ?></h1>
<?php z_breadcrumb(array('title' => 'Путь:')); ?>

<?php while (z_nextpage()) : ?>
  <h2><a href="<?php z_link(); ?>"><?php z_h1(); ?></a></h2>
<?php endwhile; ?>

<?php z_pagenumbers('listpages'); ?>



Для вывода названий текущей страницы и всех страниц из списка используется одна и таже функция z_h1().

При подключении шаблона курсор указывает на первую страницу из списка. Модуль zmodule_allpages первой страницей добавляет текущую страницу, то есть страницу, которая содержит список других страниц. Поэтому название запрошенной страницы отображается в тэге h1.

Для перемещения курсора на следующую страницу используется функция z_nextpage(). Она возвращает объект следующей страницы или false, если в списке больше нет страниц. В приведенном примере результат выполнения этой функции используется для управления циклом while.

Используя функцию z_havepages() можно узнать, есть ли ещё в списке страницы. Например, можно выводить сообщение о том, что в списке нет страниц, как это происходит в следующем примере.

Пример 3.4. Пример использования функции z_havepages()

<h1><?php z_h1(); ?></h1>
<?php z_breadcrumb(array('title' => 'Путь:')); ?>

<?php if (z_havepages()) : ?>
  <?php while (z_nextpage()) : ?>
    <h2><a href="<?php z_link(); ?>"><?php z_h1(); ?></a></h2>
  <?php endwhile; ?>

  <?php z_pagenumbers('listpages'); ?>
<?php else: ?>
  <p>Нет записей.</p>
<?php endif; ?>



Текущий объект страницы, на который указывает курсор, можно получить используя функцию z_page().

3.3.4. Вывод свойств страницы

Ниже перечислены функции для вывода некоторых свойств страницы. Доступ к дополнительным свойствам можно получить через объект страницы, возвращаемый функцией z_page().

Под траницей будем подразумевать страницу, на которую указывает курсор.

z_title()

Выводит заголовок браузера страницы.

z_h1()

Выводит название страницы.

z_link()

Выводит ссылку на страницу, относительно корня домена.

z_time($format = "Y-m-d")

Выводит дату публикации страницы. В качестве аргумента функции можно передать формат вывода даты.

Формат вывода соответствует формату функции PHP date .

z_content()

Выводит текст страницы.

z_teaser($more_link_text)

Выводит тезис страницы.

Текст для тезиса определяется следующим образом.

Если в тексте присутствует <!--more-->, то выводится текст до этого маркера и ссылка на страницу с текстом $more_link_text.

Если у страницы несколько подстраниц, то в качестве текста будет использоваться первая подстраница. Текст берется до маркера <!--more-->, если он присутствует в тексте подстраницы. В любом случае, так как у страницы есть подстраницы, то будет выводиться ссылка на страницу.

Текст для ссылки передается в качестве аргумента.

<?php z_teaser("Читать запись полностью &raquo;"); ?>
z_pagetags($before, $separator, $after)

Выводит список тэгов страницы. Если на сайте есть страница с модулем zmodule_tags (или свой модуль, реализующий раздел тэгов), то с тэгов будет проставляться ссылки на страницы тэгов.

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

$before — текст, который будет выводиться перед списком тэгов;

$separator — разделитель, который будет выводиться между тэгами;

$after — текст, который будет выводиться после списка тэгов.

Если у страницы нет ни одного тэга, то ничего выводиться не будет.

3.3.5. Постраничная навигация

Для вывода постраничной навигации в системе был создан статический класс znavi.

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

Информация о количестве страниц в навигации задается системой (или модулем) и не зависит от того, на какую страницу указывает z_page().

Эти форматы можно переопределять в файле functions.php.

Пример 3.5. Переопределение форматов постраничной навигации

znavi::setPatterns("listpages", array(
  'before' => '<div id="wp_page_numbers"><ul>',
  'title' => '<li class="page_info">Страница %1$d из %2$d</li>',
  'page' => '<li><a href="%2$s">%1$d</a></li>',
  'selectedPage' => '<li class="active_page"><a href="%2$s">%1$d</a></li>',
  'separator' => '',
  'after' => '</ul><div style="float: none; clear: both;"/></div></div>',
));

znavi::setPatterns("subpages", array(
  'before' => '<p>',
  'title' => '<strong>Страницы:</strong> ',
  'page' => '<a href="%2$s">%1$d</a>',
  'selectedPage' => '%1$d',
  'separator' => ' ',
  'after' => '</p>',
));



Для вывода постраничной навигации достаточно вызвать функцию z_pagenumbers и в качестве аргумента указать название формата.

Пример 3.6. Вывод постраничной навигации в шаблоне

<?php z_pagenumbers("subpages"); ?>



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

Zebrum Lite 2.0 поддерживает и старую функцию вывода постраничной навигации, где в качестве аргументов передается информация о вёрстке.

Пример 3.7. Вывод постраничной навигации с использованием z_pagenavigation

<?php
z_pagenavigation(
  '<p>Страницы:', // текст перед списком
  '<a href="#link">#number</a>', // шаблон вывода номера страницу
  '#number', // шаблон вывода номера текущей страницы
  '</p>', // текст после списка
  ', ' // разделитель между номерами страниц
);
?>



Рекомендуется использовать функцию z_pagenumbers().

3.3.6. Дополнительные функции

z_breadcrumb($params)

Функция является обёрткой для вывода виджета zwidget_breadcrumb. В качестве аргумента можно передать массив с настройками виджета.

z_listpages($params)

Функция является обёрткой для вывода виджета zwidget_listpages. В качестве аргумента можно передать массив с настройками виджета.

z_menu($params)

Функция является обёрткой для вывода виджета zwidget_pagemenu. В качестве аргумента можно передать массив с настройками виджета.

z_subpages($sort, $open, $line, $close)

Функция является обёрткой для вывода виджета zwidget_listpages.

Аргументы функции:

$sort — порядок сортировки страниц;

$open — текст, который будет выведен перед списком страниц;

$line — шаблон строки со ссылкой на страницу;

$close — текст, который будет выведен после списка страниц.

В шаблоне строки можно использовать следующие метки:

#link — будет заменено на ссылку на страницу;

#title — будет заменено название пункта меню страницы.

z_tagcloud()

Функция является обёрткой для вывода виджета zwidget_tagcloud. В качестве аргумента можно передать массив с настройками виджета.

z_sitemap()

Выводит ссылку на страницу с модулем карты сайта (zmodule_sitemap). В качестве текста ссылки будет использовано название пункта меню страницы карты сайта.

Если на сайте нет карты сайта, то вместо ссылки будет выведен текст "Нет карты сайта".

z_tags()

Выводит ссылку на страницу тэгов (zmodule_tags). В качестве текста ссылки будет использовано название пункта меню страницы тэгов.

Если на сайте нет страницы тэгов, то вместо ссылки будет выведен текст "Нет облака тэгов".