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

Список хуков LiveStreet CMS 1.0.1

На днях написал черновик по списку хуков и так забыл о нем, пока не увидел новое видео от Максима и сразу вспомнил об этом тексте, решив под общий шумок вокруг хуков добавить и эту статью. Я видел разные топики, где спрашивали "есть ли список хуков?". Да, есть. Вот он.

Привожу список стандартных хуков для чистой официальной ЛС 1.0.1, большинство из них неявно прописаны в движке, поэтому попытка найти их вызовы в коде у вас не выйдет т.к. часть их них автоматически формируется ядром движка.
Из стандартной поставки ЛС хуки в сумме вызываются 486 раз, некоторые по нескольку раз. Это нормально. Здесь приведены 161 хук, которые доступны в ЛС 1.0.1, в порядке их вызова, начиная с самого первого, исключая дальнейшие повторения.

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

Оптимизация индексирования Shpinx для LiveStreet, и чуть-чуть про его установку.

На самом деле, стандартный конфигурационный файл sphinx.conf идущий в комплекте с LiveStreet 1.0.1 (/install/sphinx.conf) слегка простоват. Собственно, это, с мелкими изменениями, всё та же конфигурация описанная господином kruft в далёком 2008 году ( за что ему, по сей день, огромнейший респект).

Не сказать, что с тех пор многое поменялось с вопросом интеграции Shpinx и LiveStreet «по умолчанию».(интересные, платные, плагины для поиска — иной разговор). Однако, вполне можно выжать гораздо больше и из того, что есть на халяву. :)

Чего опять хотелось?
  1. Чтобы топики искало не только по заголовку и тексту, но еще и по списку тегов, названию блога и автору.
  2. Чтобы комментарии искало ещё и по автору тоже (почему бы и нет?)
  3. Словарь синонимов, ибо Shpinx умеет и иногда полезно.
  4. Я так и не понял, зачем индексировать не опубликованные топики и забаненые комментарии, а потом фильтровать их LiveStreet-ом. Тайна сия велика есть. Решил выкинуть из индекса и то, и другое.

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

Закрепление топика на главной: мое решение


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

Плагин небольшой и его идея заключается в добавлении и реализации собственного хука.

Попробовать плагин в действии можно с github-а. В общем каталоге плагина нет, но скоро появиться, я думаю.

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

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

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

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

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

Передача параметров через хук

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

Задача была передать id топика (или весь топик) из шаблона в хук. Реализуется это следующим образом:

например для передачи Id топика надо сделать следующее. В шаблоне:


{assign var="topicId" value=$oTopic->getId()}
{hook run='topic_activ' topic=$topicId}


регистрируем хук
public function RegisterHook()
    {

	$this->AddHook('template_topic_activ', 'CategoryAct');
}	


и принимаем эту переменную

public function CategoryAct($oTopic)
    {
	return false;
	
    }


вообщем «спасибо, кэп» :)
буду рад, если кому-то поможет.

P.S. Кстати,
$smarty->get_template_vars();
в LiveStreet не работает, поэтому так получить переменные мне не удалось

Совместимости плагинов и наследование классов.

А так же другие вопросы по разработке плагинов.
Кстати, в какой блог этот вопрос правильно разместить?

Первый вопрос:
как правильно наследовать классы, что бы при появлении второго плагина, наследующего тот же класс не возникало конфликтов? Случай переопределения той, или иной функции класса не рассматриваем.
например:
Читать дальше →

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

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

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


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