+26.19
Рейтинг
81.26
Сила

Виктор

Создание простого плагина. Пошаговая инструкция для новичков. Часть 1

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

Создадим простой плагин, который будет создавать объект «Book» из введенных пользователем данных и сохранять в базу данных. А на отдельной страничке — выводить все созданные объекты Book списком.

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

Запрет на постинг в персональных блогах (ls 1.0.3)

Моё решение:

В classes\actions\ActionTopic.class.php
Ищем 
$oBlog=$this->Blog_GetPersonalBlogByUserId($oTopic->getUserId()); 
и меняем на
//$oBlog=$this->Blog_GetPersonalBlogByUserId($oTopic->getUserId()); 
$oBlog=null;

Далее ищем 
$oBlog=$this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId());
и также меняем на 
//$oBlog=$this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId());
$oBlog=null;

В шаблонах actions\ActionTopic\add.tpl
Ищем 
<option value="0">{$aLang.topic_create_blog_personal}</option>
и меняем на 
<option>Выбор блога</option>

И вуаля — топики нельзя создать в личном блоге.

Новости от админа на главной странице

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

Первое
Создаем основу плагина:
В каталоге «plugins» необходимо создать структуру каталогов, похужую на картинку выше. Здесь все очевидно: файл класса блока «BlockNews.class.php» будет формировать необходимые данные для вывода шаблона. Хук будет добавлять блок для вывода, а шаблон – содержать оформление блока.
Перейдем теперь к содержанию:

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

Решено: Конфликт плагинов. Переопределение через $aInherits

Есть 2 плагина. Из каталога, и мой, разрабатываемый. Оба плагина используют переопределение с помощью
$aInherits. Переопределяются одни и теже классы.

Соответственно, если активировать оба плагина — возникает конфликт:

Warning: Class 'PluginChronos_ModuleTopic_MapperTopic' not found in /Users/xxxxx/Sites/xxxxx.local/xxxxx.loc/engine/classes/Engine.class.php on line 1105

Fatal error: Class 'PluginChronos_Inherit_ModuleTopic_MapperTopic' not found in /Users/xxxxx/Sites/xxxxx.local/xxxxx.loc/plugins/chronos/classes/modules/topic/mapper/Topic.mapper.class.php on line 24


По-одиночке — плагины работают корректно. Как быть в такой ситуации?
Подскажите, пожалуйста.

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

Архитектура LS:: Мапперы

Представляю первую статью цикла статей об архитектуре livestreet, я думаю будут и продолжения. Исходные коды примера, приведенные здесь доступны на github.

1. Что такое маппер
Ну-с начнем, и начнем с того, что определим, что такое маппер? Маппер, или конкретнее Data Mapper является одним из стандартных паттернов проектирования программных средств, определенный в LS как PHP-объект наследуемый от базового, для всех мапперов класса Mapper. Основным назначением маппера является отделение логики хранения данных от бизнес-логики самого приложения. Маппер содержит методы, реализующие операции CRUD (Create-Read-Update-Delete) над одной или несколькими таблицами по «просьбе» объекта. Маппер является интерфейсом между объектами и базой данных, средством, повышающим уровень абстракции в архитектуре приложения.

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

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

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


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

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

Создание диалога добавления карусели
Прежде всего определим, каким образом карусель будет вставлена в редактор. В плагине будет использоваться следующая структура: тег «carousel» содержит одно или несколько изображений (тегов img), которые в дальнейшем можно добавлять с помощью стандартного диалога вставки изображения. Диалог вставки тега «carousel» с первым изображением мы создадим, из диалога вставки изображения. Шаблон диалога представлен в файле «skin/developer/window_load_img.tpl», его мы и будем переделывать. Созданный шаблон с помощью зарегистрированного хука будет добавлен на страницу, проинициализирован. Инструменты, обеспечивающие функционал формы будут заимствованы от диалога вставки изображения.

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

Создание своего фильтра по произвольному полю. Пример решения задачи

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

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