0.00
Рейтинг
0.00
Сила

Нужна помощь по настройке модулей 0.4.2. Давайте меняться ;)

Друзья, мне нужна ваша помощь в настройке некоторых модулей 0.4.2 движка.

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

Другими словами, если пользователь накатал публикацию объемом более 3000 символов (значение можно менять) и не разместил после первых 2-3 абзацев (а как правило именно там все размещают) тэг CUT, то система выдает алерт с просьбой сделать требуемое, т.е. вставить CUT. Соответственно если публикация меньше 3000 символов — ничего не происходит.

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

Предложение по улучшению роутера

На данный момент, для роутера нет никакой разницы между livestreet.ru/blog/ и livestreet.ru/blog. И это по моему скромному имху не правильно т.к. по двум разным урлам находятся совершенно одинаковые страницы.

Решение я для себя выбрал следующее:
/engine/classes/Router.class.php->GetRequestUri()
после
$sReq=preg_replace("/\/+/",'/',$_SERVER['REQUEST_URI']);

добавить
if(empty($_GET) && !strpos($sReq, '.') && substr($sReq, strlen($sReq) - 1 ,1) != '/'){
            header('Location: ' . $sReq . '/',TRUE,301);
            die;
}

В этом случае, все запросы к «директории», которые не заканчиваются на "/", будут перенаправляться с кодом 301 (Moved Permanently) на урл который заканчивается "/".

Ну и да, это очень любят поисковики.

З.Ы. Совершенно за, если кто-то скажет как это сделать лучше :)

UPD. Po6oT В комментариях, подсказал решение гораздо лучше моего.

Кастомайзим интерфейс: лоудер

Несмотря на непонятный титул поста, думаю, вы поняли, что сегодня мы будем выбирать новый гифчик для лоудера в правом сайдбаре.



Это и многое другое качаем: www.preloaders.net/ www.ajaxload.info/ www.loadinfo.net/

Мелочь, а приятно.

UPD: понравившийся анигиф кладём вместо http://yoursite.ru/templates/skin/templatename/images/loader.gif

Livestreet: дао разработчика - 2

Первая часть цикла

Дао — это действие, процесс, поток. Чем чаще вы смотрите на код других плагинов, тем больше вы понимаете, как делать свой.
Накачайте плагинов под 0.4.2 и расматривайте, что у них внутри. Без этого вы не сможете начать писать свои плагины.

Я сделал типовой шаблон, из которого удобно делать свои собственные плагины. Располагается он тут:
http://github.com/medar/livestreetplugin
Чтобы скачать его, надо нажать в правом верхнем углу кнопку «Download Source». Желающие могут форкать и вносить изменения.

В файле находится «рыба» плагина с названием abcplugin.
Читать дальше →

Livestreet: дао разработчика - 1

Я сейчас работаю над одним проектов, в качестве платформы для которого я выбрал Livestreet. Так как с инфой для программистов у этого движка туго, я буду выкладывать те вещи, который я узнал о движке здесь. Надеюсь, это поможет остальным начинающим программистам на LS.

Я работаю с движком всего несколько дней, поэтому что-то в описании может быть неточно или неполно. Не стесняйтесь поправлять.

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

Итак.

Для начала стоит пробежаться по существующей документации для разработчика (http://trac.lsdev.ru/livestreet/wiki/DeveloperDoc), чтобы понимать термины.
Откройте в IDE движок, пробежитесь по папкам движка, по плагину page, который идет в комплекте с движком.

В движке Livestreet:
Экшены, содержащие Ивенты (action, events) — это, кто знаком с MVC — контроллеры.
Модули (module) — куски кода, которые осуществляют некий функционал (например, функционирование блогов, топиков, комментов). В процессе своей работы они обращаются к Мапперам (mapper) для того, чтобы пообщаться с базой данных. Все sql-запросы пишутся именно в мапперах. Мапперы в свою очередь используют Сущности (entity), которые переводят массивы, отданные mysql в объекты, с которыми потом работает движок.

Способ модификации кода Livestreet два.

1. Через переопределение существующих функций. Меняется целиком существующая функция в модуле/маппере/сущности, или добавляется своя. Подробно: livestreet.ru/blog/dev_documentation/4499.html

2. Через хуки. При этом вставляется код в указанное место движка.
Хуки можно вставить в места, определенные конструкцией $this->HookRun(...); в движке, а также на начало и конец любого модуля, зарегистрированного в системе (не важно, системный он, или установлен каким-то плагином). Подробно про хуки в моделях: livestreet.ru/blog/dev_documentation/3991.html.

Переопределения эти делаются в плагинах. Подробнее о плагинах и их устройстве: livestreet.ru/blog/dev_documentation/3531.html

Как делать эти самые плагины — подробно поговорим во второй части.

Вторая часть

Новые возможности по переопределению/наследованию классов LiveStreet

В LS появилась новая возможность для разработчиков плагинов — наследование классов. Идея была высказана еще avadim'ом здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование — не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.

Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве $aInherits:
<?php
class PluginTest extends Plugin {
    
    protected $aInherits=array(
       'entity'  =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
    );

    public function Activate() {        
        return true;
    }
    
    public function Init() {        
    }
}
?>

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

APC Backend Cache

Всем доброго времени суток!
Хочу поделиться с вами небольшим файликом, который даст возможность использовать DklabCache с APC хранилищем.

Каждый для себя решает сам: нужно это ему или нет.
Чтобы далеко по поисковикам не лазить, вот небольшие мои тесты:
10000 итераций по 1 байту
10000 итераций по 1 байту
Этот тест нельзя назвать по поведению близкому к веб, если у вас не хайлоад проект.

10000 итераций по 32 байта
10000 итераций по 32 байта

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

Руководство по созданию плагина для v.0.4 на примере "Лента друзей"

Предисловие

Что такое плагины — читайте здесь.
По мотивам этого, выполняю обещание — привожу руководство как подобное сделать в виде плагина. Всех тонкостей в одной заметке не расскажешь, но основное постараюсь изложить.

Примечание. Долго не публиковал этот материал, держал в черновиках — на случай «мало-ли-что-измениться». Но думаю, кардинальных изменений в механизме плагинов в ближайшем релизе уже не будет.

Пошаговая схема:

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