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

sublimity

Плагин Для Социальных Сетей - Social communication plugin LS+FB+VK

Доброе время суток, Ливстрит сообщество!
Хотим Вам презентовать новый плагин Social communication plugin 0.1.1 version.
Комментарии FB+VK+LS
Давайте сразу перейдем к его возможностям и положительной информации:
1. Интеграция комментариев из 2х социальных сетей: Facebook, Vkontakt (возможно подключение одной социальной сети на выбор через конфиг)
2. Возможность выбора вида комментариев для пользователей (см. под катом)
3. Возможность выбора приоритетности социальных сетей в случае привязки к аккаунту одновременно Facebook и Vkontakt, устанавливается админом в конфиге
4. Возможность выбора комментариев в Настройки профиля -> Тюнинг
5. Простота установки

Зачем этот плагин?

1. Удобство для пользователей социальных сетей
2. Увеличение посещаемости сайта с помощью публикации комментариев в профайлах ваших пользователей
Плагин SCP 0.1.1 протестирован и работает с LiveStreet 0.4.2 для стандартных комментариев.
Пример работы можете увидеть на сайте uaparty.com
Стоимость плагина: 6$ — Купить в Каталоге (на модерации)
Создание от: Netlanc и Sp1r1t
Сайт разработчиков: netlanc.net/
Обновления в ветке верси 0.1.Х бесплатны.
Подробнее Под Катом.
Читать дальше →

Плагин «Картинка-анонс (аватар) для топика»

Своими усилиями реализовал плагин по мотивам хака: livestreet.ru/blog/tips_and_tricks/747.html

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

Дополнительное поле при создании поста

Создал дополнительное поле при создании/редактировании поста — Ссылка на источник, все работает нормально, но вот проблема, ссылка отображается как простой текст. Вроде как, для отображения как ссылки, нужно что-то добавить в ActionTopic.class.php (у меня версия 0.3.1) в разделы «Парсим на предмет ХТМЛ тегов», но вот что не могу сообразить, может кто что-нибудь посоветует.
подробности под катом

Сортировка топиков по последним действиям. Плагин "Discussion Stream"

Плагин сортирует топики по последним действиям (добавление нового топика или комментария в топик).
Совместимость с версией 0.4.1 и выше
По мотивам livestreet.ru/blog/tips_and_tricks/3771.html, упаковал в плагин.
Кто хочет поддержать автора, кошелек WebMoney: R333668814351

До премодерации доступен тут.
После модерации доступен в каталоге.

Новые возможности по переопределению/наследованию классов LiveStreet

В LS появилась новая возможность для разработчиков плагинов — наследование классов. Идея была высказана еще avadim'ом здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование — не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.

Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве $aInherits:
<?php
class PluginTest extends Plugin {
    
    protected $aInherits=array(
       'entity'  =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
    );

    public function Activate() {        
        return true;
    }
    
    public function Init() {        
    }
}
?>

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

Переопределение методов модулей с помощью ...Hook'ов!

В LiveStreet 0.4 появилась возможность переопределять не только целиком модули, но и отдельные методы. Это позволить разным плагинам бесконфликтно переопределять разные методы одного модуля.

Принцип действия этого механизма основан на Hook'ах:
  1. Вызов каждого метода сопровождается выполнением хуков — module_ModuleName_MethodName_before и module_ModuleName_MethodName_after, соответственно ДО и ПОСЛЕ вызова метода модуля. В первом случаи в хук передаются параметры вызова метода, во втором передается результат выполнения метода модуля.
  2. На 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];
	}
}
?>

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

Нюансы переработки модуля в соответствующий плагин для 0.4 на примере модуля Круг друзей


Собрался с силами и попробовал превратить модуль в плагин :)
Решил начать с самого простого — модуля Круг друзей.
Получившийся плагин iFace для 0.4 можно скачать здесь (как и модуль распространяется бесплатно при условии сохранения копирайтов).
Расскажу с какими нюансами столкнулся.
Читать дальше →

Руководство по созданию плагина для v.0.4 на примере "Лента друзей"

Предисловие

Что такое плагины — читайте здесь.
По мотивам этого, выполняю обещание — привожу руководство как подобное сделать в виде плагина. Всех тонкостей в одной заметке не расскажешь, но основное постараюсь изложить.

Примечание. Долго не публиковал этот материал, держал в черновиках — на случай «мало-ли-что-измениться». Но думаю, кардинальных изменений в механизме плагинов в ближайшем релизе уже не будет.

Пошаговая схема:

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

похожие темы через sphinx

Дело, было как обычно вечером :) И лежало на мне уже давно задание — добавить «похожие темы» к проекту, но ввиду приоритетов откладывалось оно на потом постоянно. Полазил по LS, нашел уже готовый бесплатный модуль: livestreet.ru/blog/2053.html
Но незадача :( нужен fulltext для InnoDB… уже хотел похерить задание и отложить опять до лучших времен, но что-то дернуло меня все-таки покопаться чуток. А именно, вспомнил я про уже готовый fulltext поиск реализованный на sphinx'e в дефолтной сборке LS. Там как раз есть тайтл + текст, так что впринципе больше и не надо :)
В общем, пришлось чуток модифицировать имеющийся модуль + добавить ф-цию в Sphinx.class.php
К действиям:
1) берем имеющийся модуль
2) удаляем папку и ее содержимое /classes/modules/similartopics/mapper
3) заменяем полностью содержимое файла(/classes/modules/similartopics/SimilarTopics.class.php) на:
<?php
##### [hack] similar_topics_sphinx #####
class LsSimilarTopics extends Module {
	public function Init() {
	}
	public function GetSimilarTopics($oTopic){
	    $sTitleTags=$oTopic->getTags();
	    $aTopics=array();
	    $data=$this->Sphinx_FindSimilarTopics($sTitleTags,SIMILARTOPICS_COUNT+1);
	    if(is_array($data['matches']) && sizeof($data['matches'])>0){
		foreach($data['matches'] as $k=>$v) if($k!=$oTopic->getId()) $aTopics[]=$this->Topic_GetTopicById($k);
		return $aTopics;
	    }else return false;
	}
}
##### [hack] similar_topics_sphinx #####
?>

4) добавляем в класс(classes/modules/sphinx/Sphinx.class.php):
        ##### [hack] SimilarTopics #####
        public function FindSimilarTopics($sTerms,$iLimit){
                $cacheKey=SEARCH_ENTITY_PREFIX."similartopics_{$sTerms}_{$iLimit}";
                if(false===($data=$this->Cache_Get($cacheKey))){
                        $this->oSphinx->SetMatchMode(SPH_MATCH_ANY);
                        $this->oSphinx->SetLimits(0,$iLimit);

                        if(!is_array($data=$this->oSphinx->Query($sTerms,SEARCH_ENTITY_PREFIX.'topicsIndex'))) return FALSE;

                        # no results = no cache
                        if($data['total']>0) $this->Cache_Set($data,$cacheKey,array(),60*15);
                }
                return $data;
        }
        ##### [hack] SimilarTopics #####

лично я оставил поиск по тэгам, хотя — можете добавить и по тайтлу, как было первоначально в плагине
5) все, радуемся жизни :)

п.с. должен быть настроен уже sphinx и работать поиск через sphinx
п.п.с. делаем на свой страх и риск, так что не забываем о том что надо бэкапить файлы ;)