Открыть главное меню

Изменения

Редактор структуры

26 071 байт добавлено, 21:30, 16 февраля 2012
Новая страница: «== Блоки элементов == Блоки элементов применяются в тех случаях, когда требуется сгруппиро...»
== Блоки элементов ==

Блоки элементов применяются в тех случаях, когда требуется сгруппировать несколько элементов страницы. Каждый [[веб-сайт]] на Nemo CMS может иметь несколько блоков. Для редактирования списка блоков сайта используется раздел '''«Управление контентом → Блоки элементов»'''.

Чтобы создать новый блок, нажмите ссылку '''«Создать блок элементов страницы»'''.

'''Настройки блока элементов:'''

*Заголовок - заголовок блока;
*Описание - описание блока;
*Шаблон - шаблон, который будет применен к списку элементов, входящих в блок при выводе блока;
*Включено - включить или выключить блок.

'''Шаблон блока элементов:'''

Блок элементов отвечает за вывод HTML-потока каждого из элементов макета страницы во [[фронт-энд]]. Для этого применяется шаблон, в ключевые места которого блок может разместить HTML-поток своих элементов.

Для этого используются функция '''{cms_render_element id=ID элемента}'''.

'''Пример шаблона блока элементов, который выведет содержимое всех элементов, обернутое в тег <p>:'''

<pre>{foreach from=$elements item=element}
<p>{cms_render_element id=$element.id}</p>
{/foreach}</pre>

'''Переменные и выражения, доступные в шаблонах блока элементов:'''

<table border="1">
<tr bgcolor="#CCCCCC">

<th class="col0">Переменная</th><th class="col1">Значение</th>
</tr>
<tr class="row1">
<td class="col0">{$parent}</td><td class="col1">Доступ к переменным доступных из шаблона <a href="/doku.php?id=settings:cms:structure_editor:template" class="wikilink1" title="settings:cms:structure_editor:template">макета страницы</a></td>
</tr>
<tr class="row2">

<td class="col0">{$global}</td><td class="col1">Доступ к переменным доступных из шаблона <a href="/doku.php?id=settings:cms:structure_editor:template" class="wikilink1" title="settings:cms:structure_editor:template">макета страницы</a> (аналог “parent”)</td>
</tr>
<tr class="row3">
<td class="col0">{$page} </td><td class="col1"> Настройки <a href="/doku.php?id=settings:cms:structure_editor:template" class="wikilink1" title="settings:cms:structure_editor:template">макета страницы</a></td>

</tr>
<tr class="row4">
<td class="col0">{$data} </td><td class="col1"> Данные контента полученные элементом для вывода во <a href="/doku.php?id=glossary:frontend" class="wikilink1" title="glossary:frontend">фронт-энд</a>.</td>
</tr>
<tr class="row5">
<td class="col0">{foreach from=$data item=field key=key}{$key}={$field}&lt;br&gt;{/foreach}</td><td class="col1">Вывод всех полей данных контента и их значений</td>

</tr>
<tr bgcolor="#CCCCCC">
<th class="col0" colspan="2">Настройки текущего блока</th>
</tr>
<tr class="row7">
<td class="col0">{$id}</td><td class="col1">ID блока</td>
</tr>

<tr class="row8">
<td class="col0">{$block_title}</td><td class="col1">Заголовок блока</td>
</tr>
<tr class="row9">
<td class="col0">{$block_description}</td><td class="col1">Описание блока</td>
</tr>
<tr class="row10">

<td class="col0">{$block_template} </td><td class="col1"><a href="/doku.php?id=settings:cms:structure_editor:template" class="wikilink1" title="settings:cms:structure_editor:template">Шаблон</a> блока</td>
</tr>
<tr class="row11">
<td class="col0">{$date_create}</td><td class="col1">Дата создания блока</td>
</tr>
<tr class="row12">

<td class="col0">{$elements_count}</td><td class="col1">Количество <a href="/doku.php?id=settings:cms:structure_editor:element" class="wikilink1" title="settings:cms:structure_editor:element">элементов</a> в блоке</td>
</tr>
<tr class="row13">
<td class="col0">{$template_title}</td><td class="col1">Заголовок <a href="/doku.php?id=settings:cms:structure_editor:template" class="wikilink1" title="settings:cms:structure_editor:template">шаблона блока</a></td>
</tr>

<tr class="row14">
<td class="col0">{$elements}</td><td class="col1">Массив настроек <a href="/doku.php?id=settings:cms:structure_editor:element" class="wikilink1" title="settings:cms:structure_editor:element">элементов</a> текущего блока</td>
</tr>
</table>

