Тема: FAQ - Часто Задаваемые Вопросы
1. Основные определения:
Шаблон/Тема - html/php код, который задаёт общее оформление для разных типов страниц.
Для панели администратора, шаблоны находятся в папке:
/admin/themes/
Для сайта, шаблоны находятся в папке:
/public/themes/
--
Сниппеты - расширения, написанные на PHP, которые добавляют разные возможности на сайте, редактировать их могут только администраторы.
Вывести на страницу сниппет можно шорткодом так:
{snippets get="NameSnippets"}
В шаблоне:
<?php echo Snippet::get('NameSnippets'); ?>
где NameSnippets - название вашего сниппета.
--
Блоки - расширения, для размещения частей контента, в разных частях сайта, редактировать их могут как редакторы, так и администраторы.
Вывести на страницу блок можно шорткодом так:
{block get="test"}
В шаблоне:
<?php echo Block::get('test'); ?>
где test - название вашего блока.
--
Чанки - небольшие куски (X)HTML-кода, которые можно использовать для повторяющихся частей в шаблонах, а также для работы сниппетов.
В коде шаблона чанк можно вывести так:
<?php Chunk::get('header'); ?>
где header - название вашего чанка
--
Short Code (Короткий код) - представляет собой некое выражения, которые затем интерпретируются в машинный код системы, используется для легкого и быстрого вывода нужной части информации на страницах сайта.
--
Минификация - сжатие кода, удаление не ненужной конечному пользователю информации: отступы, пробелы, переходы строк, комментарии - всё то, что увеличивает вес страницы, а следовательно и время ее загрузки.
====================
2. Подключение файлов стилей (*.css):
В шаблонах системы: (*примеры)
Несколько CSS:
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'frontend', 1); ?> <?php Stylesheet::add('public/themes/default/css/default.css', 'frontend', 2); ?> <?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'frontend', 3); ?> <?php Stylesheet::load(); ?>
Один CSS:
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'frontend', 1); ?> <?php Stylesheet::load(); ?>
--
В шаблонах панели администратора: (*примеры)
Несколько CSS:
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?> <?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 2); ?> <?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 3); ?> <?php Stylesheet::load(); ?>
Один CSS:
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?> <?php Stylesheet::load(); ?>
--
В чём разница:
frontend - обозначение подключения для системы
backend - обозначение подключения для панели администратора
<?php Stylesheet::load(); ?> - собирает обший скоп и минифицирует в один общий файл.
====================
3. Подключение файлов JavaScript (*.js) :
Несколько JS (*примеры):
<script type="text/javascript" src="<?php echo Option::get('siteurl'); ?>../../../post/2281/public/assets/js/ru.forum_subdomain/jquery.js"></script> <script type="text/javascript" src="<?php echo Option::get('siteurl'); ?>public/assets/js/bootstrap.js"></script> <?php Javascript::load(); ?>
Один JS (*примеры):
<script type="text/javascript" src="<?php echo Option::get('siteurl'); ?>public/themes/default/js/jquery.js"></script> <?php Javascript::load(); ?>
--
Альтернативный вариант (более правильный), правда минификация пока не реализована:
Несколько JS (*примеры подключения в панели администратора):
<?php Javascript::add('../../../post/2281/public/assets/js/ru.forum_subdomain/jquery.js', 'backend', 1); ?> <?php Javascript::add('../../../post/2281/admin/themes/default/js/ru.forum_subdomain/menu.js', 'backend', 2); ?> <?php Javascript::add('admin/themes/default/js/jquery.cookie.js', 'backend', 2); ?> <?php Javascript::load(); ?>
Один JS (*пример подключения в системе):
<?php Javascript::add('../../../post/2281/public/themes/default/js/ru.forum_subdomain/jquery-1.8.2.min.js', 'frontend', 4); ?> <?php Javascript::load(); ?>
--
В чём разница:
frontend - обозначение подключения для системы
backend - обозначение подключения для панели администратора
<?php Javascript::load(); ?> - собирает обший скоп и минифицирует в один общий файл (минификация ещё не реализована).
====================
4. Точка в slug (home.html):
- Открыть файл:
/monstra/helpers/security.php
- Найти 159-162 строки:
// Remove characters $str = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str ); $str = preg_replace("/[\/_|+ -]+/", $delimiter, $str ); $str = trim($str, $delimiter);
- Заменить на:
// Remove characters $str = preg_replace("/[^a-zA-Z0-9.\/_|+ -]/", '', $str ); $str = preg_replace("/[\/|+ -]+/", $delimiter, $str ); $str = trim($str, $delimiter);
- Открыть файл:
plugins/box/filesmanager/filesmanager.admin.php
- Найти:
move_uploaded_file($_FILES['file']['tmp_name'], $files_path.Security::safeName(basename($_FILES['file']['name'], File::ext($_FILES['file']['name'])), '-', true).'.'.File::ext($_FILES['file']['name']));
- Заменить на:
move_uploaded_file($_FILES['file']['tmp_name'], $files_path.Security::safeName(basename($_FILES['file']['name'], File::ext($_FILES['file']['name'])), '-', true).File::ext($_FILES['file']['name']));
====================
6. Включить monstra cms в режим отладки:
- Открыть файл:
/engine/_init.php
- Найти:
Monstra::$environment = Monstra::PRODUCTION;
- Заменить на:
Monstra::$environment = Monstra::DEVELOPMENT;
====================
7. При входе в панель администратора высвечивается надпись "Plugin main admin function does not exist":
Решение: очистить cookie и кэш браузера.
====================
8. Могу ли я разрабатывать и продавать плагины за деньги:
Да, конечно можете, никаких ограничений на данный момент по этому поводу нет. Помните, что monstra cms работает под лицензией GNU GENERAL PUBLIC LICENSE Version 3:
http://monstra.org/about/license
а это значит, что любой пользователь, которому вы продадите плагин, может размещать его как и на форуме, так и на файлообменниках или других ресурсах, единственное требование, которое он должен будет выполнить - это указывать Вас, как разработчика и контактную информацию, например Ваш e-mail или сайт.
====================
9. Основные теги вывода информации в шаблоне:
http://monstra.org/documentation/theme-template-tags
Имя сайта:
<?php echo Site::name(); ?>
---
Название темы/шаблона:
<?php echo Site::theme(); ?>
---
Название сайта - title:
<?php echo Site::title(); ?>
---
Описание сайта - description:
<?php echo Site::description(); ?>
---
Ключевые слова- keywords:
<?php echo Site::keywords(); ?>
---
Слоган сайта:
<?php echo Site::slogan(); ?>
---
Контент сайта:
<?php echo Site::content(); ?>
Рекомендуется контент выводить так:
<div> <?php Action::run('theme_pre_content'); ?> </div> <div> <?php echo Site::content(); ?> </div> <div> <?php Action::run('theme_post_content'); ?> </div>
Эти хуки нужны для работы некоторых плагинов, используя их они могут выполнять какие-либо действия.
---
URL-адрес сайта:
<?php echo Site::url(); ?>
---
Копирайты:
<?php echo Site::powered(); ?>
====================
10. Как в шаблоне вывести меню сайта:
<?php echo Menu::get(); ?>
если вы обозвали меню например "category_name", то так:
<?php echo Menu::get('category_name'); ?>
====================
11. В шаблоне подключен bootstrap.css, что это такое?:
monstra cms имеет встроенный framework twitter bootstrap
http://twitter.github.com/bootstrap/
http://ru.wikipedia.org/wiki/Twitter_Bootstrap
Если вы планируете делать свой шаблон без него, то использовать данные файлы нет необходимости.
====================
12. В чём разница между "Редактором" и "Администратором":
Редакторы - пользователи, которые отвечают исключительно за контент и информацию на сайте.
Администраторы - пользователи, которые обладают всеми правами "редакторов", а так же могут изменять код и скрипты, в частности например сниппеты.
====================
13. Где можно взять графические элементы monstra cms:
http://monstra.org/about/logos-and-graphics
или тут
http://forum.monstra.org/ru/post/2318/#p2318
====================
14. Как подключить индивидуальный css:
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'frontend', 1); ?> <?php Stylesheet::add('public/themes/default/css/default.css', 'frontend', 2); ?> <?php Stylesheet::load(); ?> <link rel="stylesheet" href="<?php echo Site::url();?>public/themes/default/css/start.css" type="text/css" />
Получается схема: мини_файл_css + индивидуальный_css.
Рекомендация: Сообщество monstra cms всё же рекомендует использовать один css файл по схеме минификации.
====================
15. Как вывести контент одной страницы, на другой странице:
Открыть:
/plugins/box/pages/pages.plugin.php
Найти 29-30 строки:
// Include Admin Plugin::Admin('pages', 'box');
Заменить на:
// Include Admin Plugin::Admin('pages', 'box'); } Shortcode::add('page', 'get_page_content'); function get_page_content($attributes) { $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null); return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt')); }
Вывести на странице другую страницу:
{page slug="home"}
В шаблоне:
<?php echo get_page_content(array('slug' => 'home')); ?>
home - это название slug
Не надо на странице home выводить страницу home:-)
====================
16. Вывод ссылок на дочерние страницы в родителе:
<?php echo Page::available(); ?>
или так:
$pages = Page::children('parent_page_name'); foreach($pages as $page) { echo $page['title']; }
Для настройки вывода списка редактируем следующий файл:
/plugins/box/pages/views/frontend/available_pages.view.php
====================
17. Доступ определенной части контента, только для зарегистрированных пользователей :
в index.template.php:
<?php if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin', 'editor', 'user'))) { ?> ТО ЧТО СПРЯТАТЬ <?php } ?>
====================