+68.62
425 читателей, 63 топика

Описание ядра LiveStreet

Данная документация прежде всего для людей знакомых с PHP(объектной моделью) и желающих модифицировать движок.

Общее представление


Движок LiveStreet построен на базе собственного фреймворка с использованием модульности и модели MVC.
Фреймворк представляет из себя каркас из абстрактных классов(абстракции module, action, block, mapper, entity), ядро(engine), роутер(route) и набор системных модулей(модули с префиксом sys_).
Читать дальше →

Использование поддоменов в LiveStreet

У многих возникает необходимость использовать поддомены для своих проектов на базе LiveStreet, например вынести на поддомены блоги.
Сделать это можно разными путями, например через реврайты в .htaccess, либо через роутер движка.
Я покажу как это можно сделать на примере последнего варианта, т.е. через роутер.

Читать дальше →

LiveStreet ScreenCast #1 - Введение

Представляю первый скринкаст для разработчиков по основам LiveStreet.
Первый выпуск содержит вводную часть по общей концепции фреймворка LS. Нацелен в первую очередь на начинающих разработчиков, которые только знакомятся с LS.

Это так сказать первый блин комом, строго не судите :) Принимаем вопросы и пожелания как по текущему скринкасты так и на следующие выпуски. Просмотр рекомендуется в HD качестве.

Обработка изображений: crop, watermark, скругление углов



В новой версии livestreet намного улучшена работа с изображениями (и в плане качества, и в плане гибкости). Для обслуживания всевозможных операций с изображениями отведен специальный engine-модуль Image.

Коротко о том, что появилось нового:

1. Решена проблема с некрасивым ресайзом неквадратных аватарок (путем предварительного вырезания наибольшего возможного квадрата).

2. Устранены «почти» все проблемы с обработкой alpha и non-alpha прозрачности («почти»=«на столько на сколько это вообще возможно сделать с помощью PHP+GD2»). По крайней мере прозрачные png теперь можно использовать в аватарках спокойно.

3. Формирование HTML кода выводимого изображения централизировано в одной функции Image_BuildHTML(), которая запрашивает путь к изображению и дополнительные параметры (title,alt,align).

4. Watermark: возможность автоматически добавлять на загружаемые изображения надписи или изображения с достаточно гибкой конфигурацией (пример надписи см выше).

5. Закругление углов изображения.

О том, как пользоваться 4 и 5 поговорим подробнее.

Читать дальше →

Пример создания модуля

Попробуем на примере создать очень простой модуль/дополнение для LiveStreet. Сразу стоит оговориться, что под модулем в LiveStreet подразумевается некая библиотека дополнительного функционала, а не какой то законченный блок функционала. Модуль это только его часть. Надеюсь понятно смог объяснить, а теперь приступим!

Читать дальше →

Использование плагинов в v.0.4

Безболезненное расширение функционала — достаточно проблематичный вопрос (под «безболезненностью» я понимаю весь спектр удобства для пользователей движка).

Я думаю, вы еще не забыли, что для добавления новых возможностей в версиях до 0.3.1 включительно используются Хаки и Модули. При этом установка любого стороннего творения дело достаточно хитрое и небезопасное, часто требующее ориентирования в архитектуре и особенностях движка. Для преодоления этих проблем в ядро v.0.4 была введена система плагинов:


К чему мы стремились создавая систему плагинов?

а) расширения функционала (плагины) можно просто установить и также просто убрать (а вдруг не понравилось), сложность этого процесса не зависит от количества расширений, разветвленности структуры их каталогов и т.д.;
б) установка внешних расширений (плагинов) не усложняет обновление основного ядра;


Для тех, кого заинтересовали подробности

Центральный крон

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



В системный cron на сервере необходимо добавить скрипт — /application/utilities/cron/main.php с периодом 1 раз в 2 минуты.
Далее в специальном интерфейсе в админке можно управлять списком задач. По умолчанию созданы две задачи — очистка старого кеша и рассылка отложенных емайл сообщений. Там же можно в ручном режиме добавить новую задачу, в качестве вызываемого метода указывается полный синтаксис вызова метода модуля.

Центральный крон может работать в двух режимах — последовательное выполнение задач и параллельное (fork). Параллельный режим пока работает в тестовом режиме, т.к. до конца не протестирован. Выставляется режим в конфиге: $config['module']['cron']['use_fork'] = false;

Плагины могут добавлять в крон свои задачи. Для этого в главной файле плагина достаточно прописать специальные вызовы при активации и деактивации плагина.

public function Activate() {
    $this->Cron_CreateTask('Тестовая задача','PluginArticle_Main_RunTest',6,$this);
    return true;
}

public function Deactivate() {
    $this->Cron_RemoveTasksByPlugin($this);
    return true;
}

Новая структура файлов LiveStreet

Мы начинаем серию публикаций о том, что мы уже реализовали нового и собираемся реализовать в новой версии LiveStreet.

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

Новая общая структура LS

Читать дальше →

Создание плагина. От идеи до публикации. Часть 3

Настройка типографа
Настройку типографа реализуем следующим образом: создадим файл конфигурации плагина в каталоге «config» который, в свою очередь, находиться в корне плагина и в нем проведем нехитрые опрерации по добавлению тега 'carousel' в список разрешенных jevix-ом тегов.
<?php
    $aAllowTags = Config::Get('jevix.default.cfgAllowTags');
    $aAllowTags[0][0][] = 'carousel';
    Config::Set('jevix.default.cfgAllowTags', $aAllowTags);


Читать дальше →