Например, для новостей доступны следующие переменные:

*id=Array
*entity_id=Array
*news_title=Array
*news_anounce=Array
*news_content=Array
*date_create=Array
*date_modify=Array
*is_deleted=Array
*enabled=Array
*is_scheduled=Array
*schedule_from=Array
*schedule_to=Array
*image_small=Array
*image_large=Array
*image_mode=Array
*is_rss=Array
*sequence=Array
*site_id=Array
*module_name=Array

== Элементы макета страницы ==

Элемент макета страницы в общем случае выполняет функции по выбору контента, введенному пользователем CMS (см. [[Редактор контента]]), удовлетворяющему настройкам элемента и формированию выходного HTML-потока с применением шаблона для подстановки его в место, указанное в макете страницы. Для группировки HTML-потоков, формируемых элементами с применением шаблона, используются блоки элементов. Для этого в настройках элемента следует указать, к какому блоку он относится.

'''Настройки элемента макета страниц:'''

*Заголовок - заголовок элемента;
*Описание - описание элемента;
*Информационный блок - блок, в котором будет отображаться элемент;
*Пользовательское имя объекта - имя объекта, по которому можно будет обратиться к нему из шаблона страницы. Если имя задано, то в процессе наследования элементов макета страниц элементы с одинаковыми именами будут заменяться, а не добавляться к ранее существующим;
*Режим создания объекта - данный параметр влияет на поведение объекта при наследовании элементов макета страниц. Если указано «Наследовать далее», то данный элемент будет наследоваться, иначе он будет создан только при формировании HTML-потока во фронт-энде только на основе текущего макета;
*Экземпляр модуля - экземпляр модуля, из которого будет выбираться контент для вывода текущим элементом;
*Язык элемента - если выбрать какой-либо язык, то данный элемент будет отображаться только в случае, если язык системы совпадет с текущим;
*Задействовать расписание - если выбран данный пункт, то элемент будет отображаться только в указанный интервал дат;
*Включено - включить или выключить элемент.

Элемент создается в 2 этапа. После того, как вы нажмете кнопку '''«Создать»''', элемент перейдет в режим настройки дополнительных параметров, о чем будет выдано соответствующее предупреждение.

Появятся дополнительные поля:

'''Режим отображения содержимого''' - это список различных вариантов выборки контента, доступных для выбранного экземпляра модуля. После изменения данного параметра в форме автоматически появятся поля данных, специфические для текущего режима отображения.

<span style="background-color: rgb(255, 240, 245)"><span style="font-size: large"><span style="color: rgb(255, 0, 0)">!</span></span> Элемент, созданный на основе режима отображения «Внедренный объект системы» экземпляра модуля «Системные функции», не будет наследоваться между макетами страниц и должен быть создан непосредственно на макете страницы, для которого он планируется использоваться, т.к. он является специальным маркером, идентифицирующим макет страницы как пригодный для интеграции построенного на его основе контента с системными функциями Nemo.
'''
Шаблон''' - шаблон, который будет применен к контенту;

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

'''Шаблон элемента модуля:'''

Этот элемент страницы отвечает за подготовку данных для вывода во фронт-энд и применения к ним шаблона. Данные, которые передаются в шаблон, зависят от полей «Экземпляр модуля» и «Режим отображения содержимого».

'''Пример шаблона модуля «Новости» для режима «Определенная новость»:'''

<pre><h1>{$data.news_title}</h1>
<p>{$data.news_content}</p></pre>

'''Переменные и выражения доступные в шаблонах элементов:'''

<table border="1">
<tr bgcolor="#CCCCCC">
<th class="col0"> Заголовок </th><th class="col1"> Значение </th>

</tr>
<tr class="row1">
<td class="col0 leftalign">{$parent} </td><td class="col1"> Доступ к переменным, доступным из шаблона макета страницы или блока элементов (в зависимости от того, из какого шаблона был вызван {cms_render_element id=$element.id}) </td>
</tr>
<tr class="row2">
<td class="col0"> {$global} </td><td class="col1">Доступ к переменным, доступным из шаблона макета страницы, в случае, если элемент был вызван из шаблона блока </td>

</tr>
<tr class="row3">
<td class="col0"> {$page} </td><td class="col1">Настройки макета страницы </td>
</tr>
<tr class="row4" bgcolor="#CCCCCC">
<th class="col0" colspan="2"> Настройки элемента </th>

