Warning: session_start(): open(/home/webmaster/www/livestreet.ru/tmp/sess_sgol5ihvc7mlvtn92qhphfsqo3, O_RDWR) failed: No space left on device (28) in /home/webmaster/www/livestreet.ru/www/engine/modules/session/Session.class.php on line 101 Избранное / Профиль stfalcon / LiveStreet CMS
Презентую плагин «Дополнительные блоки».
В текущей версии всего два блока
Блок «Рейтинг пользователей»
Блок «Кто на сате?»
Блок «Рейтинг пользователей» выводит N пользователей с вышим рейтингом, с максимальным кол-вом публикаций и коментариев. Переключение вкладок на ajax как в блоке «Блоги».
Блок «Кто на сайте?» — выводит пользователей кто онлайн.
Идея плагина такова: он не должен делегировать ни один модуль, ни один шаблон, работать полностью автономно, чтобы мог сочитаться с любым другим плагином, не вступать с ним в конфликт.
Благодарности: aVadim за его блок «Who is online», который вошел в плагин под названием «Кто на сайте?» Lora_GT именно она дала идею сделать вывод пользователей по кол-ву публикаций и комментов.
Друзья, я надеюсь, что этот релиз не последний, жду ваших предложений — какие еще блоки кому нужны пишите. По мере сил постараюсь реализовать. Приглашаю к сотрудничеству всех кто желает помочь проекту.
Мы (я и Wizard) хотим этот модуль сделать. Как минимум обсудить.
Каким нам видится функционал этого модуля:
1. Обеспечение возможности авторизации на сайте на движке LS с данными из vkontakte.ru
2. Создание пользователя в LS в формате ИмяФамилия@vkontakte.ru (ИмяФамилия в латинской транслитерации)
3. Создание личного блога в формате ИмяФамилия (в латинской транслитерации)
4. Адаптация аналогичного функционала к другим сервисам (gmail, OpenId, МойМир… какие ещё?)
Появилась возможность устанавливать хуки прямо внутри шаблона — trac.lsdev.ru/livestreet/changeset/848
Делается это за счет плагина к Smarty hook, например:
{hook run='body_begin'}
вызовет хуки повешенные на событие 'template_body_begin'(обратите внимание, что приставка template_ добавляется автоматически, если хук вызван из шаблона), а их результат в виде строки вернется в шаблон.
Предлагаю определиться какие нужны стандартные хуки? Сейчас добавлено только два: body_begin и body_end, соответственно вызываются в начале HTML тега BODY и в конце.
Если Вы разместите под статьями Вашего издания или блога кнопку «Опубликовать ВКонтакте», то позволите 70 миллионам пользователям ВКонтакте быстро делиться ссылкой на Вашу статью со своими друзьями ВКонтакте.
Каждый раз, когда пользователь ВКонтакте нажимает на эту кнопку на Вашем сайте, на его странице ВКонтакте автоматически создается заметка со ссылкой на Ваш сайт. После этого друзья пользователя сразу же смогут узнать о статье из трех источников — со страницы Мои Новости, со страницы Заметки друзей и с личной страницы опубликовавшего пользователя.
Последнее принесет Вашему сайту внимание дополнительных посетителей не только в краткий промежуток времени, но и в перспективе, так как ссылка на Ваш сайт навсегда останется доступной всем посетителям страницы опубликовавшего. Данная особенность выгодно отличает публикацию ВКонтакте от других методов публикации в интернете.
Разместить кнопку ВКонтакте на Вашем сайте очень просто. Для этого мы предлагаем воспользоваться конструктором кнопки ниже.
В LiveStreet 0.4 появилась возможность переопределять не только целиком модули, но и отдельные методы. Это позволить разным плагинам бесконфликтно переопределять разные методы одного модуля.
Принцип действия этого механизма основан на Hook'ах:
Вызов каждого метода сопровождается выполнением хуков — module_ModuleName_MethodName_before и module_ModuleName_MethodName_after, соответственно ДО и ПОСЛЕ вызова метода модуля. В первом случаи в хук передаются параметры вызова метода, во втором передается результат выполнения метода модуля.
На module_ModuleName_MethodName_before можно повесить специальный хук — delegate, результат выполнения которого и будет «результатом» выполнения метода модуля
Пример:
<?php
class HookTest extends Hook {
public function RegisterHook() {
$this->AddDelegateHook('module_text_parser_before','testHook',__CLASS__,-3);
}
public function testHook($aVars) {
return 'Topic text > '.$aVars[0];
}
}
?>
Решил не засорять топик с руководством по созданию плагинов, напишу тут, что нашел в процессе тестирования.
Итак, по порядку, что уже было:
1) (fixed) ошибка с определением названия экшена при делегировании: создал тикет
2) предложение об автоподстановке префиксов делегатов ( livestreet.ru/blog/dev_documentation/3710.html#comment59803, пункт 2 )
3) (fixed) отсутствие поддержки делегирования на основе данных из xml-файла (по-видимому, функция просто ещё в разработке)
И теперь ещё кое-какие мысли (пока все в файле /engine/classes/ActionPlugin.class.php).
— Сейчас, при делегировании экшена (например {plugin_dir}/classes/actions/ActionSettings.class.php) происходит автоматическое делегирование соответствующей директории темплейтов, что не очень хорошо, т.к. это совершенно необязательно по логике и придется тупо копировать всю папку actions/ActionSettings в плагин.
Сейчас там проверяется только наличие в плагине папки с соответствующим шаблоном:
в случае без делегирования вернет /actions/ActionSettings/profile.tpl, а надо actions/ActionSettings/profile.tpl, поэтому первый слэш переносим отсюда в getTemplatePathPlugin():
— Дублирование кода в GetTemplate() лучше заменить на
if (is_null($this->sActionTemplate)) {
$this->SetTemplateAction($this->sCurrentEvent);
}
— В дополнение к первому:
Чаще всего нужно изменить не все шаблоны экшена, а только некоторые, зачем же копировать не измененные? Сделаем проверку, есть ли они в делегирующей папке, и, если нет, вернем стандартные:
Собрался с силами и попробовал превратить модуль в плагин :)
Решил начать с самого простого — модуля Круг друзей.
Получившийся плагин iFace для 0.4 можно скачать здесь (как и модуль распространяется бесплатно при условии сохранения копирайтов).
Расскажу с какими нюансами столкнулся.
Читать дальше →
Очень страдаю от отсутствия модуля для регистрации/авторизации пользователей по OpenID или oAuth. Подобный модуль мог бы быть очень полезен для привлечения аудитории на любой сайт. Большинство интернетчиков уже имеет аккаунты на Twitter, Google, Яндексе или OpenID-провайдере и авторизация или регистрация с помощью них сильно упростила бы жизнь.
Если кто-то возьмется за реализацию, то готов даже оплатить разработку подобного модуля. Если там еще и Facebook будет, то вообще сказка.
Warning: Unknown: open(/home/webmaster/www/livestreet.ru/tmp/sess_sgol5ihvc7mlvtn92qhphfsqo3, O_RDWR) failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/home/webmaster/www/livestreet.ru/tmp) in Unknown on line 0