Изменения в шаблонной системе при переходе с версии 0.9.0 на 0.9.1
Разработка версии 0.9.1 заняла значительное время и в процессе работы над версией было внесено достаточное
количество изменений в шаблонную систему.
Несмотря на то, что изменений действительно много, вы можете достаточно быстро адаптировать ваш существующий
шаблон для работы с новой версией. При наличии навыков работы с HTML на адаптацию шаблона у вас уйдёт от 10 до 30 минут.
Список наиболее заметных изменений, произошедших в шаблонной системе:
- Комментарии вынесены в отдельный плагин (comments)
- Работа с учётными записями пользователей вынесена в отдельный плагин (uprofile)
- Созданы специальные страницы для обработки ошибки 404: Not found
- Создан специальный настроечный файл variables.ini (функционал из файла navigations.ini перенесён в него)
Для удобства представления изменений перед каждым именем файла добавляется специальный префикс:
- [NEW] - новый шаблон
- [EDIT] - изменения в существующем шаблоне
- [DEL] - удаление существующего файла
- [MOVE] - существующий файл перенесён
Список изменённых шаблонов/файлов
[EDIT] categories.tpl
- добавился блок [if_link]..[/if_link] - содержимое блока показывается в случае, если элемент меню должен быть ссылкой (см. параметр "Режим отображения ссылок в меню категорий" в настройках категорий)
[EDIT] usermenu.tpl
- добавилась переменная {form_action}, её необходимо использовать в качестве action'а для формы авторизации
- переменная {request_uri} переименована в {redirect}, её необходимо использовать в качестве значения для переменной redirect в форме авторизации
- добавилась переменная {logout_link}, её необходимо использовать для ссылки на выход (logout)
- удалён блок [login-err]..[/login-err]. Теперь в случае ошибки авторизации вся информация отображается в новом шаблоне login.tpl
[EDIT] news.short.tpl
- блок [link]..[/link] переименован в [full-link]..[/full-link]
[EDIT] news.full.tpl
- добавлен блок [more]..[/more], его необходимо устанавливать в месте разделения короткой и длинной новостей. логика работы блока: если включена поддержка "Расширенного режима для разделения короткой/полной новостей" (настройки системы => новости) и пользователь указал свой текст разделителя, то выводится пользовательский разделитель. Иначе - выводится содержимое этого блока.
- убран блок [comheader]..[/comheader], теперь вся информация для комментариев выводится плагином comments. для работы комментариев в шаблон необходимо добавить переменную {plugin_comments} в место, где должны отображаться комментарии
[MOVE] print.tpl
print.tpl => news.print.tpl
[EDIT] main.tpl
- убрана переменная {metatags}, на её место пришла переменная {htmlvars} (на её месте отображаются не только мета-теги, но и подключаются необходимые JS/CSS библиотеки, включая те, которые подгружают плагины)
[EDIT] search.table.tpl
- невидимое (hidden) input-поле action больше не нужно
- переименованы языковые переменные: author => search.filter.author, category => search.filter.category, date => search.filter.date, search => search.submit, found => search.found (т.е. теперь вместо {l_author} надо писать {l_search.filter.author})
- убраны переменные {padeg1}, {padeg2}, {count_all}
Добавлены следующие элементы:
- переменная {form_url}, её необходимо использовать в качестве action'а для формы
- языковые переменные {l_search.found}, {l_search.notfound}
- переменная {count} (кол-во найденных новостей)
- блок [found]..[/found] - отображается только в случае, если что-то нашли (в него удобно класть отображение информации о кол-ве найденных новостей)
- блок [found]..[/found] - отображается только в случае, если что-то нашли (в него удобно класть отображение информации о кол-ве найденных новостей)
- блок [notfound]..[/notfound] - отображатеся только в случае, если ничего найти не удалось
- блок [error]..[/error] и языковая переменная {l_search.error} - отображается в случае, если неверно указаны входные параметры (обычно - если не задан текст для поиска)
[EDIT] search.form.tpl
- добавилась переменная {form_url}, её необходимо использовать в качестве action'а для формы авторизации
- невидимое (hidden) input-поле action больше не нужно
[MOVE] search.entries.tpl [необязательный шаблон]
search.entries.tpl => news.search.tpl
// Шаблон для отображения найденных новостей (в списке). При его отсутствии используется шаблон news.short.tpl
[EDIT] lostpassword.tpl
- переменная {php_self} заменена на {form_action} (используется в качестве action для тега <form>
- удалена переменная action из формы
[EDIT] registration.tpl
- добавилась переменная {form_action}, её необходимо использовать в качестве action'а для формы авторизации (ранее в некоторых случаях там использовалась переменная {php_self} либо {register_link}. обе переменные сейчас недоступны)
- невидимое (hidden) input-поле action больше не нужно
[NEW] login.tpl
// Отдельная форма авторизации.
Отображается на сайте при заходе на URL логина, а также при неправильном указании логина/пароля при авторизации через usermenu.tpl
Допустимые переменные:
- {form_action} - URL формы-обработчика
- {redirect} - значение, которое необходимо передать в скрытом поле ввода redirect, позволяет вернуться обратно на страницу (внутри сайта), с которой пользователь авторизовывался
В форме должны использоваться переменные:
- username - логин пользователя
- password - пароль пользователя
[NEW] 404.internal.tpl
// Шаблон страницы для ошибки "404.Объект не найден" (шаблон для отображения внутри общего шаблона main.tpl)
[NEW] 404.external.tpl
// Шаблон страницы для ошибки "404.Объект не найден" (шаблон для отображения вместо общего шаблона)
// Рекомендуемый размер страницы - не менее 1kb, иначе некоторые браузеры не будут отображать содержимое страницы.
[MOVE] comments.show.tpl
comments.show.tpl => plugins/comments/comments.show.tpl
- Для правильной отработки ссылки на цитирование необходимо в блоке [quote]..[/quote] ссылку прописывать так (т.е. добавить return false;):
[quote]<a href="" onclick="quote('{author}'); return false;" title="{l_quote}"> {l_quote}</a>[/quote]
[MOVE] comments.form.tpl
comments.form.tpl => plugins/comments/comments.form.tpl
- изменён блок JS кодов, отвечающих за добавление комментариев через AJAX, необходимо этот блок взять из стандартной поставки. Также из стандартной поставки желательно взять заголовочную часть (идёт сразу за JS кодом) либо сделать по аналогии:
<div id="new_comments"></div>
<form id="comment" method="post" action="{post_url}" name="form" [ajax]onsubmit="add_comment(); return false;"[/ajax]>
<input type="hidden" name="newsid" value="{newsid}" />
<input type="hidden" name="referer" value="{request_uri}" />
- добавилась переменная {post_url}, её необходимо использовать в качестве action'а для формы авторизации
- добавилась переменная {request_uri}, её значение необходимо передавать в hidden-переменную referer для корректной переадресации обратно к новости при добавлении комментария и отключении AJAX режима:
<input type="hidden" name="referer" value="{request_uri}" />
- теперь для текстового блока <textarea> необходимо указывать id="content":
<textarea name="content" id="content" style="width: 95%;" rows="8"></textarea>
[NEW] plugins/comments/comments.internal.tpl
// Шаблон для отображения блока комментариев - шаблон, отображаемый внутри новости (шаблон news.full.tpl)
Поддерживаются следующие элементы:
- [comheader]..[/comheader] - блок выводится в случае, если в новости уже есть комментарии
- {entries} - список комментариев (для отображения используется шаблон comments.show.tpl)
- {more_comments} - ссылка "Читать все комментарии" (отображается в случае, если комментарии к новости не помещаются на первой странице внутри новости)
- {form} - форма добавления комментариев
[NEW] plugins/comments/comments.external.tpl
// Шаблон для отображения блока комментариев на странице плагина комментариев (отображение второй и далее страницы комментариев к новости)
Поддерживается тот же набор переменных, что и в шаблоне comments.internal.tpl, а также дополнительные элементы:
- {link} - ссылка на новость, к которой показываются комментарии
- {title} - название новости, к которой показываются комментарии
[EDIT] bbcodes.tpl
// Шаблон отвечает за вывод BB кодов в форме добавления комментариев.
В связи с тем, что некоторые новые браузеры некорректно поддерживают конструкцию вида:
<a href="javascript:insertext('[b]','[/b]', '{area}')" title='{l_qt_bold}'> ...
в шаблоне была повсеместно проведена замена на код:
<a onclick="insertext('[b]','[/b]', '{area}')" title='{l_qt_bold}'> ...
а также содержимое всего файла bbcodes.tpl взять в блок:
<span id="tags">
...содержимое...
</span>
Рекомендуем использовать в своём шаблоне файл из стандартной поставки.
[MOVE] error.tpl
error.tpl => plugins/comments/comments.error.tpl
// Шаблон используется при отображении ошибки добавления комментария в AJAX режиме
В шаблоне изменена логика работы кнопки "Закрыть", рекомендуем в вашем шаблоне использовать файл из поставки.
[MOVE] users.tpl
users.tpl => plugins/uprofile/users.tpl
- Языковые переменные перенесены в плагин uprofile, теперь вместо {l_var} нужно писать {l_uprofile:var}
Пример: вместо {l_icq} нужно писать {l_uprofile:icq}
[MOVE] profile.tpl
profile.tpl => plugins/uprofile/profile.tpl
- Языковые переменные перенесены в плагин uprofile, теперь вместо {l_var} нужно писать {l_uprofile:var}
Пример: вместо {l_icq} нужно писать {l_uprofile:icq}
- добавилась переменная {form_action}, её необходимо использовать в качестве action'а для формы авторизации
- в форме необходимо добавить скрытое поле:
<input type="hidden" name="plugin_cmd" value="apply" />
[MOVE] static.tpl
static.tpl => static/default.tpl
[DEL] activation.tpl
Шаблон более не требуется.
[DEL] addnews.tpl
Шаблон более не требуется.
[DEL] quicktags.tpl
Шаблон более не требуется.
[NEW] redirect.tpl
// Шаблон страницы переадресации (используется в случае, когда пользователя надо о чём-то проинформировать и вернуть его обратно)
Допустимые переменные:
- {title} - заголовок страницы
- {message} - сообщение для пользователя
- {link} - URL страницы-переадресации
- {linktext} - текст, отображаемый на URL'е переадресации
[DEL] navigation.ini
Настройки из этого файла перенесены в файл variables.ini (блок [navigation])
[NEW] variables.ini
Набор общих переменных, которые не были вынесены в отдельные шаблоны.
Пример заполнения файла с комментариями:
[navigation]
prevlink = "<a href='%link%'>%page% "
nextlink = "<a href='%link%'>%page%</a> "
current_page = " <b>[%page%]</b> "
link_page = "<a href='%link%'>%page%</a> "
dots = " ... "
[messages]
msg.error = "<div class='msge'><img src='{skins_url}/images/error.gif' hspace='10' />{l_msge_error} {text}</div>"
msg.error_info = "<div class='msge'><img src='{skins_url}/images/error.gif' hspace='10' />{l_msge_error} {text}</div><div class='msgi'><img src='{skins_url}/images/info.gif' hspace='10' />{l_msgi_info} {info}</div>"
msg.common = "<div class='msgo'><img src='{skins_url}/images/msg.gif' hspace='10' />{text}</div>"
msg.common_info = "<div class='msgo'><img src='{skins_url}/images/msg.gif' hspace='10' />{text}</div><div class='msgi'><img src='{skins_url}/images/info.gif' hspace='10' />{l_msgi_info} {info}</div>"
msg.info = "<div class='msgi'><img src='{skins_url}/images/info.gif' hspace='10' />{l_msgi_info} {info}</div>"
[bbcodes]
;url.class.default = ""
;url.class.force = ""
;url.target.default = ""
;url.target.force = ""
;url.class.default = ""
;url.class.force = ""
attach.format = "<a href='{url}'>{title} ({size})</a>"
attach.nonexist = "[wrong or deleted attach]"
//
// Версия от: 02:27 13.11.2009
// Статус: разработка завершена, возможно нахождение некоторых мелких ошибок
//