</tr>
<tr class="row5">
<td class="col0"> {$id} </td><td class="col1"> ID элемента </td>
</tr>
<tr class="row6">
<td class="col0"> {$element_name} </td><td class="col1"> Пользовательское имя объекта </td>

</tr>
<tr class="row7">
<td class="col0"> {$element_title} </td><td class="col1"> Заголовок элемента </td>
</tr>
<tr class="row8">
<td class="col0"> {$element_description} </td><td class="col1"> Описание элемента </td>

</tr>
<tr class="row9">
<td class="col0"> {$element_template} </td><td class="col1"> Шаблон элемента </td>
</tr>
<tr class="row10">
<td class="col0"> {$date_create} </td><td class="col1"> Дата создания </td>

</tr>
<tr class="row11">
<td class="col0"> {$template_title} </td><td class="col1"> Заголовок шаблона </td>
</tr>
</table>

== Макеты страниц ==

Макет страницы - это некая сущность, определяющая, какие данные будут отображаться на странице фронт-энда, построенной на основе данного макета. Он также задает HTML-верстку для размещения этих данных путем назначения шаблона каждому макету страницы. Для редактирования макетов страниц используется раздел '''«Управление контентом - Макеты страниц»'''.

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

'''Настройки макета страницы:'''
*Заголовок - заголовок макета страницы;
*Описание - описание макета страницы;
*Родитель - владелец страницы в иерархической структуре, используется для наследования элементов макетов страниц;
*Шаблон - шаблон HTML с версткой данного макета страницы;
*Режим создания элементов страницы - при формировании выходного потока во фронт-энд на основе макета страницы сперва загружаются элементы всех макетов, начиная с корневого и до текущего, кроме тех, у которых данный параметр установлен в значение «Не наследовать далее», и лишь после этого - элементы текущего макета.
*Включено - включить или выключить макет страницы.

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

'''Шаблоны макетов страниц'''

Макет страницы отвечает за формирование выходного HTML-потока во [[фронт-энд]]. Для этого применяется шаблон, в ключевые места которого макет страницы может разместить HTML-поток какого-либо элемента страницы и/или блока элементов.

Для этого используются функции '''{cms_render_block id=ID блока}''' и '''{cms_render_element id=ID элемента}'''.

'''Пример шаблона макета страницы:'''

<pre><table width="100%" >
<tr>
<td colspan="3">{cms_render_block id=1}</td>
</tr>
<tr>
<td>{cms_render_element id=1}</td>
<td>{cms_render_element id=2}</td>
<td>{cms_render_element id=3}</td>
</tr>
<tr>
<td colspan="3">{cms_render_block id=2}</td>
</tr>
</table></pre>

<span style="background-color: rgb(255, 240, 245)"><span style="font-size: large"><span style="color: rgb(255, 0, 0)">!</span></span> URL для доступа к фронт-энду из браузера имеет следующий формат:

<pre>http://sitedomain/index.php?go=content&page=ID[&param1=&...&paramN=]</pre>

где ID- id макета страницы, который должен быть отображен (если он не задан, то используется значение по умолчанию (см. п. [[Настройки]] сайта)) , sitedomain – домен, который задан в настройках агентства.

'''Переменные и выражения, доступные в шаблонах макета страницы:'''

<table border="1">
<tr bgcolor="#CCCCCC">
<th class="col0 leftalign"> Имя переменной </th><th class="col1 leftalign"> Значение </th>

</tr>
<tr class="row1">
<td class="col0"> {$site} </td><td class="col1 leftalign"> Настройки сайта </td>
</tr>
<tr class="row2">
<td class="col0"> {$page}</td><td class="col1"> Настройки макета страницы </td>

</tr>
<tr class="row3">
<td class="col0">{$title} </td><td class="col1"> Заголовок макета страницы </td>
</tr>
<tr class="row4">
<td class="col0">{$page_path} </td><td class="col1"> Массив настроек макетов страниц от корневого до текущего </td>

</tr>
<tr class="row5">
<td class="col0">{$elements} </td><td class="col1"> Массив настроек элементов текущей страницы с учетом наследования </td>
</tr>
<tr class="row6">
<td class="col0">{$blocks} </td><td class="col1"> Массив настроек блоков элементов сайта </td>

