+12.52
Рейтинг
17.26
Сила

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

Вывод аватарки (или фото автора) в тексте топика

В одном из проектов возникла необходимость вывести аватарку или фотку автора прямо в основной текст поста (в .content). Я перепробовал множество вариантов и комбинаций, брал и из whois и еще из разных мест — не выходит, что-то меня никак не осенит как правильно сделать. Помогите плиз…

Кнопка "Вставить Картинку"

Помогите пожалуйста:
(скриншот ниже)
Как сделать такую кнопку (1), при нажатии на которую открывалось бы окно (2) и в итоге вставлялось бы в поле для ввода текст (3)?
Стандратный загрузчик не устраивает тем, что он может заливать на сервер свой. А мне вот нужно только чтобы ссылку вставляли уже готовую… Спасибо.

Кнопка "Вступить в блог"

Заметил (на опыте своего проекта), что в шаблонах new и light (остальные не изучал :) ) Очень не интуитивно сделана кногпка «Вступить в блог»

Она маленькая и при ненаведённой мыше практически незаметная (светло-серая).
Код кнопки такой:
<li><a href="#" id="block_blogs_join" onclick="lsBlockBlogs.toggle(this,'blogs_join'); return false;">{$aLang.block_blogs_join}</a></li>

Само изображение кнопки находиться в фале icons.gif

т.е. все кнопки в одном окошке…
Подскажите, как сделать кнопку «Вступить в блог» более эргономичной для пользователей!
Заранее благодарен за помощь

Вопрос при регистрации

Для многих движков есть модули цель которых не допустить автоматическую регистрацию. Решил сделать для LS, что-то подобное.

Юзер переходит на страницу регистрации. Вводит данные во все стандартные поля + в доп. поле вводит ответ на вопрос. Если ответ не совпадает с заданным в настройках, то говорим юзеру, что он ответил неправильно и аккаунт не регистрируем. Если правильно, то регистрируем :)

Поехали…
Читать дальше →

Перекрашиваем сайт, руководство css для начинающих

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

mozilla firefox — браузер
firebug — плагин для браузера
adobe photoshop, или любая другая программа, в которой можно выбирать цвета
текстовый редактор с поиском, например notepad++
собственный головной мозг

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