Тема: FAQ - Часто Задаваемые Вопросы
1. Основные определения:
Шаблон/Тема - html/php код, который задаёт общее оформление для разных типов страниц.
Для панели администратора, шаблоны находятся в папке:
/admin/themes/
Для сайта, шаблоны находятся в папке:
/public/themes/
--
Сниппеты - расширения, написанные на PHP, которые добавляют разные возможности на сайте, редактировать их могут только администраторы.
Вывести на страницу сниппет можно шорткодом так:
{snippets get="NameSnippets"}
В шаблоне:
где NameSnippets - название вашего сниппета.
--
Блоки - расширения, для размещения частей контента, в разных частях сайта, редактировать их могут как редакторы, так и администраторы.
Вывести на страницу блок можно шорткодом так:
{block get="test"}
В шаблоне:
где test - название вашего блока.
--
Чанки - небольшие куски (X)HTML-кода, которые можно использовать для повторяющихся частей в шаблонах, а также для работы сниппетов.
В коде шаблона чанк можно вывести так:
где header - название вашего чанка
--
Short Code (Короткий код) - представляет собой некое выражения, которые затем интерпретируются в машинный код системы, используется для легкого и быстрого вывода нужной части информации на страницах сайта.
--
Минификация - сжатие кода, удаление не ненужной конечному пользователю информации: отступы, пробелы, переходы строк, комментарии - всё то, что увеличивает вес страницы, а следовательно и время ее загрузки.
====================
2. Подключение файлов стилей (*.css):
В шаблонах системы: (*примеры)
Несколько CSS:
Один CSS:
--
В шаблонах панели администратора: (*примеры)
Несколько CSS:
Один CSS:
--
В чём разница:
frontend - обозначение подключения для системы
backend - обозначение подключения для панели администратора
- собирает обший скоп и минифицирует в один общий файл.
====================
3. Подключение файлов JavaScript (*.js) :
Несколько JS (*примеры):
Один JS (*примеры):
--
Альтернативный вариант (более правильный), правда минификация пока не реализована:
Несколько JS (*примеры подключения в панели администратора):
Один JS (*пример подключения в системе):
--
В чём разница:
frontend - обозначение подключения для системы
backend - обозначение подключения для панели администратора
- собирает обший скоп и минифицирует в один общий файл (минификация ещё не реализована).
====================
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
Имя сайта:
---
Название темы/шаблона:
---
Название сайта - title:
---
Описание сайта - description:
---
Ключевые слова- keywords:
---
Слоган сайта:
---
Контент сайта:
Рекомендуется контент выводить так:
Эти хуки нужны для работы некоторых плагинов, используя их они могут выполнять какие-либо действия.
---
URL-адрес сайта:
---
Копирайты:
====================
10. Как в шаблоне вывести меню сайта:
если вы обозвали меню например "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:
Получается схема: мини_файл_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"}
В шаблоне:
'home')); ?>
home - это название slug
Не надо на странице home выводить страницу home:-)
====================
16. Вывод ссылок на дочерние страницы в родителе:
или так:
$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:
ТО ЧТО СПРЯТАТЬ
====================