решено Показ рекламы определенным группам

Exile

Администратор
В движке пока еще нет переменной для группы пользователя, я немного не понимаю что вы тут изобрести хотите. Можно только по базовым уровням доступа выводить: гость/пользователь/участник групп/модератор/администратор/правообладатель.
 

ExPlayer

Пользователь
В движке пока еще нет переменной для группы пользователя, я немного не понимаю что вы тут изобрести хотите. Можно только по базовым уровням доступа выводить: гость/пользователь/участник групп/модератор/администратор/правообладатель.
Примерно тоже, что и на русторке, там есть отдельная группа "Пользователь без рекламы"
 

Exile

Администратор
ExPlayer, если запрос ничего не возвращает - значит некой переменной VIP в шаблоне присваиваем значение false, иначе true. И в дальнейшем при использовании <!-- IF not VIP -->рекламный код<!-- ENDIF --> члены этой группы рекламу видеть не будут.
 

ExPlayer

Пользователь
ExPlayer, если запрос ничего не возвращает - значит некой переменной VIP в шаблоне присваиваем значение false, иначе true. И в дальнейшем при использовании <!-- IF not VIP -->рекламный код<!-- ENDIF --> члены этой группы рекламу видеть не будут.
Понятно. Спасибо за разъяснение.
 

ExPlayer

Пользователь
Exile можете расписать полный код, который надо прописывать в php/tpl файле?
А то сделал запрос в базу и потом прописал
Код:
<!-- IF not VIP -->рекламный код<!-- ENDIF -->
на что у меня вылез нотис, что "VIP" - это не Undefined index:
Код:
Notice: Undefined index: VIP in /var/www/admin/data/www/my-site/library/includes/template.php(259) : eval()'d code on line 297
 

zxc

Легенда
Нужно найти функцию get_userdata и поменять в functions.php
PHP:
    $sql = "SELECT u.*,tr.peer_id FROM ". BB_USERS ." u
            LEFT JOIN ". BB_BT_TRACKER ." tr ON tr.user_id=u.user_id
            $where_sql $anon_sql LIMIT 1";
на
PHP:
    $sql = "SELECT u.*,tr.peer_id,ug.group_id FROM ". BB_USERS ." u
            LEFT JOIN ". BB_BT_TRACKER ." tr ON tr.user_id=u.user_id
            LEFT JOIN ".BB_USER_GROUP ." ug ON ug.user_id=u.user_id
            $where_sql $anon_sql LIMIT 1";

И тогда в файле viewtopic.php у тебя появится переменная $userdata['group_id']
где можешь определить свой вип
PHP:
'VIP' => (in_array($bb_cfg['vip_group_ids'], $userdata['group_id']))?true:false,

в конфиг добавить строку и перечисляешь id групп кому не показывать рекламу
PHP:
$bb_cfg['vip_group_ids']=array(1,2,3,4);

и уж потом использовать
<!-- IF not VIP -->рекламный код<!-- ENDIF -->

p.s. sql запрос у тебя возможно будет отличаться от моего
 
Последнее редактирование:

ExPlayer

Пользователь
zxc вот вся функция get_userdata. Какой из всех запросов заменять?

Код:
function get_userdata ($u, $force_name = false, $allow_guest = false)
{
    if (!$u) return false;

    if (intval($u) == GUEST_UID && $allow_guest)
    {
        if ($u_data = CACHE('bb_cache')->get('guest_userdata'))
        {
            return $u_data;
        }
    }

    $u_data = array();
    $name_search = false;
    $exclude_anon_sql = (!$allow_guest) ? "AND user_id != ". GUEST_UID : '';

    if ($force_name || !is_numeric($u))
    {
        $name_search = true;
        $where_sql = "WHERE username = '". DB()->escape(clean_username($u)) ."'";
    }
    else
    {
        $where_sql = "WHERE user_id = ". (int) $u;
    }

    $sql = "SELECT * FROM ". BB_USERS ." $where_sql $exclude_anon_sql LIMIT 1";

    if (!$u_data = DB()->fetch_row($sql))
    {
        if (!is_int($u) && !$name_search)
        {
            $where_sql = "WHERE username = '". DB()->escape(clean_username($u)) ."'";
            $sql = "SELECT * FROM ". BB_USERS ." $where_sql $exclude_anon_sql LIMIT 1";
            $u_data = DB()->fetch_row($sql);
        }
    }

    if ($u_data['user_id'] == GUEST_UID)
    {
        CACHE('bb_cache')->set('guest_userdata', $u_data);
    }

    return $u_data;
}
 
Сверху