I live ExBB and CMS Limbo! » Форумы и сайты » ExBB Community » Наведение порядка в шаблонах

Страниц (1): [1]
 

1. технарь - 11 марта 2018 — 09:30 - перейти к сообщению
Вчера случайно наткнулся на факт, что очень много привязок к дефолтному шаблону наглухо вшито в код движка. Так же в самих шаблонах часто прописаны фиксированные пути, что мешает делать клоны шаблонов. Честно говоря я слегка в шоке. А потому задвигаю все дела на потом и плотно занимаюсь именно этим...

Выбор какой шаблон использовать прописан в fm.class.php в функции _Locale()
На выходе функции получаем константу DEF_SKIN которую и нужно прописать везде, где стиль наглухо прописан в код.
2. технарь - 11 марта 2018 — 09:36 - перейти к сообщению
Столкнулся с проблемой вставки DEF_SKIN в шаблоны.
Обычно что бы вставить в шаблон переменную мы просто обрамляем её фигурными скобками
 Цитата:
<span style="margin-left:15px;">{$fm->_Banner}</span>

В случае с DEF_SKIN такой метод не работает.
Шаблонизатор после открытой фигурной скобки скорее всего ищет признак переменной $ а тут её нет. Как быть пока не знаю. Огорчение

Я вроде где-то встречал, как такое вставлять, но сейчас не могу найти...
3. технарь - 11 марта 2018 — 13:15 - перейти к сообщению
Короче способ передать DEF_SKIN я так и не нашел, а потому проблему решил по другому...

В файле fm.class.php после строки
PHP:
define("DEF_SKIN",$defskin);

добавил строку, вводящую новую переменную, которая является псевдонимом DEF_SKIN
PHP:
$this->def_skin = DEF_SKIN;

затем чуть ниже в том же файле после строки
PHP:
include('./language/'.DEF_LANG.'/lang_front_all.php');

я добавил подключение языкового файла из шаблона, т.к. понял что он необходим
PHP:
include('./templates/'.DEF_SKIN.'/language/'.DEF_LANG.'.php');


После этого в папке с шаблоном создал новую директорию language где создал файл russian.php с таким содержимым
PHP:
<?php if (!defined('IN_EXBB')) die('Hack attempt!');

?>


Затем в файле topic.php в двух местах заменил текст InvisionExBB текстом '.DEF_SKIN.'

Строки InvisionExBB встречаются в файле boardinfo.php и в файлах данных пользователей - там ничего менять не нужно.
Так же не нужно ничего менять в файлах frontindex.php в модулях belong и chat
4. технарь - 11 марта 2018 — 13:30 - перейти к сообщению
Начинаем править сам шаблон...

Для начала некоторые файлы нужно отредактировать руками, т.к. там нестандартные вставки.

Открываем файл all_header.tpl в котором ищем строку
PHP:
<link rel="stylesheet" href="./templates/InvisionExBB/style.css" type="text/css">

которую меняем строкой
PHP:
<link rel="stylesheet" href="./templates/{$GLOBALS['fm']->def_skin}/style.css" type="text/css">


Затем в файлах

news_add.tpl
pm_new.tpl
post_addnew.tpl
post_edit.tpl
post_fastedit.tpl
post_form.tpl
post_reply.tpl

в самом верху ищем строки
PHP:
include('./templates/InvisionExBB/form_code.tpl');
include('./templates/InvisionExBB/smile_map.tpl');

которые заменяем строками
PHP:
include('./templates/'.DEF_SKIN.'/form_code.tpl');
include('./templates/'.DEF_SKIN.'/smile_map.tpl');


После этого можно запускать глобальный поиск по всем файлам шаблона текста InvisionExBB и заменять его текстом {$fm->def_skin}

Теперь файлы шаблона не привязаны жёстко к названию папки в которой они лежат. Можно делать копию текущего скина, сменить название папки и вот вам новый рабочий стиль...
5. технарь - 11 марта 2018 — 13:45 - перейти к сообщению
Хочу пояснить зачем я в шаблон добавил папку с языковыми файлами.
Дело в том, что в процессе адаптации стиля под свой вкус пользователь хочет добавить свои элементы интерфейса. Текстовые переменные обычно дописывали в базовый языковой файл, а это с моей точки зрения неверно, т.к. все особенности шаблона должны оставться в папке шаблона - только в этом случае он будет перемещаемым.

Powered by ExBB v1.1.180311