Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

CleverStyle CMS — обзор для разработчика

Anna | 31.05.2014 | нет комментариев

На самом деле скорее CMF, а наименование сложилось исторически. Толк CMS/CMF в том, Дабы сделать разработку сайта проще, стремительней и дешевле. Но в реальной жизни дозволено столкнуться с тем, что отклонение от стандартного поведения в CMS вынуждает лезть в исходники ядра, что чревато последующими загвоздками с обновлением и безопасностью, а в CMF дозволено столкнуться с высоким порогом входа и довольно огромным весом системы.

Моей целью было сделать равновесие функциональности, трудности и комфорта как дозволено больше слаженным.
Система имеет определённое число велосипедов, немножко магии, и крупные планы.
На данный момент CleverStyle CMS может быть увлекательной игрушкой именно для разработчиков, так как разрешает стремительно начать разработку и получать итоги, предоставляет трудным и/или рутинным задачам примитивный интерфейс, потому и статья об некоторых технических особенностях с примерами в всеобщем.

Системные требования

 

  • Unix-сходственная ОС
  • Apache2 (Nginx не тестировался, но верно будет поддерживаться в грядущем)
  • PHP 5.4
  • MySQL

Помощь Windows отпала понемногу, слишком много оберток необходимо было поддерживать для того, Дабы принудить всё трудиться одинаково, и в определённый момент было решено выкинуть это всё во имя простоты и скорости.
Допустимо, и будет трудиться, но гарантий никаких не даю.

С чего начать

Начинается всё с установки. Она предельно простая: один установочный файл (самостоятельный), одна страничка, несколько полей. Так, как Почаще каждого применяется БД MySQL, а хост localhost — они применяются по-умолчанию, но в режиме специалиста это дозволено изменить.

Установочный файл являет собой phar архив, и содержит в себе как установщик, так и исходники каждой системы, а так же может комплектоваться произвольным комплектом компонентов. Для создания такого установщика есть особый сборщик, тот, что разрешает делать произвольные сборки в графическом режиме.

Что дальше

Итогом первого шага является готовая пустая CMS c гостем и корневым менеджером (что-то как бы root в Linux).
Если вы — разработчик, вам захочется что-то написать. Начать дозволено с простого файла index.html c содержимым:

Здравствуй, мой друг!

После этого зайти в components/modules от корня сайта, сделать директорию Hello и кинуть туда index.html

Это готовый модуль, Дабы его активировать необходимо зайти в админку Компоненты/Модули, нажатьОбновить список модулей. Появившийся модуль необходимо установить и включить, позже чего он появится в меню:

Вот так легко.

Немножко больше трудный вариант — применять взамен index.html файл index.php.
В этом случае простым итогом теснее не обойтись:

global $Page;
$Page->content('Здравствуй, мой друг!');

Однако, не на много труднее. Таких как $Page глобальных системных объектов несколько:
$Cache, $Config, $Core, $db, $Error, $Index, $Key, $L, $Mail, $Page, $Storage, $Text, $User
Все они доступны фактически неизменно, и отвечают всякий за свою часть всеобщей функциональности. В всеобщем наименование объекта соответствует наименованию класса (с некоторыми исключениями).
Все способы и некоторые (пока не все) свойства объектов имеют PhpDoc сегменты с объяснением типов входящих параметров, их изложением и даже некоторыми примерами входных данных. В wiki все объекты описаны, и многие имеют примеры готового кода, тот, что дозволено скопировать 1 в 1 и он будет трудиться.
Так же есть один системный класс h, тот, что применяется как статический для рендеринга HTML с поддержкой CSS-сходственного синтаксиса:

global $Page;
$Page->content(h::p('Параграф');
$Page->content(h::{'h1#some_id.and-class.another-class[data-type=title]'}('Заголовок статьи');

Простота и удобство разработчика

Система поддерживает работу с несколькими БД и их зеркалами единовременно, поддерживает разные backend-ы для кеша, может трудиться с несколькими хранилищами статических файлов и прочими вещами, но предоставляет для разработчика примитивный интерфейс взаимодействия со каждому этим.
Работа с объектами сделана максимально естественной и явственной (вот здесь немножко магии):

global $Cache;
$Cache->item			= 5;
$item					= $Cache->item;
unset($Cache->item);			//Хотя дозволено применять и ::get() ::set() ::del() способы если вы правда считаете что эта магия будет для вас тесным местом
$Cache->{'Movies/1'}	= 1;
$Cache->{'Movies/2'}	= 2;
unset($Cache->Movies);			//Удаляет оба фильма из кеша

С многоязычным интерфейсом трудиться тоже легко:

global $L, $Page;
$Page->content($L->hello);			//Здравствуйте

Так же дозволено применять следующую увлекательную конструкцию:

global $L, $Page;
$Page->content($L->installation_of_module('Hello'));	//Установка модуля Hello

Файлы перевода — JSON, а строки могут быть оформлены как для функции sprintf. Для предыдущего примера:

"installation_of_module"	: "Установка модуля %s"

Так дозволено делать персонализированные сообщения.

Подобный формат применяется при работе с БД:

global $db;
$db->q(
	"SELECT `login`
	FROM `[prefix]users`
	WHERE `id` = '%d'",
	2
);

В этом примере перед подстановкой значение ещё будет обработано для охраны от SQL инъекций.
В случае нескольких запросов за раз дозволено так:

global $db;
$db->q(
	[
		"DELETE FROM `[prefix]users`
		WHERE `id` = '%d'",
		"DELETE FROM `[prefix]users_groups`
		WHERE `id` = '%d'"
	],
	2
);

Помимо очевидности написанного, такой код прекрасно подсвечивает IDE.

Конструкция сайта

Сайт имеет обыкновенные страницы для финального польззователя, как было в первых примерах, административные, и странички API, которые не имеют интерфейса и отдают контент в формате JSON.

Примитивный пример как сделать API для нашего модуля Hello.

Создаем внутри components/modules/Hello директорию api, а в ней файл index.php c содержимым:

global $Page;
$Page->json([
	'title'			=> 'Здравствуй, прогр!',
	'description'	=> 'Приветствие програпрогру через API'
]);

И обратившись с поддержкой jQuery по адресу api/Hello нам придет JSON строка с нужным заголовком и телом.

Что система вообще может:

 

  • Помощь компонентов
    • Помощь модулей (для отображения основного оглавления страницы)
    • Помощь плагинов (загружаются на всякой странице и обеспеивают дополнительную функциональность)
    • Помощь блоков (размещаются вокруг страницы для отображения дополнительной информации)
  • Помощь человекочитаемых адресов
  • Помощь типов и групп пользователей
  • Помощь прав и контроля доступа
  • Полная многоязычная помощь (как интерфейса, так и контента)
    • Помощь механического перевода контента
  • Помощь минификации и компрессии CSS и JavaScript
  • Помощь зекрал сайта
    • Помощь зеркал доменов
    • Поддерж

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB