-9.75
Рейтинг
1.61
Сила

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

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

Вторая часть

Кнопки: В заметки(контакт), В мой мир, Мне нравится(Like), В твиттер под топиком(инструкция) - Плагин!

Только что прилепил на одном своем проекте и делюсь с вами.
Хотелось именно, чтобы отображались цифры, нажавших на кнопки, а не просто кнопки.


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

Быстрая интеграция поиска от Google в ваш сайт.

Задача довольно простая, но на всякий случай изложу готовое решение, на тот случай если кто-то сходу не разберется.

Интеграция гугло-поиска может пригодится если Sphinx вы установить не в силах (к примеру виртуальный хостинг, как это в моем случае), а плагин aceMySearch вам по каким-то причинам не подходит (не хотите получить дополнительную нагрузку на сайт или просто хотите немного заработать на AdSense :)

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

Использование LiveStreet как фреймворка

LiveStreet — это не просто хабра-подобный движок. И даже не столько движок для
создания сообществ, сколько замечательный фреймворк, который подходит для создания самых разнообразных сайтов.
Получается, что от хостинга требуется только php, т.к. для простого сайта-визитки работать с БД совсем необязательно!
Разумеется сайт из пары страниц можно оставить на простом html, но этим постом я хочу показать, что LS можно использовать для создания сайтов абсолютно любого типа.
В общем, кому стало интересно — прошу под кат.
Читать дальше →

Как сделать особенный title для главной страницы?

По умолчанию, есть константа с названием сайта. Она является тайтлом для главной страницы («Главная страница»), и она же является окончанием названия второстепенных страниц («Топик про смерть / Блог о жизни / Главная страница»). Но я хочу сделать так, чтобы на главной странице было одно название, а на второстепенных в окончании — другое. Как это сделать?

На самом деле, вопрос сводится к другому: как определить, главная у меня страница или нет. Может, есть какая-нибудь переменная для этого? Это было бы очень удобно — я бы просто добавил в header.tpl условие.

Вывод количества топиков в блоке Блоги

Приветствую.

Подскажите пожалуйста, как можно вывести количество топиков у блогов в блоке Блоги и добавить туда показ новых.

Т.е. к примеру так:
Блог разработки LiveStreet (198+2)
Сайты на LiveStreet (87+1)
и.т.д.

Я думаю не одному мне пригодилось бы такое

Заранее спасибо ;)

Добавляем пункт меню "FAQ" для статической страницы.

Данный пост рассчитан на тех, кто только начинает работать с LS, надеюсь что кому-то будет полезным. На написание этого поста сподвигло следующее: надо было добавить ещё одну статичную страницу и отображать её в TopMenu, автоматом это не происходит, а документации как это сделать, найти не смог. Рассмотрим добавление на примере страницы «FAQ»
Читать дальше →

Самая простая система рейтинга

Господа, с какого-то момента изучаю LiveStreet, вот добрался до системы рейтинга. Убив n-ное время на попытки понять в чем отличие рейтинга от силы и как оные начисляются, принял соломоново решение — упразднить всю эту мудреную систему. Но сказать легче, чем сделать — в админке не отключишь, да и все повязано на рейтинге. В общем, раз упразднить систему рейтинга нельзя, я хочу максимально упростить оную.

Что это значит? Дано: пользователь, публикация в блоге. Схема такая: пользователю нравится публикация >> он клацает стрелку вверх >> рейтинг публикации повышается на 1. Соответственно, если публикация не нравится — пользователь клацает стрелку вниз и рейтинг публикации уменьшается на 1. А рейтинг пользователей и вовсе хочу отключить, оставив только рейтинг публикаций. Таким образом планирую убить двух зайцев: сделать систему рейтинга максимально понятной и убить в зародыше рост ЧСВ самых «рейтинговых» пользователей.

Вопрос — как такое сделать?

Механизм хуков в движке

В продолжении топиков LiveStreet как платформа для модулей и Тест хуков в движке появилась поддержка хуков.

Использовать можно так:
1. В любом месте(модуле, экшене) установить вызов необходимого хука на метод модуля
$this->Hook_AddExecModule('topic_show','Test_MyHookRun',10);
регистрирует на событие topic_show вызов метода MyHookRun у модуля Test с приоритетом 10.
2. В любом месте установить вызов хука на функцию
$this->Hook_AddExecFunction('topic_show','var_dump',-5);
регистрирует вызов функции var_dump
3. Создать класс хука в каталоге /classes/hooks/ с именем файла HookTest.class.php с содержанием
<? 
class HookTest extends Hook {	
	public function RegisterHook() {
		$this->AddHook('topic_show','testHookFunct',__CLASS__,-3);
	}
	
	public function testHookFunct($aVars) {
		var_dump("Hook it!");
	}
}
?>

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