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

Помогите доделать хак "Последние топики автора" [решено]

Решил сделать вывод списка топиков автора на странице топика. Решение как это сделать уже описывалось здесь, просто нужно было адаптировать решение для версии 0.4.2, но это сделать не сложно, просто везде My убрать и все работать будет:
Но вот что не получается: как сделать чтобы в списке топиков не отображался текущий топик, который в данный момент читает пользователь? Здесь проблема в том что за выдачу топиков в списке и за вывод самого топика отвечает одна переменная $oTopic.

Как ввести новую переменную для того чтобы записать в нее текущий топик, а потом отфильтровать его в списке по его Id? Решение в комментарии. Спасибо пользователю xyz.

Проблемы с новым типом топика (не выводится sidebar с описанием блогов)

Сделал новый тип топика — Объявление. Возникли проблемы — пропал sidebar с «Описанием блога» и «Заметка».
Делал по Руководству, аналогично, но с небольшими правками на новую версию движка.

  1. Создал ссылку на создания топика в шаблоне smarty.
  2. В /templates/skin/new/menu.topic_action.tpl добавил строку (ту что между комментариев):
    
    <ul class="sub-menu" >
      <li {if $sMenuItemSelect=='topic'}class="active"{/if}><div><a href="{router page='topic'}{$sMenuSubItemSelect}/">{$aLang.topic_menu_add_topic}</a></div></li>	
      //Эту строку		
      <li {if $sMenuItemSelect=='announcement'}class="active"{/if}><div><a href="{router page='announcement'}{$sMenuSubItemSelect}/">{$aLang.topic_menu_add_announcement}</a></div></li>
      //Эту строку 						
      <li {if $sMenuItemSelect=='question'}class="active"{/if}><div><a href="{router page='question'}{$sMenuSubItemSelect}/">{$aLang.topic_menu_add_question}</a></div></li>
      <li {if $sMenuItemSelect=='link'}class="active"{/if}><div><a href="{router page='link'}{$sMenuSubItemSelect}/">{$aLang.topic_menu_add_link}</a></div></li>
      {hook run='menu_topic_action_add_item'}
      <li ><div><a href="{router page='blog'}add/"><font color="Red">{$aLang.blog_menu_create}</font></a></div></li>
    </ul>
    
  3. Прописал для ссылки путь к классу.
  4. В /config/config.php Добавил:
    $config['router']['page']['announcement']  = 'ActionAnnouncement';
  5. Создал класс /classes/actions/ActionAnnouncement.class.php
  6. На основе ActionTopic.class.php, подправил в следующих строках 'topic' на 'announcement':
    
    22: class ActionAnnouncement extends Action {
    34: protected $sMenuItemSelect='announcement';
    92: $this->sMenuItemSelect='announcement';
    286: $oTopic->setType('announcement');
    
  7. Скопировал шаблоны для нового вида топика
  8. /templates/new/actions/ActionTopic/* в /templates/new/actions/ActionAnnouncement/Какие имена переменных изменять так и не понял. Ничего не изменял.
  9. Подправил структуру БД (Добавлил announcement в возможные варианты поля topic_type таблицы prefix_topic)
Далее не стал делать доп функций для работы с БД.
Заметил этот косяк. Может кто сталкивался, как исправить?

Исходник index.html

всплывающая панель "share"


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

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

Заявка на плагин: внешние ссылки в новом окне

Все доброго дня.
Ну просто кровь из носу необходим плагин, который бы добавлял такой функционал:
— внутренние ссылки — как есть
— внешние ссылки (определяем по домену) — добавляем target="_blank"

Зачем это надо? Да просто для того чтобы бедные юзеры не тыкали каждый раз кнопку Back, чтобы вернуться на ресурс.
Как по мне, намного удобнее просто закрыть окно и оказаться на сайте, с которого куда-то перешел, чем закрыть окно и забыть урл указанного сайта.

Кроме того, все мы пользуемся сервисами типа imagebam для хранения и линковки фото. В этом случае тоже ну очень удобно, когда такая ссылка открывается в новом окне.

Прошу поддержать предложение тех, кому такой функционал тожн необходим.

Спасибо.

P.S.: Да, я знаю, что на Хабре этого нет и все в порядке. Но не забывайте, что айтишник — не простой обыватель, мы умеем нажимать кнопки правильно, а большинство — нет :)

Шаблон «m.»

А мы сделали максимально облегчённый скин для мобильных телефонов.
Вырезан весь «лишний» функционал.
Доступны просмотр списка топиков по категориям, просмотр топика с комментариями и страница последних комментариев


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

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

Предисловие

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

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

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

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

Хак: Ограничение доступа к части топика по рейтингу

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

<rating min="2">Виден пользователям с рейтингом большим или равным 2.</rating>

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

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

Импорт RSS лент (платный модуль)

В связи с релизом, создаю отдельную ветку обсуждений для платного модуля.

Заявленный функционал:

1. парсить RSS =)
2. возможно задавать более одного рсс потока
3. у каждого потока есть три поля для заполнения
3.1 урл потока
3.2 частота обновления
3.3 блог в который постим
3.4 имя пользователя от которого постим
3.5 в конфиге выбираем куда постить, сразу на сайт, или в черновики.
4. постинг идет в виде топика, в указанный блог.
5. запуск по крону
6. работает с яху пайпс и другими RSS со стандартными полями

Модуль для 0.3.1 тут — livestreet.ru/addons/94/
Цена на версию для 0.3.1 — 900руб.
Цена на версию для 0.4.2 — 1300руб.


Поддержка будет осуществляться на релизной основе. По мере поступления запросов на доп. функционал.
Для тех кто желает парсить полнотекст, готов в комплекте дать Yahoo Pipes =)
Вобщем поддержке быть как положено платному модулю.

UPD в версии 1.1 добавлено:
1. картинки забираються теперь на сервер (в релизе 1.0 были ссылки)
в конфиг вынесено куда прижимать картинку (право, лево, оставить как было в рсс)

2. теперь ставиться тег «кат», в конфиге настройка сколько символов отступить от начала топика до ката. (с проверкой непопал ли кат в открытый тег, если попал то кат ищет конец тега и стаиться после него)

3. смастерили хитрую систему подбора тегов к топику (автотег) работает по такой схеме: (слово более трех букв) проверяем какие слова из тайтла встречаються в тексте топика, за каждое совпадение начисляем +10 очков слову, выбираем самые популярные, и ставим их тегами
ну качество канечно не как тыбы сам руками ставил но всеже. кол-во тегов вынесено в конфиг. по умолчанию 3 тега на пост

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

5. в админке добавлена возможность редактировать уже добавленные рсс
В конфиге добавлено:
6. включить выключить автотэги
7. сколько тегов на пост вешать
8. включить выключить кат
9. постить простой топик или постить топики топикссылкой

UPD2: Вобщем готова версия под 0.4.2 =)