+1.78
Рейтинг
6.63
Сила

x3r0x

Раздел поддержки/trac на livestreetcms.com

На livestreetcms.ru в каталоге плагинов появилась новая возможность — раздел поддержки клиентов.
Теперь пользователи могут сообщать о проблемах, задавать вопросы по конкретным плагинам и следить за их обсуждением и выполнением непосредственно в каталоге.

Новый раздел доступен на странице плагина во вкладке «Поддержка»



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

Подписка на блог по ссылке

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

Кнопки Класс, Tweet и Нравится

Не так давно задумался о интеграции с соц. сетями. Можно было конечно бы и вставить блок Поделится от Яндекса (кстати, хорошую инструкцию по его добавлению можно найти здесь), но мы не ищем легких путей, да и он мне как то не очень понравился. В этом топике я расскажу как добавить эти кнопки. В итоге получится что то типо такого (но смотря чего каждый выберет, вариантов несколько):


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

Прикручиваем 3 Smarty к LS

В коментариях к одному из топиков, randomtoy попросил меня рассказать по подробней про прикрутку smarty 3 к ЛайвСтриту — рассказываю.

Там в общем-то ничего сложного нет.
1) Файл /engine/modules/viewer/Viewer.class.php
Не заработал метод Viewer -> TemplateExists()
Времени разбираться и делать по человечески не было, заменил внутренности функции на следующий код
if (file_exists($sTemplate)) return true;

foreach ($this->oSmarty->template_dir as $dir) {
   if (file_exists($dir . '/' . $sTemplate)) return true;
}
return false;


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

Идеи для плагинов

Пара идей для плагинов. Бесплатно/платно — решать разработчикам.

1. Слежение за мультирегистрацией. Отображать в админке пользователей с одинаковым ip, браузерами и т. Но главное — отображать перезаходы с аккаунта на аккаунт. Думаю — это самый эффективный способ для ловли клонов. Можно сделать у каждого пользователя параметр «Вероятность мультиака» (например, 78%) и сортировать по этому полю. А на других страницах уже подробней.

2. Аналог наград/значков на хабре — habrahabr.ru/info/help/badgets/

Автор. Пользователь, опубликовавший более 10 топиков; рейтинг каждого топика должен быть более 50 баллов.
Звезда. Пользователь, опубликовавший более 20 топиков; рейтинг каждого топика должен быть более 50 баллов.
Легенда. Пользователь, опубликовавший более 30 топиков; рейтинг каждого топика должен быть более 50 баллов.
Комментатор. Пользователь, оставивший 5 комментариев; рейтинг каждого комментария должен быть более 50 баллов.
Старожил. Пользователь, зарегистрированный более 3-х лет назад (на момент обсчета), с кармой больше 50.
Подкастер. Пользователь, опубликовавший не менее 5 захабренных подкастов.
Переводчик. Пользователь, опубликовавший не менее 5 захабренных переводов.
Юморист. Пользователь, опубликовавший в блоге «Юмор на сайте» больше 5 топиков.
Тролль. Пользователь с кармой меньше −100.
Захабренный. Пользователь с кармой >0.
Отхабренный. Пользователь с кармой <0.

Чтобы можно было создавать свои награды с критериями достижений и выдавать вручную или автоматически (опционально).

3. Чтобы при регистрации/входе на сайт пользователь возвращался на ту страницу, с которой начал сее действие. Просто приписывать к ссылке регистрации переменную $url и по ее завершению возвращать на нее.

4. Модуль замены комментариев системой Disqus

5. Измененный модуль инвайтов. Чтобы они отображались у пользователя списком. Чтобы можно было настроить автоматическое создание инвайтов.

6. Модуль для управление блоками. Создание/перемещение.

7. Модуль цензуры. Чтобы можно было задать свои стоп-слова и слова для замены.

8. Аналог модулей CCK и Views для Drupal — создание типов материалов, полей и выводов. Для Livestret такое наверное сложно реализовать и все же.

История про нагрузку и как я с ней боролся.

Случилось так, что на одном из проектов full time стал переваливать за 1,5 сек и при этом сжирался весь проц. При этом все остальные показали были в норме: база — 0,002 сек, кеш — 0,01 сек.

Пришлось прикручивать профайлер и смотреть, в чем дело.

Виноват оказался Smarty, который из 1,5 секунд работал 1,2 (шаблон, на проекте, используется стандартный с легкими изменениями).

Копаясь дальше нашел самый сложный шаблон comments_tree.tpl, который выполняет в цикле инклюд шаблона comment.tpl.

Проблема решилась отказом от инклюда и переносом содержимого из comment.tpl в comments_tree.tpl.

full time на топиках с 400+ комментариев не превышает 0,4 сек.

Надеюсь кому-то поможет.

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

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

Новые возможности по переопределению/наследованию классов 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() {        
    }
}
?>

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

Вывод топиков из vBulletin в LS

Доброго времени суток!

Буквально на днях решил я сделать проект на LS, ибо после нескольких часов экспериментов и копания движка, я пришел к выводу, что он мне ну ооочень нравится. Стандартных возможностей живой улицы хватило фактически для всего проекта, но встала задача выводить последние сообщения с форума VBulletin в LS, некий «прямой эфир» топиков с форума.
Решил поделится с Вами, может кому-то пригодится…

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

Переопределение методов модулей с помощью ...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];
	}
}
?>

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