Опционально можно добавить ссылку на правила в «шапку» конференции (по умолчанию используется форум-ссылка на главной странице). В Prosilver можно также выбрать один из двух вариантов шаблона: с оглавлением сверху или сбоку.
Ссылки на правила имеют такой вид:
http://site.ru/rules/#cat1 — категория
http://site.ru/rules/#rule1.1 — пункт
http://site.ru/rules/#rule1.1.1 — подпункт
http://site.ru/rules/#rule1.1.1.1 — подподпункт
ДЕМО:
[удалено]
Редактирование правил осуществляется из администраторского раздела посредством мода «FAQ Manager» либо ручной правкой файла language/ru/help_rules.php. В текстах правил можно использовать html-тэги.
Заголовки пунктов (но не категорий) могут быть любыми, даже пустыми: на странице правил они не отображаются и нужны только для удобства ориентирования в «FAQ Manager». Удобнее всего для заголовка брать первые два-три слова из текста пункта.
Пункт, заголовок которого начинается с тильды ~, становится подпунктом к предыдущему пункту.
Пункт, заголовок которого начинается с двух тильд ~~, становится подподпунктом к предыдущему подпункту.
В «FAQ Manager» это выглядит так:
Если понадобятся подпункты без нумерации — их можно оформить в виде простого списка <ul> или <ol>. Но прямых ссылок на них и подсветки, естественно, не будет.
Код: Выделить всё
На конференции запрещается:
<ul style="padding-left: 20px">
<li>Пить.
<li>Курить.
<li>Материться.
</ul>
На конференции рекомендуется:
<ol type="a" style="padding-left: 25px">
<li>Писать грамотно.
<li>Писать кратко.
<li>Писать по делу.
</ol>
Код: Выделить всё
На конференции разрешается:
<ul style="list-style-type: none; padding-left: 10px">
<li id="rule1.1.1.1.1"><a href="#rule1.1.1.1.1">1.1.1.1.1</a>. То, что не запрещено.
<li id="rule1.1.1.1.2"><a href="#rule1.1.1.1.2">1.1.1.1.2</a>. То, что разрешено.
<li id="rule1.1.1.1.3"><a href="#rule1.1.1.1.3">1.1.1.1.3</a>. То, что запрещено, но очень хочется.
</ul>
В случае замены мода «Rules Page» этим модом файл language/ru/mods/help_rules_page.php, содержащий тексты правил, можно оставить неизменным. Надо его только переименовать в help_rules.php и переместить в language/ru/.
Использованы идеи из DasRules MOD и http://www.phpbb.com/rules. Основные отличия от известного мода «Rules Page» — подсветка, наличие подпунктов и (смею надеяться) лучшая читабельность.
========================
fix Если у вас не работают якоря ссылок на пункты правил
Открыть
styles/subsilver2/template/rules_body.html
Найти
Код: Выделить всё
<script type="text/javascript">
// <![CDATA[
var hilited_id = false;
function hilite(id) {
if (hilited_id && hilited_id != id) {
document.getElementById(hilited_id).className = '';
}
if (id.length > 0) {
document.getElementById(id).className = 'fragment';
hilited_id = id;
}
}
function add_hl_events() {
var links = document.getElementById('rules').getElementsByTagName('a');
for (i = 0; i < links.length; i++) {
if ((hashpos = links[i].href.indexOf('#')) >= 0) {
var evn = 'hilite(\'' + links[i].href.substr(hashpos + 1) + '\');'
+ (links[i].href.indexOf('#cat') >= 0 ? '' : ' return false;');
links[i].onclick = new Function('e', evn);
}
}
}
window.onload = function() {
hilite(location.hash.substr(1));
add_hl_events();
};
// ]]>
</script>
Код: Выделить всё
<script type="text/javascript">
// <![CDATA[
var fragHLed = '';
function fragHLload() {
fragHL(location.hash.substring(1));
}
function fragHL(frag) {
if (fragHLed.length > 0 && document.getElementById(fragHLed)) {
document.getElementById(fragHLed).className = '';
}
if (frag.length > 0 && document.getElementById(frag)) {
fragHLed = frag;
document.getElementById(frag).className = 'fragment';
}
}
function fragHLlink() {
if (document.getElementsByTagName) {
var an = document.getElementById('rules').getElementsByTagName('a');
for (i=0; i<an.length; i++) {
if (an.item(i).getAttribute('href').indexOf('#') >= 0) {
var fragment = an.item(i).getAttribute('href').substring(an.item(i).getAttribute('href').indexOf('#') + 1);
var evn = "fragHL('" + fragment + "')";
var fun = new Function('e', evn);
an.item(i).onclick = fun;
}
}
}
}
window.onload = function() {
fragHLload();
fragHLlink();
};
// ]]>
</script>