1. Установка шаблона JBlank
Думаю тут описывать не стоит, обычная установка все с этим справятся. Скачать шаблон как вы наверно знаете можно на сайте jblank.pro или же скачать архив из github.
2. Подготовка.
Мы установили шаблон, применили и видим его в "действии".
Теперь давайте отчистим все что сейчас выводится в шаблоне + базовый CSS.
Переходим в index.php шаблона и удаляем все что находится в теге body. Теперь главный файл шаблона имеет следующий вид.
<?php /** * J!Blank Template for Joomla by JBlank.pro (JBZoo.com) * * @package JBlank * @author SmetDenis <admin@jbzoo.com> * @copyright Copyright (c) JBlank.pro * @license http://www.gnu.org/licenses/gpl.html GNU/GPL * @link http://jblank.pro/ JBlank project page */ defined('_JEXEC') or die; // init $tpl helper require dirname(__FILE__) . '/php/init.php'; ?><?php echo $tpl->renderHTML(); ?> <head> <jdoc:include type="head" /> </head> <body class="<?php echo $tpl->getBodyClasses(); ?>"> </body> </html>Теперь подчистим базовые стили в less файле который расположен тут
сайт\templates\jblank\less\template.lessУдаляем стили для body
body { background: #F0F0F0; margin: 0; padding: 0; .component-wrapper { padding: 30px 50px 50px; margin: 30px auto; background: #fcfcfc; border: 1px solid #aaa; .size(800px, 'auto'); .box-shadow(0 3px 10px #bbb); .border-radius(6px); .gradient(#ddd, #fff); } }Если не используем media запросы тоже удаляем их
@media (min-width: 768px) { @import "media/768.less"; } @media (min-width: 992px) { @import "media/992.less"; } @media (min-width: 1200px) { @import "media/1200.less"; } @media screen and (-webkit-min-device-pixel-ratio: 1.5), screen and (max--moz-device-pixel-ratio: 1.5) { @import "media/retina.less"; }Кстати, все файлы для шаблона подключаются в init.php он расположен тут:
сайт\templates\jblank\php\init.phpЕго тоже можно немного подчистить, например если не используется верстка для доп. устройств. Открываем init.php и удаляем:
// mobile detect using (just for example!) if ($tpl->isMobile()) { $tpl->css('media-mobile.less'); // css only for mobiles } elseif ($tpl->isTablet()) { $tpl->css('media-tablet.less'); // css only for tablets }На данный момент это нам не нужно, так зачем ему там быть. Точно так же можно сделать и с мета тегами
'<meta name="google-site-verification" content="... google verification hash ..." />', '<meta name="yandex-verification" content="... yandex verification hash ..." />',Если вы подтверждаете сайты через файлы в корне сайта тогда эти 2 тега тоже можно удалить.
Так же в файле:
сайт\templates\jblank\templateDetails.xmlудаляем 2 позиции по умолчанию.
<position>pre_component</position> <position>post_component</position>
3. Подключение "дополнений"
Не стал ни чего придумывать и решил сделать немного верстки с uikit. Скачиваем архив с сайта, в архиве 3 папки.
Из папки CSS берем например файл uikit.gradient.min.css и переносим его в наш шаблон в папку:
сайт\templates\jblank\cssДалее переносим папку со шрифтами в корень нашего шаблона
сайт\templates\jblank\
После открываем файл конфигурации:
сайт\templates\jblank\templateDetails.xmlИ вписываем новую папку которую мы скопировали в шаблон - fonts
С JS файлом uikit.min.js делаем все тоже самое что и с CSS только переносим в:
сайт\templates\jblank\jsТеперь нам осталось подключить css и js файлы, для этого открываем опять init.php и делам подключение как на скриншоте:
4. Верстаем
Рассказывать о всех возможностях uikit я не буду, все сами можете прочитать на их сайте. Открываем файл index.php и вписываем в тег body следующее:
<div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom"> <nav class="uk-navbar uk-margin-large-bottom"> <a class="uk-navbar-brand uk-hidden-small" href="<?= $tpl->baseurl ?>">J!Blank</a> <jdoc:include type="modules" name="top-menu" style="no" /> </nav> </div>Сделали ссылку(бренд) на главную и объявили свою позицию которую нужно так же вписать в файл конфигурации:
сайт\templates\jblank\templateDetails.xmlв <positions> вписываем <position>top-menu</position> и получаем
<positions> <position>top-menu</position> </positions>Смотрим в браузере что у нас получилось и видим:
Теперь выведем модуль меню в нашу первую позицию и увидим что у нас беда не то что мы хотим получить
Что бы получить результат как в демо uikit. Нам нужно переопределить шаблон модуля меню, а для этого в папке
сайт\templates\jblank\htmlСоздаем папку mod_menu а в нее копируем файл из самого модуля:
\modules\mod_menu\tmpl\default.php
И переименовываем его сразу в uikit.php. Теперь открываем и дописываем ul стили:
Теперь проверяем и не видим ни какого результата т.к нужно этот шаблон выбрать в модуле меню - выбираем и сохраняем
Теперь если проверим все гуд, но ссылка не выделяется активной
нужно опять немного поправить шаблон меню uikit.php открываем его и изменяем класс как на картинке
Теперь меню имеет нормальный вид.
Теперь выведем контент и заготовим еще один блок. Открываем index.php и после тега nav вставляем следующее:
<div class="uk-grid" data-uk-grid-margin> <div class="uk-width-medium-3-10"> <jdoc:include type="modules" name="left-block" style="xhtml" /> </div> <div class="uk-width-medium-7-10"> <?php if ($tpl->isError()) : ?> <jdoc:include type="message" /> <?php endif; ?> <jdoc:include type="component" /> </div> </div>В файле конфигурации объявляем новую позицию и код имеет следующий вид
<positions> <position>top-menu</position> <position>left-block</position> </positions>Переходим в менеджер модулей и в новую позицию выводим например форму авторизации? переходим на сайт и видим:
Сразу можно заменить маленькую проблему, если сейчас отключить модуль авторизации верстка по плывет.
Исправить это можно следующим образом - index.php имеет вид:
<?php /** * J!Blank Template for Joomla by JBlank.pro (JBZoo.com) * * @package JBlank * @author SmetDenis <admin@jbzoo.com> * @copyright Copyright (c) JBlank.pro * @license http://www.gnu.org/licenses/gpl.html GNU/GPL * @link http://jblank.pro/ JBlank project page */ defined('_JEXEC') or die; // init $tpl helper require dirname(__FILE__) . '/php/init.php'; ?><?php echo $tpl->renderHTML(); ?> <head> <jdoc:include type="head" /> </head> <body class="<?php echo $tpl->getBodyClasses(); ?>"> <div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom"> <nav class="uk-navbar uk-margin-large-bottom"> <a class="uk-navbar-brand uk-hidden-small" href="<?= $tpl->baseurl; ?>">J!Blank</a> <jdoc:include type="modules" name="top-menu" style="no" /> </nav> <div class="uk-grid" data-uk-grid-margin> <?php if ($this->countModules('left-block')) : /** Выводим этот блок если в позиции что то есть */ ?> <div class="uk-width-medium-3-10"> <jdoc:include type="modules" name="left-block" style="xhtml" /> </div> <?php endif; ?> <!-- В зависимости от показа модулей в позиции left-block изменяем классы --> <div class="uk-width-medium-<?= ($this->countModules('left-block')) ? '7-10' : '1-1'; ?>"> <?php if ($tpl->isError()) : ?> <jdoc:include type="message" /> <?php endif; ?> <jdoc:include type="component" /> </div> </div> </div> </body> </html>Теперь для удобства можно воспользоваться API шаблона и вынести левый блок в отдельный шаблон.
В папке:
сайт\templates\jblank\partialСоздаем файл left-block.php и ложим туда содержимое из index.php
<?php if ($this->countModules('left-block')) : /** Выводим этот блок если в позиции что то есть */ ?> <div class="uk-width-medium-3-10"> <jdoc:include type="modules" name="left-block" style="xhtml" /> </div> <?php endif; ?>В index.php этот удаляем и заместо этого пишем:
<?= $tpl->partial('left-block'); // Подключаем наш шаблон ?>index.php теперь выглядит так:
<?php /** * J!Blank Template for Joomla by JBlank.pro (JBZoo.com) * * @package JBlank * @author SmetDenis <admin@jbzoo.com> * @copyright Copyright (c) JBlank.pro * @license http://www.gnu.org/licenses/gpl.html GNU/GPL * @link http://jblank.pro/ JBlank project page */ defined('_JEXEC') or die; // init $tpl helper require dirname(__FILE__) . '/php/init.php'; ?><?php echo $tpl->renderHTML(); ?> <head> <jdoc:include type="head" /> </head> <body class="<?php echo $tpl->getBodyClasses(); ?>"> <div class="uk-container uk-container-center uk-margin-top uk-margin-large-bottom"> <nav class="uk-navbar uk-margin-large-bottom"> <a class="uk-navbar-brand uk-hidden-small" href="<?= $tpl->baseurl; ?>">J!Blank</a> <jdoc:include type="modules" name="top-menu" style="no" /> </nav> <div class="uk-grid" data-uk-grid-margin> <?= $tpl->partial('left-block'); // Подключаем наш шаблон ?> <!-- В зависимости от показа модулей в позиции left-block изменяем классы --> <div class="uk-width-medium-<?= ($this->countModules('left-block')) ? '7-10' : '1-1'; ?>"> <?php if ($tpl->isError()) : ?> <jdoc:include type="message" /> <?php endif; ?> <jdoc:include type="component" /> </div> </div> </div> </body> </html>Проверяем и схватываем ошибку
Fatal error: Call to undefined method JBlankTemplate::countModules() inВсе дело в том что в дополнительных шаблона вместо $this нужно использовать $_this. Переходим в шаблон left-block.php
сайт\templates\jblank\partial\left-block.phpИ меняем условие и получаем следующий код шаблона:
<?php if ($_this->countModules('left-block')) : /** Выводим этот блок если в позиции что то есть */ ?> <div class="uk-width-medium-3-10"> <jdoc:include type="modules" name="left-block" style="xhtml" /> </div> <?php endif; ?>Все теперь ошибка исчезла и все отлично работает. На этом пока информации хватит есть что по делать ну и конечно советую читать документацию. Чуть позже думаю будем дописывать и получим простенький патч с демо версткой для чистого шаблона.
Думаю кому то эта статья по может. Есть предложения и пожелания для продолжения пишите, со временем будем разбираться.
Edited by SmetDenis, 27 October 2015 - 08:00.