+60.64
450 читателей, 105 топиков

«LiveStreet и 500 000 топиков», часть 1: «Что сделать с тем что имеем»

Садист?
Садист!
Да, черт возьми, я садист! (сенсация? попахивает!) :-D


Вы уже наверно читали мой предыдущий пост, где я тестил LS на 200 000 новостей…

В этот раз я нашпиговал самизнаетечто полумиллоном реальных новостей (500 000)… и решил все это тестануть :)

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

Мануал как добавить яндекс карты к топику

Многии задаются вопросом как добавить yandex какрту к топику чтобы можно было отмечать точки.
Такой вопрос встал и у меня после неудачного серфинга понял что прийдётся под свои нужды писать самому.

Я думаю многим будет интересно как я это сделал поэтому представляю список всех изменений что я вносил в код.

Оговорюсь сразу делал не через плагины а правил коды. Просто времени на изучение плагинов небыло.

И так приступим

1. В \classes\actions\ActionTopic.class.php после:
$_REQUEST['topic_title']=$oTopic->getTitle();


добавил:
$_REQUEST['coodrinati']=$oTopic->getCoodrinati();



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

Кнопка "загрузить файл" в стандартном редакторе

Основные возможности:

  • Ограничение загрузки по типам

  • Загрузка по прямой ссылке на файл

  • Защита от хотлинков

  • Подсветка типа файла иконкой

  • Префикс для загружаемых файлов

  • Транслитерация русских имен файлов



Как это выглядит

Модификация: приватные топики

Собственно, сделал функционал приватных топиков к LS 0.3.

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



Скачать патч можно тут:
aklabs.com/hlam/livestreet_private.zip

Просто выполните sql и накатайте все файлы поверх LiveStreet 0.3.
Внутри есть еще changes.txt (список того что надо менять и на что), но там много изменений, так что только в крайнем случае пользуйте.

PS. Думаю, что особая польза будет при использовании совместно с френдлентой, реализацию которой тут предложили недавно.

Внутренний голос. По заявкам :)

Хабраклонирование по заявкам жаждущих :)
Итак, что же такое внутренний голос — пример можно посмотреть на… ну конечно, хабре.
А вот здесь написано зачем это нужно.
Читать дальше →

Облагораживаем статистику производительности

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

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

OpenID реализация

Для реализации вам потребуется:
  1. добавить поле user_openid в таблицу пользователей

  2. Изменить форму входа, которая на каджой странице

  3. Изменить форму входа, которая на странице входа

  4. Изменить модельку пользователя

  5. Изменить actionRegister


Кстати кат я переделал, у меня нормально работал. В tinyMCE — обрезает по [cut]

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

Добавляем сайдбар на статические страницы

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

похожие темы через 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
п.п.с. делаем на свой страх и риск, так что не забываем о том что надо бэкапить файлы ;)

Блок с данными автора на странице топика

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

Задача: вывести при просмотре топика блок с информацией об авторе топика в сайдбаре справа следующего вида:


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