 Anonymous | Базовые шаблоны 1224 дня назад Цитата('1480324','1598893','5','10249')">Сообщить о спамеПроще всего делать шаблоны на основе уже сверстанных в HTML статических страниц. Рассмотрим создание и подключение шаблона на примере. Допустим, уже есть HTML-файл такого содержания:
<html> <head> <meta name="description" content="описание сайта Василия Пупкина" /> <meta name="keywords" content="Вася Василий Пупкин официальный сайт" /> <title>Сайт Васи Пупкина: Главная страница</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head>
<body>
<!-- начало меню -->
<table border="1"> <tr> <td><a href="/"><b>Главная</b></a></td> </tr>
<tr> <td><a href="/about/">Обо мне</a></td> </tr>
<tr> <td><a href="/me_and_me/">Я и мировое господство</a></td> </tr>
<tr> <td><a href="/contacts/">Контакты</a></td> </tr> </table>
<!-- конец меню -->
<h1>Главная страница</h1>
<p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p>
</body> </html>
Для того, чтобы добавить шаблон в CMS, нужно создать файл в директории tpls/content, например, test.tpl, и вставить туда ваш HTML-код. CSS-файл следует положить в папку css/cms и назвать style.css. Изображения желательно положить в папку images. Не забудьте поменять пути ко всем изображениям и CSS-файлам.
Чтобы система «увидела» новый шаблон и начала использовать его для вывода страниц, шаблон необходимо добавить в систему. Для этого следует зайти в настройки модуля «Структура», вкладка «Шаблоны» (http://yourdomain.ru/admin/content/config/). Вы увидите список уже установленных шаблонов в каждом домене, которые существуют в выбранной языковой версии.
Чтобы подключить новый файл шаблона, заполните в самой нижней свободной строке поля «Название шаблона» (дайте ему какое-нибудь осмысленное название, например «Мой тестовый шаблон») и «Имя файла» (в нашем случае, «test.tpl») и нажмите кнопку «Сохранить».
Если вы хотите, чтобы этот шаблон использовался в качестве шаблона по умолчанию, поставьте напротив него отметку «Основной». Теперь при этот шаблон будет выбран по умолчанию в выпадающем списке выбора шаблонов. Так же он будет использоваться для вывода системных страниц, которые используют шаблон по умолчанию (Регистрация, Восстановление пароля, Карта сайта).
Шаблоны будут видны в выпадающем списке при редактировании каждой страницы:
Таким образом, на одном сайте можно одновременно использовать много шаблонов, выбирая подходящий шаблон как для отдельной страницы, так и для группы страниц.
Попробуйте создать новую страницу (убедитесь, что в опции «Шаблон дизайна» выбран новый шаблон) и посмотрите, что получилось на сайте.
На сайте должен появиться ваш HTML-шаблон. Но сейчас он статический. Теперь вам надо сделать его динамическим.
Для начала надо определить, какие части HTML-кода будут изменяться. В нашем случае изменяться будут:
заголовок окна <title>;
мета-теги keywords и description;
заголовок текста <h1>;
собственно текст;
меню сайта.
Значит, предстоит немного поработать с HTML-шаблоном и вместо изменяющихся участков поставить соответствующие макросы.
Например, в начале HTML-файла заданы мета-теги и тайтл:
<meta name="description" content="описание сайта Василия Пупкина" /> <meta name="keywords" content="Вася Василий Пупкин официальный сайт" /> <title>Сайт Васи Пупкина: Главная страница</title>
Заменяем их на соответствующие макросы (список макросов дан в приложении):
<meta name="description" content="%description%" /> <meta name="keywords" content="%keywords%" /> <title>%title%</title>
Теперь система при формировании страниц будет брать мета-теги и тайтл, прописанные для каждой страницы индивидуально, и подставлять их вместо соответствующих макросов. Названия макросов запомнить очень просто.
Аналогично поступим с заголовком текста. Было так:
<h1>Главная страница</h1>
А станет так. Заголовок текста выводится макросом %header%:
<h1>%header%</h1>
Основной текст страницы тоже изменяется:
<p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p> <p>Текст обо мне: Текст обо мне: Текст обо мне: Текст обо мне: </p>
Для вывода основного текста страницы есть макрос %content%:
%content%
В начало файла между тегами <head> и </head> вставляем строчку:
<script type="text/javascript" src="/js/easy.php"></script>
Эта строчка подключает функцию быстрого редактирования и другие полезные возможности. При помощи нее вы сможете, нажав Shift+D, быстро перейти к правке текущей страницы сайта или каких-либо ее фрагментов.
В итоге должно получиться следующее:
<html> <head> <meta name="description" content="%description%" /> <meta name="keywords" content="%keywords%" /> <title>%title%</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/js/easy.php"></script> </head> <body>
<!-- начало меню --> <table border="1"> <tr> <td><a href="/"><b>Главная</b></a></td> </tr> <tr> <td><a href="/about/">О компании</a></td> </tr> <tr> <td><a href="/projects/">Проекты</a></td> </tr>
<tr> <td><a href="/contacts/">Контакты</a></td> </tr> </table>
<!-- конец меню -->
<h1>%header%</h1>
%content% </body> </html>
Итак, мы сохраняем файл шаблона и смотрим на результат. Теперь страница практически полностью динамическая, за исключением меню. Предстоит «оживить» меню сайта. Посмотрим как сверстано меню:
<!-- начало меню --> <table border="1"> <tr> <td><a href="/"><b>Главная</b></a></td> </tr> <tr> <td><a href="/about/">Обо мне</a></td> </tr> <tr> <td><a href="/me_and_me/">Я и мировое господство</a></td> </tr> <tr> <td><a href="/contacts/">Контакты</a></td> </tr> </table> <!-- конец меню -->
Меню состоит из пунктов. Само меню как-то оформлено, да и у пунктов тоже есть оформление. Например, у всего меню может быть некая рамка или фон, текущий пункт меню может быть выделен жирным и т.п. Еще в одном меню могут быть разные уровни.
Выделим обрамление меню:
<!-- начало меню --> <table border="1"> <!-здесь пойдут пункты меню --> </table> <!-- конец меню -->
Пункт меню оформлен так:
<tr> <td><a href="/contacts/">Контакты</a></td> </tr>
Текущий пункт меню оформлен по-другому:
<tr> <td><a href="/"><b>Главная</b></a></td> </tr>
Исходный шаблон меню находится в файле /tpls/content/menu/default.tpl и выглядит так:
<?php $FORMS = Array(); $FORMS['menu_block_level1'] = <<<END %lines% END;
$FORMS['menu_line_level1'] = <<<END <div class="menu"><a href="%link%" class="menu">%text%</a></div> END;
$FORMS['menu_line_level1_a'] = <<<END <div class="menu_a"><span class="menu_a">%text%</span></div> END; ?>
Вначале немного непонятно. На самом деле, все очень просто. Посмотрим на первую часть кода:
$FORMS['menu_block_level1'] = <<<END
%lines%
END;
Это блок, который называется menu_block_level1. Есть всего 3 типа таких блоков.
menu_block_level1 ― содержит HTML-обрамление меню;
menu_line_level1 ― содержит HTML-код пункта меню;
menu_line_level1_a ― то же самое, что и menu_line_level1, только используется для активного пункта меню.
Все, что расположено между <<<END и END; воспринимается, как html-шаблон (для всего меню или для отдельного пункта).
При генерации меню, система берет шаблоны пунктов (например, menu_line_level1), и ставит их друг за другом. Получается HTML-код, в котором содержатся все пункты меню. Этот код вставляется вместо макроса %lines%.
Итак, необходимо проставить код, который мы выделили выше (обрамление, пункты меню) в соответствующие блоки. Должно получиться примерно так:
<?php $FORMS = Array();
$FORMS['menu_block_level1'] = <<<END
<!-- обрамление меню --> <table border="1"> %lines% </table> <!-- конец обрамления меню -->
END;
$FORMS['menu_line_level1'] = <<<END <!-- пункт меню --> <tr> <td><a href="%link%">%text%</a></td> </tr> <!-- конец пункта меню --> END;
$FORMS['menu_line_level1_a'] = <<<END
<!-- активный пункт меню --> <tr> <td><a href="%link%"><b>%text%</b></a></td> </tr> <!-- конец активного пункта меню --> END; ?>
Мы уже знаем, что вместо %lines% система подставляет пункты меню с их HTML-обрамлением. Нам встретились новые макросы. Вместо %link% вставляется URL пункта меню, а вместо %text% ― текст (определяется в поле «название страницы»).
Теперь меню можно вставить в шаблон страницы макросом %menu%::
<html> <head> <meta name="description" content="%description%" /> <meta name="keywords" content="%keywords%" /> <title>%title%</title> <link href="style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/js/easy.php"></script> </head> <body> <!-- начало меню --> %menu% <!-- конец меню --> <h1>%header%</h1> %content%
</body> </html>
Шаблон готов.
Если вы хотите на каких-то страницах сайта выводить меню по другому шаблону, нужно создать еще один файл с шаблоном меню в той же папке. Например, menu2.tpl. Соответственно, при подключении меню к шаблону страницы вместо %menu% надо написать немного по-другому: %content menu('menu2')%.
Работа этого и других макросов подробно описана в текущей документации. Работа с ними строится точно по такому же принципу: вы разбиваете необходимый кусок HTML-шаблона на отдельные части, подставлявляете в соответствующие блоки нужных шаблонов, вставляете на место этого куска соответствующий макрос и он начинает работать.
Пользовательские макросы В шаблонах вы можете использовать не только макросы, входящие в состав системы UMI.CMS, но и собственные макросы. Вы можете создавать макросы двух типов:
Макросы, выводящие значение некоторой переменной (переменных). Примером могут служить рассмотренные выше макросы %title% и %keywords%.
Макросы, представляющие собой вызов PHP-функции. Вызов такого макроса имеет следующий вид: %<Имя класса> <Имя функции>()%, например %comments insert()%.
Чтобы создать макрос первого типа, например %my_string%, вам потребуется выполнить следующие действия:
Откройте модуль «Шаблоны данных».
Откройте редактирование нужного типа данных (например, «Раздел сайта\Страница контента»).
Создайте новую группу полей с любым названием.
В этой группе полей создайте новое поле c названием «Моя строка» и «идентификатором» «my_string».
Выберите тип поля «Строка».
В редактировании страницы контента заполните поле «Моя строка», которое появилось после того, как вы отредактировали тип данных.
Теперь при выводе этой страницы вы можете использовать макрос %my_string%, который будет выводить значение этого поля. Макрос %my_string% работает аналогично макросу %data getProperty(id,my_string,template)%, если все блоки шаблона /tpls/data/template.tpl содержат только вызов макроса %value%.
Подробно о том, какие типы полей можно использовать, вы можете прочитать в пользовательской документации к модулю «Шаблоны данных» по адресу help.umi-cms.ru
Если требуется создать макрос второго типа, вы можете использовать один их следующих двух способов.
Если новый макрос не будет входить в состав какого-либо модуля UMI.CMS и вызывать методы класса этого модуля, то можно использовать упрощенный порядок создания макроса. При этом достаточно открыть в папке /classes/modules/ файл custom.php и ввести исходный код PHP-функции, например:
<?php class custom { public function new_func() { ... код функции ... } }; ?>
После этого вы можете включать в шаблоны созданный макрос, например custom new_func(), который будет выполнять соответствующую PHP-функцию.
Если же новый макрос будет входить в состав одного из модулей UMI.CMS и обращаться к методам соответствующего класса, то для создания такого макроса необходимо выполнить следующие действия:
Откройте папку класса для того модуля UMI.CMS, в котором будет использоваться создаваемый макрос. Например, если макрос предназначен для использования на странице новостей, откройте папку /classes/modules/news.
В этой папке откройте файл __custom.php и введите исходный код PHP-функции, например:
<?php abstract class __custom_news { public function new_func() { ... код функции ... } }; ?>
Зарегистрируйте созданную функцию в реестре:
Откройте реестр. Для этого наберите в адресной строке браузера: http:/ваш_сайт/regedit/index.php. Если скрипт реестра не найден, запросите его в Службе Заботы о Клиентах; в корневой папке сайта создайте папку regedit и разместите в ней этот скрипт.
В реестре раскройте раздел modules, а в нем — подраздел, соответствующий нужному модулю (например, news). Далее раскройте подраздел func_perms. Вы увидите список групп прав доступа, которые можно назначить тому или иному пользователю.
Раскройте подраздел, соответствующий правам доступа, которые вы хотите предоставить к вашей функции. Например, если вы хотите предоставить посетителям вашего сайта доступ на чтение к вашей функции, откройте подраздел view. Добавьте вашу функцию в этот подраздел. Для этого в самой нижней, пустой строке подраздела введите имя функции (например, new_func) и произвольный комментарий.
Нажмите кнопку Сохранить.
Обновите парметры пользователя «Гость»: откройте модуль «Пользователи», затем откройте для редактирования данные пользователя «Гость» и нажмите кнопку Сохранить.
Теперь вы можете включать в шаблоны созданный макрос, например %news new_func()%, который будет выполнять соответствующую PHP-функцию.
Комментарии: 0 Просмотров: 8631
|