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

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

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

Приступим
В начале создадим в папке plugins папку для нашего плагина с именем carousel и в нем файл plugin.xml c описанием создаваемого плагина (см. картинку ниже).


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

Настраиваем сервер для LiveStreet. Часть VIII. APC, Memcached & Sphinx.

Предыдущие части:

На мой взгляд, на данный момент, есть только два осмысленных варианта настроить кэширование кода и данных (учитывая то, что LiveStreet поддерживает, конечно). Первый вариант — APC + Memcached. Второй вариант — XCache.

Почему?
  • Во-первых все остальные PHP оптимизаторы(eAccelerator, например) сильно проигрывают современным версиям APC и XCache. Всесторонне, особенно в разрезе надёжности. ( Особый случай это ZendOptimiser+ — оно, по отзывам, быстрое и надёжное, но не очень открытое и не очень бесплатное. И я, лично, не тестировал )
  • Во-вторых, как opcode кэшер APC, актуальных версий, лучше XCache. И быстрее и стабильней. Да, это субъективное мнение. Да, выигрыш незначителен. Но лучше. :)
  • А вот с кэшированием данных XCache справляется намного лучше Memcached. И поэтому если говорить именно об общей производительности, то выигрывает XCache. И это вполне ожидаемо, учитывая что Memcached — софт предназначенный, прежде всего, для многосерверных конфигураций.

Из вышеописанного проистекает моё личное мнение:
  • Высокая надежность и хорошая производительность = APC + Memcached( и ниже будет описан именно этот вариант).
  • Максимально возможная производительность с приемлемой надёжностью = XCache.

Еще одно важное замечание: коммуникации между сервисами лучше настраивать не через TCP/IP, а через UNIX socket. В рамках «всё на одном сервере» это и быстрее и надёжней. Именно таким образом настраивалась связка Apache + php-fpm в прошлых частях. Таким же образом, по возможности, будем действовать и дальше.

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

Руководство: Как создать свой вид топика на LiveStreet

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

Итак, у меня появилось желание написать руководство по созданию своего вида топика. Такая операция может быть очень полезной и открывает более широкие возможности размещения движка.

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

Дополнительные поля - использование в плагинах

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

Сейчас поддерживаются следующие типы полей:
  • Целое число
  • Дробное число
  • Строка
  • Текст
  • Чекбокс
  • Дата
  • Выпадающий список
  • Теги
  • Ссылка на видео
  • Файл
  • Изображение

Постепенно мы наращиваем функционал и количество типов.
За весь функционал по полям отвечает модуль Property. Рассмотрим пример подключения функционала дополнительных полей к плагину «Статьи» на базе ORM.

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

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

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

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

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

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

Установка Sphinx в Windows или операция Denwer :)

Долгими мучениями удалось одолеть этого мощного демона :)
Буду показывать по своим примерам, а вы уже используете под свои нужды

Теперь по делу

Интеграция плагинов с админ-панелью LS

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

Рассмотрим основные технические моменты. Есть два варианта интеграции:
  1. Визуальное управление конфигом плагина
  2. Встраивание функционала в интерфейс админки (для более сложных плагинов)

Визуальное управление конфигом плагина
Все что нужно сделать, это описать так называемую схему конфига. Она состоит из двух частей — описание всех параметров конфига и описание групп/разделов параметров, которые формируют визуальную группировку на странице редактирование параметров.
Описание всех параметров задается в конфиге плагина в специальном ключе $config_scheme$, например
$config['$config_scheme$'] = array(
	'per_page' => array(
		/*
		 * тип: integer, string, array, boolean, float
		 */
		'type' => 'integer',
		/*
		 * отображаемое имя параметра, ключ языкового файла относительно плагина, или просто текст
		 */
		'name' => 'Количество элементов на страницу',
		/*
		 * отображаемое описание параметра, ключ языкового файла относительно плагина, или просто текст
		 */
		'description' => 'config.per_page.description',
		/*
		 * валидатор (не обязательно)
		 */
		'validator' => array(
			/*
			 * тип валидатора, существующие типы валидаторов движка:
			 * Boolean, Compare, Date, Email, Number, Regexp, Required, String, Tags, Type, Url, + Array (специальный валидатор, см. документацию)
			 */
			'type' => 'Number',
			/*
			 * параметры, которые будут переданы в валидатор
			 */
			'params' => array(
				'min' => 1,
				'max' => 20,
				/*
				 * разрешить только целое число
				 */
				'integerOnly' => true,
				/*
				 * не допускать пустое значение
				 */
				'allowEmpty' => false,
			),
		),
	),
	'param_string_1' => array(
		'type' => 'string',
		'name' => 'config.param_string_1.name',
		'description' => 'config.param_string_1.description',
		'validator' => array(
			'type' => 'String',
			'params' => array(
				'min' => 5,
				'max' => 50,
				'allowEmpty' => true,
			),
		),
	),
);


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

Настраиваем сервер для LiveStreet. Часть IX. LiveStreet.

Предыдущие части:

Не самая сложная, не самая последняя, но самая важная часть. То, ради чего, всё и затевалось :)

Для начала, нужно обеспечить появление ZIP-a с последней версии LiveStreet (на данный момент это LiveStreet_1.0.3.zip ) в корневой папке сайта. Качаем ZIP отсюда livestreetcms.ru/download/ и по SFTP забрасываем в папку сайта /var/www/superls.ru/public/

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

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

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

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