Закрепление топика на главной: мое решение


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

Плагин небольшой и его идея заключается в добавлении и реализации собственного хука.

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

Сразу скажу, речь идет о закреплении одного-единственного топика, идентификатор которого и указывается в настройках плагина.

22 комментария

avatar
'fixed_topic_id' => 16, 18,10,20 – не прохавает?
avatar
Можно скрин? Графически как то подкреплено или просто он всегда на верху или есть кнопка ПИН или что то такое? или слово что он прикреплен и тп?
avatar
Он просто всегда на верху.
avatar
не, дя этого в хуке плагинам вам надо заменить 28 ряд
$oTopic = $this->Topic_GetTopicById(Config::Get('plugin.fixedtopic.fixed_topic_id'));

на
$oTopic = $this->Topic_GetTopicsByArrayId(Config::Get('plugin.fixedtopic.fixed_topic_id'));


и в конфиге
'fixed_topic_id' => array(16,18,10,20),
avatar
И в шаблоне хука вывод топика поставить в цикл по каждому топику из массива
avatar
Нет, закрепляется только один топик.
avatar
Файл плагина не найден
avatar
Файлы с гитхаба необходимо поместить в каталог плагина — fixedtopic
avatar
Топик закрепляется, но происходит дублирование, т.е. оригинал топика остается на своем месте плюс еще такой же вверху на главной. Если указать несуществующий — то вылазит ошибка Fatal error: Call to a member function getBlog() on a non-object in /...../multiblog.ru/templates/compiled/synio/37047c2129f69223dd8bf063b8bfea28b1ca921a.file.topic_part_header.tpl.php on line 33
avatar
Если указать несуществующий — то вылазит ошибка Fatal error: Call to a member function getBlog() on a non-object in /...../multiblog.ru/templates/compiled/synio/37047c2129f69223dd8bf063b8bfea28b1ca921a.file.topic_part_header.tpl.php on line 33
в хукфаиле найди
public function ShowFixedTopic() {
        $oTopic = $this->Topic_GetTopicById(Config::Get('plugin.fixedtopic.fixed_topic_id'));
        $this->Viewer_Assign('oTopic', $oTopic);
        return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__) . 'fixed_topic.tpl');
    }


замени на
public function ShowFixedTopic() {
        if($oTopic = $this->Topic_GetTopicById(Config::Get('plugin.fixedtopic.fixed_topic_id'))){
           $this->Viewer_Assign('oTopic', $oTopic);
           return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__) . 'fixed_topic.tpl');
        }
    }
avatar
Исправил проверкой вывода в шаблоне. Репозитарий на github обновлен.
avatar
Как по-мне, проще сделать рядом с дефолтным чекбоксом Принудительно вывести на главную, еще один чекбокс — Закрепить на главной. Можно еще и период указать на какое время. Тогда админ сможет любой топик пришпандорить на главную. Элементарно делается и париться не надо :)
  • aex
  • +1
avatar
Ну если разбираешься — поделись пожалуйста решением.
avatar
Да так действительно удобнее, но у меня такой задачи не было, хотя..., наверное, чуть позже добавлю и галочку.
avatar
Чуть-чуть не успел :)

Мой плагин находится на модерации в каталоге и уж пусть его можно будет скачать из официального источника после проверки. Для тех, кто хочет посмотреть, что он умеет — imthinker.ru/2012/331/
avatar
Бесплатен?
avatar
да
avatar
Это плагин выкладывать в каталог, я вижу, уже смысла нет — у Вас функционала побольше будет)
avatar
Ну я хотел дождаться модерации своего плагина, прежде чем его анонсировать. Поэтому вот так получилось… :)
avatar
kerby
бросьте ссылочку чтоб скачать можно было, на модерации долго ждать :)
avatar
Ну тогда уж и пост сделаю :)
avatar
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.