Помощник
Здравствуйте, гость ( Вход | Регистрация )
Разбираем шаблонизатор системы |
Z1dan3 |
2009-05-11, 10:45
Сообщение
#1
|
|
Invision Power Группа: Дизайнеры Сообщений: 268 Регистрация: 2008-12-13 Из: Украина Репутация: нет Всего: 14 |
И так господа, предлагаю разобраться в шаблонизаторе этой замечательнйо системы . Урок будет состоять из несольких частей и потребует от вас усилий, прочитав это, человек имеющий даже мизерные знания в вёрстке, поймет как создаються шаблоны .
<u>Сразу нужно отметить, что в Eleanor CMS предусмотено ДВА шаблонизатора: HTML и PHP</u>. Первый полезен для простых файлов шаблона; второй же для более изощренного и более гибкого использования всех наворотов верстальщика. Тип шаблонизатора определяется типом файла, если найдено два файла для обеих шаблонизаторов (например Base.php и Base.html), предпочтение отдается HTML шаблонизатору (Base.html). На шаблонизаторе PHP я детально останавливаться не буду - использует он синтаксис PHP и тем, кто уже сталкивался с такими шаблонизаторами все должно быть предельно понятно. Детальнее рассмотрю HTML шаблонизатор. 1. Переменные в шаблонизаторе выделяются в фигурные скобки. Например {title}, {text}.. И вставляются в нужных местах шаблона. 2. Логические выражения имеют синтаксис [переменная]ДА[-переменная]НЕТ[/переменная]. При этом секцию [-переменная] можно опустить. Например:
Логика работы этого куска очень просто: если заголовок есть - он будет выведен, если он пустой - будет выведена строка "Заголовка нет". Имена переменных НЕ чувствительны к регистру. Важно отметить, что в обоих шаблонизаторах есть несколько нестандартных переменных: <?php echo$HEAD?> (всегда большими буквами) - сгенерированная секция <head><?php echo$HEAD?></head>. Содержит meta атрибуты, стили, RSS ссылки. {module} (всегда маленьки буквами) - содержимое, которое сгенерирует модуль. Обе этих переменных не поддерживают логические условия. Т.е. Вы не можете записать [module]...[/module] Также еще есть переменные [blocks_ТипБлока][/blocks_ТипБлока] чтобы можно было узнать, есть ли на странице блоки какого-то определенного типа. И так рассмотрим детальнее это на примерах: 1) <u>index.php</u>: Пожалуй начнем с разбора аргументов и функций: {%BLOCKS admin%} - верхняя админ панель.Аргумент может быть установлен в любом удобном месте, желательно конечно сверху. {%BLOCKS top_menu%} - верхнее меню с ссылкамии (Главная,FAQ,Новости,Аккаунт). {%BLOCKS center_up%} - верхние центральные блоки. {module} - модуль, загружаемый на главной странице (центр. блоки) - стандартный загрузочный модуль - Новости. {%BLOCKS center_down%} - нижние центральный блоки. {%BLOCKS right%} - правые блоки. {%BLOCKS left%} - левые блоки. {%STATIC login%} - блок статистического логина (может быть слева и\или справа). {%BLOCKS bottom_menu%} - нижнее меню с ссылками (Главная,FAQ,Новости,Аккаунт). <?=$copyright?> - копирайт системы. {page status} - время генерации. А теперь разберем конкретный пример на шаблоне Uniel:
В системе есть функция проверки: если в модуле нету правых блоков, то центр. блоки автоматически должены растягиваться на 100%. За этот параметр отвечает функция [blocks_right] [/blocks_right]. А теперь понятнее: <div id="maincol[blocks_right]R[/blocks_right]"> Див maincol будет грузиться если правые блоки отсутсвуют. Див maincolr будет грузиться если правые блоки присутствуют. Так же необходимя вставлять этот проверочный аргумент когда в шаблон вводяться правые блоки: [blocks_right]<div id="rightcol">{%BLOCKS right%}</div>[/blocks_right] . 2) <u>Base.html</u>: Аргументы: {title} - заголовок (новости). {whopost} - кто разместил (ник). {date} - дата размещения. {comments} - кол-во коментариев к новости. {category} - категория новости. {content} - собственно содержание новости, тобишь контент. {rating} - рейтинг новости. {more} - ссылка "подробнее" (переход к полной новости). Кокретный пример:
Аргумент {comments} должен выводиться с проверкой как и правые блоки, т.е. [comments]{comments}[/comments]. 3) <u>Base--full.php</u>: Аргументы: <?=$title?> - заголовок (новости). <?=$whopost?> - кто разместил (новость). <?=$date?> - дата публикации. <?=(isset($category) ? $category : '')?> - категория (новости). <?=$content?> - содержание (новости). <?php if(!empty($tags)): ?><br /><br /><?php echo $Mainclass->lang['main']['tags'].': '.$tags; endif?> - теги (новости). <?php if($moder): ?><?=$moder?><?php endif?> - модераторские опции (изменение,удаление (новости)). <?=$rating?> - рейтинг (новости). 4) <u>Comment.php</u>: Аргументы: <?=$comment_id?> - номер коментария. <?=$avatar?><?php if($a_width):?>width="<?=$a_width?>" <?php endif?><?php if($a_height):?>height="<?=$a_height?>" <?php endif?> - автар пользователя + проверка высоты и ширины аватара. <?=$name?> - имя пользователя. <?=$link_to?> - ссылка на коментарий. <?=$text?> - собственно сам коментарий. <?=$signature?> - подпись пользователя. <?php if ($profile):?><a href="#" onclick="if (act_editor) eval(act_editor+'.SetSelectedText(\'<b><?=$name?>,\')'); return false;"><?=$name?></a><?php else:?><?=$name; endif;?><?=$lang['writes'];?> - вставить ник в форму поста коментария. <?php echo $dates; - дата коментария. if ($profile) echo ' | <a href="'.$profile.'">'.$lang['profile'].'</a>'; - ссылка на профиль. if ($icq) echo ' | ICQ: '.$icq; - icq пользователя. if ($yahoo) echo ' | '.$yahoo; - yahoo пользователя. if ($msn) echo ' | '.$msn; - msn пользователя. if ($website) echo ' | '.$website; - сайт пользователя. if ($ip) echo ' | '.$ip; - ip адрес пользователя. ?> <?php if ($moder):?> <a href="#" onclick="return <?=$u?>.Delete(<?=$comment_id?>);"> - удалить коментарий <a href="#" onclick="return <?=$u?>.Edit(<?=$comment_id?>);"> - редактировать коментарий <?php endif?> <?php if ($answer_to):?> <a href="#" onclick="return <?=$u?>.AnswerTo(<?=$comment_id?>,<?=$n?>);"> - цитата коментария. <?php endif?> <span style="color:#FF0000">Внимание! Аргументы с внедрением php элементов (начинаються с <?php) нельзя разрывать дивами, т.е. они должны быть одним целым, пример:
Во всех файлах PHP шаблониазтора переменные выводятся как <?=$varname?>, кроме переменных {module}, <?php echo$HEAD?> и блоков. Все переменные ХТМЛ шаблониазтора выводятся как {varname}. Пример (ввода шаблона): {theme} для HTML и <?=$theme?> для PHP. И так господа спасибо за внимание. Если вы прочитали этот топик, то вы хотите чему-то научиться и сделать это самому, а это меня радует .В будущем статья будет дополняться\обновляться. Если возникли какие-нибудь вопросы, то с удовольствием на них отвечу.</b> Обновил до 5 рцшки. Сообщение отредактировал Z1dan3 - 2010-12-10, 15:16 |
|
|
||
Z1dan3 |
2009-05-12, 14:06
Сообщение
#2
|
|
Invision Power Группа: Дизайнеры Сообщений: 268 Регистрация: 2008-12-13 Из: Украина Репутация: нет Всего: 14 |
Добавлена еще одна особенность шаблонизатора, каксающаяся функции вывода шаблона ( {theme} и <?=$theme?> ).
Сообщение отредактировал Z1dan3 - 2009-05-12, 14:06 Одобрили: NoIndex
|
|
|
||
SiTiS |
2009-07-26, 14:39
Сообщение
#3
|
|
Любитель Группа: Пользователи Сообщений: 215 Регистрация: 2008-12-14 Из: Россия, Минусинск Репутация: нет Всего: 2 |
Заметил что система не может распределять заголовки типа: <h1></h1>, <h2></h2> и тд. Всё идет одной высотой, стандартной. Как это исправить?
|
|
|
||
Alexander |
2009-07-26, 19:04
Сообщение
#4
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Что-то я не понял: проблема в системе или в CSS? |
|
|
||
SiTiS |
2009-07-27, 7:28
Сообщение
#5
|
|
Любитель Группа: Пользователи Сообщений: 215 Регистрация: 2008-12-14 Из: Россия, Минусинск Репутация: нет Всего: 2 |
Я точно не знаю... Да, скорее в CSS. Проблема в том что при заключении строчки текста в заглавные теги, типа <h1> <h2> и тд., после сохранения, высота текста у всех одинаковая, при разных значениях заглавия!
|
|
|
||
SiTiS |
2009-09-30, 17:22
Сообщение
#6
|
|
Любитель Группа: Пользователи Сообщений: 215 Регистрация: 2008-12-14 Из: Россия, Минусинск Репутация: нет Всего: 2 |
Atix, зайди на http://cmsglobal.ru/
блок "привет", выдает такую бяку... попробовал как ты говорил и как Skyff, но вот рамка все ломает! Да, именно так! Но что бы оно выводилось не в новость, а отдельным блоком, Вот рамку как прям на твоем скрине. |
|
|
||
Atix |
2009-09-30, 19:06
Сообщение
#7
|
|
Любитель Группа: Дизайнеры Сообщений: 322 Регистрация: 2008-12-12 Из: Россия Репутация: нет Всего: 14 |
Это добавь в block.css
Цитата #my_blocktype1 { margin-bottom: 6px; width: 528px; background: url(../images/my_block.png) no-repeat; padding-left: 11px; margin-left: -1px; margin-top: -7px; padding-top: 9px; } #my_dbottom { background: url(../images/my_block2.png) no-repeat bottom; padding-bottom: 30px; margin-left: -11px; padding-left: 12px; padding-right: 10px; } Эти 2 картинки кинь в папку images в твоей теме оформления. images.rar ( 1.53 килобайт ) Скачиваний: 11 Потом создай блок, выбери Текстовый блок. Вставь
Потом перейди на опции и поставь галочку "Не применять оформление:" Сообщение отредактировал Atix - 2009-09-30, 19:30
Прикрепленные файлы
Одобрили: SiTiS
|
|
|
||
Hummer |
2009-10-13, 17:27
Сообщение
#8
|
|
Любитель Группа: Eleanor user Сообщений: 174 Регистрация: 2009-03-23 Из: Калининград Репутация: нет Всего: 2 |
AddCommets.php Сделайте инфу
Сообщение отредактировал Hummer - 2009-10-13, 17:27 |
|
|
||
Skyff |
2009-10-13, 18:50
Сообщение
#9
|
|
Опытный Группа: Eleanor user Сообщений: 928 Регистрация: 2009-02-08 Из: Литва Репутация: нет Всего: 4 |
Воще я думаю что все ФАКИ надо в одном месте держат а то искать не каждый найдет пока не тыкнешь, и правильно ведь все по форуму разбросано
|
|
|
||
Hummer |
2009-10-25, 18:41
Сообщение
#10
|
|
Любитель Группа: Eleanor user Сообщений: 174 Регистрация: 2009-03-23 Из: Калининград Репутация: нет Всего: 2 |
а будут работать теги (новости) в коротких новостях?
|
|
|
||
termit |
2009-10-29, 19:28
Сообщение
#11
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Помогите. Не могу найти файл оформления меню сайта...
|
|
|
||
main |
2009-12-30, 2:20
Сообщение
#12
|
|
Заглянувший Группа: Eleanor user Сообщений: 14 Регистрация: 2009-12-28 Из: Ростов Репутация: нет Всего: нет |
хороший урок только для меня не очень привычно.....
намного удобнее открыть стандартный шаблон и посмотреть все значения самому и осозновать их смысл и сразу же пробовать на практике... Если PHP непонимают то пусть с английским всй соотносят!!!!!! А вобще молодец что такого рода уроки создаёшь... поддерживаю Сообщение отредактировал main - 2009-12-30, 2:21 |
|
|
||
NullMachine |
2010-02-08, 12:31
Сообщение
#13
|
|
Любитель Группа: Eleanor user Сообщений: 154 Регистрация: 2010-01-01 Из: Саранск Репутация: нет Всего: нет |
Такой вопрос, на главной странице выводится модуль новости и модуль опросы, почему при выводе модуля опросы над ним есть заголовок с названием выводимого модуля, а у модуля новостей заголовка нет. Если это так задумано, то как мне вывести заголовок модуля у новостей.
И еще какой файл отвечает за оформление выводимого модуля на главной странице. Есть Base, но он оформляет только выводимый контент модуля , а хотелось иметь что то вроде TableOpenNamemodule TableCloseNamemodule который будет отвечать за вывод модуля целиком. Если уже есть такое, то скажите какой файл создать. Сообщение отредактировал NullMachine - 2010-02-08, 12:46 |
|
|
||
Maximkaboom |
2010-05-14, 0:57
Сообщение
#14
|
|
Опытный Группа: Eleanor user Сообщений: 766 Регистрация: 2010-04-08 Версия системы: RC5 Репутация: нет Всего: 1 |
А как вывести в новости иконку категории, к которой она принадлежит?
|
|
|
||
Alexander |
2010-05-15, 14:56
Сообщение
#15
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Есть поле 'image' - его и выводите.
|
|
|
||
termit |
2010-05-23, 0:38
Сообщение
#16
|
|
Опытный Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: нет Всего: 11 |
Помогите.
1.Какие файлы отвечают за отображение коментариев? 2.Какие файлы отвечают за отображение информации о пользователе (напримет на странице вида /index.php?module=account&info=ник) Сообщение отредактировал termit - 2010-05-23, 0:38 |
|
|
||
Maximkaboom |
2010-06-03, 18:46
Сообщение
#17
|
|
Опытный Группа: Eleanor user Сообщений: 766 Регистрация: 2010-04-08 Версия системы: RC5 Репутация: нет Всего: 1 |
|
|
|
||
Гость_VCITY1_* |
2010-09-30, 19:45
Сообщение
#18
|
|
Гости |
пытаюсь на основе этого шаблона переделать внешний вид все просмотрел ну во незадача какой файл отвечает за Блоги подскажите пожалуйста .
|
|
|
||
sanes |
2010-09-30, 20:08
Сообщение
#19
|
|
Аноним Группа: Пользователи Сообщений: 1 180 Регистрация: 2008-12-29 Из: Волгоград Репутация: нет Всего: 4 |
templates/Uniel/Classes/Blogs.php
|
|
|
||
Phoenix84 |
2010-10-01, 14:14
Сообщение
#20
|
|
Любитель Группа: Eleanor user Сообщений: 231 Регистрация: 2010-03-31 Версия системы: RC5 Репутация: нет Всего: нет |
Цитата 1.Какие файлы отвечают за отображение коментариев? 2.Какие файлы отвечают за отображение информации о пользователе (напримет на странице вида /index.php?module=account&info=ник) Может и не вовремя, но: 1) /templates/шаблон/classes/comments.php 2)/modules/account/user/index.php |
|
|
||
Текстовая версия | 0.0537 сек. 12 запросов GZIP включен Сейчас: 2024-09-27, 6:00 |