</tr>
<tr class="row7">
<td class="col0">{foreach from=$data item=field key=key}{$key}={$field}&lt;br&gt;{/foreach}</td><td class="col1"> Вывод элементов массива (в шаблоне макета страницы для вывода всех полей настроек соответствующего объекта вместо “data” могут применяться “site”, “page”)</td>
</tr>
<tr class="row8" bgcolor="#CCCCCC">
<th class="col0" colspan="2">Настройки сайта </th>

</tr>
<tr class="row9">
<td class="col0">{$site.site_title} </td><td class="col1"> Заголовок сайта </td>
</tr>
<tr class="row10">
<th class="col0" colspan="2" bgcolor="#CCCCCC">Настройки макета страницы </th>
</tr>

<tr class="row11">
<td class="col0">{$page.page_title} </td><td class="col1"> Заголовок шаблона страницы </td>
</tr>
<tr class="row12">
<td class="col0">{$page.page_description} </td><td class="col1"> Описание шаблона страницы </td>
</tr>

<tr class="row13">
<td class="col0">{$page.date_create} </td><td class="col1"> Дата создания </td>
</tr>
<tr class="row14">
<td class="col0">{$page.elements_count} </td><td class="col1">Количество элементов </td>
</tr>

<tr class="row15">
<td class="col0">{$page.page_template} </td><td class="col1"> Шаблон </td>
</tr>
<tr class="row16">
<td class="col0 leftalign">{$page.template_title} </td><td class="col1"> Заголовок шаблона </td>
</tr>

</table>

== Шаблоны ==

Шаблон – это текст формате HTML с мета-вставками, соответствующими синтаксису движка шаблонов Smarty и указывающими места, в которые будут подставляться поля данных контента и/или каких либо других объектов. Каждый сайт, построенный с помощью Nemo CMS, имеет связанный с ним список шаблонов.

Редактирование списка шаблонов сайта доступно из раздела '''«Управление контентом - Шаблоны»'''.

Для создания нового шаблона нажмите на ссылку '''«Создать шаблон»'''.

'''Настройки шаблона:'''

*'''Файл шаблона''' - физическое имя файла, в котором сохраняется шаблон;
*'''Заголовок шаблона''' - понятный для пользователя текстовый заголовок шаблона, который будет использоваться при выводе списков шаблонов для блоков, элементов и макетов страниц;
*'''Шаблон''' - HTML-верстка шаблона;
*'''Использовать WYSIWYG редактор''' - переключение редактора шаблона с ввода текста на работу с визуальным редактором (иногда это необходимо, т.к. визуальные редакторы могут менять верстку и обрезать теги и их атрибуты самостоятельно, что не всегда требуется).

'''Файлы шаблонов'''

Говоря о шаблонах, отдельно стоит остановиться на таком параметре как «Файл шаблона». Имена шаблонов могут быть любыми, но для того, чтобы они могли быть использованы в качестве шаблонов элементов, блоков и макетов страниц, они должны соответствовать определенному формату. Для упрощения задачи формирования корректного, с точки зрения системы, имени файла рекомендуется использовать конструктор. Для того, чтобы начать работу с конструктором имени файла шаблона нажмите на ссылку «Конструктор» у соответствующего поля.

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

1. В поле «Применяемость» выбрать пункт «Блок»;<br>
2. В поле «Суффикс» ввести уникальную строку, идентифицирующую ваш шаблон.

После того, как вы выполнили эти действия, в поле имени файла будет сформировано корректное имя файла шаблона, который можно будет использовать с блоками элементов.

<span style="background-color: rgb(255, 240, 245)"><span style="font-size: large"><span style="color: rgb(255, 0, 0)">!</span></span> Для имен файлов шаблонов используйте только латиницу, а также не используйте знаки препинания, пунктуации и символ пробела.

Для создания шаблона для макета страницы используется аналогичная методика:

1. В поле «Применяемость» выбрать пункт «Страница»;<br>
2. В поле «Суффикс» ввести уникальную строку, идентифицирующую ваш шаблон.

Как видно на рисунках, в зависимости от применяемости шаблона к имени добавляется префикс «block» или «page» для блока и макета страницы соответственно.

В случае с шаблонами элементов макета страницы появляются дополнительные параметры:
*В поле «Применяемость» выбрать пункт «Страница»;
*В поле «Модуль» выбрать модуль, для которого будет использован данный шаблон;
*В поле «Формат» выбрать тип данных, который будет представлять шаблон;
*В поле «Суффикс» ввести уникальную строку, идентифицирующую ваш шаблон.

== См. также ==
[[Система управления порталом (ЦМС)]]<br>
[[Контент]]<br>
[[Фронт-энд]]
'