Подписки на темы форума 7+

1.86K
.
(\/)____o_O____(\/)
Добавлено: 04.05.2017 / 23:04
Многие тут на форуме просили сделать умные непрочитанные
добавляем пару кнопок в низ темы
файл /forum/index.php

примерно после кураторов line: 830+

// тут кнопки pick/ban темы
                $subscribe = new Johncms\Subscribe();
                echo '<p class="gmenu green">'
                    . (!$subscribe->isPick($id) ? '<a href="index.php?act=subscribe&amp;do=pick&amp;pick=' . $id . '">' . _t('Pick subscribe') . '</a>' : _t('Pick subscribe')) 
                    . ' | ' 
                    . (!$subscribe->isBan($id) ? '<a  href="index.php?act=subscribe&amp;do=ban&amp;ban=' . $id . '">' . _t('Ban subscribe') . '</a>' : _t('Ban subscribe'))
                    . '</p>';
                
                // Ссылки на модерские функции управления темой

прихватил комментарий для ориентира
далее в том же файле (index)
добавим кнопку на непрочитанное в двух местах
так же прихвачу ориентир
line: 900+
////////////////////////////////////////////////////////////
        // Список Категорий форума                                //
        ////////////////////////////////////////////////////////////
        $count = $db->query("SELECT COUNT(*) FROM `cms_forum_files`" . ($systemUser->rights >= 7 ? '' : " WHERE `del` != '1'"))->fetchColumn();
        echo '<p>' . $counters->forumNew(1) .
            ($systemUser->isValid() ? '<br><a href="?act=subscribe">' . _t('My subscribe') . '</a></p>' : '') .
            '<div class="phdr"><b>' . _t('Forum') . '</b></div>' .
            '<div class="topmenu"><a href="search.php">' . _t('Search') . '</a> | <a href="index.php?act=files">' . _t('Files') . '</a> <span class="red">(' . $count . ')</span></div>';

line: 300+
// Выводим верхнюю панель навигации
        echo '<a id="up"></a><p>' . $counters->forumNew(1) .
            ($systemUser->isValid() ? '<br><a href="?act=subscribe">' . _t('My subscribe') . '</a></p>' : '') .
            '<div class="phdr">' . implode(' / ', $tree) . '</div>' .
            '<div class="topmenu"><a href="search.php?id=' . $id . '">' . _t('Search') . '</a>' . ($filelink ? ' | ' . $filelink : '') . ($wholink ? ' | ' . $wholink : '') . '</div>';

так же не забываем добавить элемент массива для action
элемент subscribe
// Переключаем режимы работы
$mods = [
    'addfile',
    'addvote',
    'close',
    'deltema',
    'delvote',
    'editpost',
    'editvote',
    'file',
    'files',
    'filter',
    'loadtem',
    'massdel',
    'new',
    'nt',
    'per',
    'post',
    'ren',
    'restore',
    'say',
    'tema',
    'users',
    'vip',
    'vote',
    'who',
    'curators',
    'subscribe', // вот это нужно добавить
];

далее с архива закинуть класс Subscribe.php -> /system/johncms/Subscribe.php
и в папку subscribe.php -> /forum/includes/subscribe.php

Добавлено: 04.05.2017 / 23:07
Кто поставил сам, молодец
Скрины думаю там лишние, можно как подписаться на тему, так и забанить тему от попадания в свои непрочитанные
не используется таблица непрочитанных, все работает по спискам тем подписок и тем банов, плюс временная метка
Прикрепленные файлы:
.
JohnCMS
Спасибо? а для шестерки нчть?
.
(\/)____o_O____(\/)
Jesk, переписать думаю ты и сам сможешь, ссылки по аналогии добавить
то есть
if ($user_id) {
// ссылки
}
так же добавить элемент в массив инклюдов
класс положить в incfiles/classes в самом классе переписать запросы, можно заюзать global $user_id, $settings, пока не хочу под шестерку пилить, так как думаю если заинтересует, сделать подписку на целый раздел, и все темы с раздела будут выдаваться в непрочитанном
.
╭∩╮ (`-`) ╭∩╮
Ты функционал подробнее бы описал.
Если полезно для всех и сильно не нагружает, может в оф. версию запилить?
.
(\/)____o_O____(\/)
AlkatraZ, скрин покажу
Прикрепленные файлы:
.
(\/)____o_O____(\/)
AlkatraZ, ну а остальное как в непрочитанных, можно так же смотреть за период и сбрасывать, таблица непрочитанных, которая тут растет в геометрической прогрессии не используется
.
aNNiMON
Koenig, а сам счетчик непрочитанных меняется? Или будут вторые непрочитанные?
Пока писал, ты уже ответил.
.
╭∩╮ (`-`) ╭∩╮
# Koenig (05.05.2017 / 00:43)
таблица непрочитанных, которая тут растет в геометрической прогрессии не используется
Вот тут не понял
Каким образом ты без таблицы отслеживаешь подписки?
.
(\/)____o_O____(\/)
AlkatraZ, в настройках форума в поле где сереализация хранится, добавил массивы, туда пишу иды банов и пиков, и временную метку, непрочитанные выбираю по id in(1,2,3) and id not in(3,4,5) and time > $time из таблицы форума
.
(\/)____o_O____(\/)
AlkatraZ, потом сделаю чтоб подписку на целый раздел делать можно было, там по типу собрать все темы раздела (только динамически будет собирать)
тут сразу вопрос ,хватит ли нам для хранения таких настроек типа текст , или можно увеличить лимит поля?
Всего: 60