Текст для пользователей определенной категории

Как вывести текст в карте товара, чтобы он был виден пользователям только из определенной категории. Например есть категория пользователей, которым предоставляется скидка, нужно чтобы в карте товара только им был виден текст "СКИДКА N%".
Пробовал так
{if $wa->user['category_id'] == 7} не получается

10 ответов

  • 2

    Необходимо написать хелпер Пользовательские хелперы


    class shopCustom {
    public static function myHelper($user_id)

    {

    $model = new waContactCategoriesModel();
    $cat_ids = $model->getContactCategories($user_id);
    return $cat_ids

    }

    в шаблоне
    {$cat_ids = shopCustom::myHelper($wa->user('id'))}

    //id категории, которой надо что-то вывести
    {$your_id = 4}
    {if in_array($your_id,$cat_ids)}

    //тут выводим, к примеру промо-код

    {/if}


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


  • 1
    Wanderer 30 ноября 2014 01:25 #

    Не работает, может я что-то не так сделал?

    Создал файл - www/wa-apps/shop/lib/classes/shopCategoryuser.class.php

    В нем:

    <?php

    class shopCategoryuser {

    public static function myHelper($user_id)

    {

    $model = new waContactCategoriesModel();

    $cat_ids = $model->getContactCategories($user_id);

    return $cat_ids;

    }

    }

    Ну и в шаблоне:

    {$cat_ids = shopCategoryuser::myHelper($wa->user('id'))}


    //id категории, которой надо что-то вывести

    {$your_id = 1}

    {if in_array($your_id,$cat_ids)}

    промокод

    {/if}

    Категорию для проверки поставил №1, т к в ней есть все пользователи, но ничего не выводит


  • 1
    Wanderer 30 ноября 2014 02:52 #

    {$wa->user('id')|var_dump}

    {$cat_ids = shopCategoryuser::myHelper($wa->user('id'))}
    {$cat_ids|var_dump}


    выводит

    string(1) "1" array(3) { [5]=> array(6) { ["id"]=> string(1) "5" ["name"]=> string(16) "Скидка 10%" ["system_id"]=> NULL ["app_id"]=> string(4) "shop" ["icon"]=> string(7) "reports" ["cnt"]=> string(2) "13" } [1]=> array(6) { ["id"]=> string(1) "1" ["name"]=> string(4) "shop" ["system_id"]=> string(4) "shop" ["app_id"]=> NULL ["icon"]=> NULL ["cnt"]=> string(2) "37" } [7]=> array(6) { ["id"]=> string(1) "7" ["name"]=> string(20) "Подписчики" ["system_id"]=> NULL ["app_id"]=> NULL ["icon"]=> NULL ["cnt"]=> string(2) "31" } }


    при правке fetchAll(); ругается - Fatal error: Call to a member function fetchAll() on a non-object

  • 1
    Wanderer 30 ноября 2014 02:56 #

    Я пробую для администратора, а администратор состоит во всех категориях. Вообще нужно чтобы для пользователей категории 5 "Скидка 10%" было видно что у них есть скидка, ну и конечную цену показывало со скидкой, но это я уже решил, осталось только сделать видимость этой инфы

  • 1

    В шаблоне, при помощи:

    {$wa->user('id')|var_dump}

    {$cat_ids = shopCategoryuser::myHelper($wa->user('id'))}

    {$cat_ids|var_dump}

    выводится: string(1) "3" array(2) { [3]=> array(6) { ["id"]=> string(1) "3" ["name"]=> string(29) "Новая категория" ["system_id"]=> NULL ["app_id"]=> NULL ["icon"]=> NULL ["cnt"]=> string(1) "1" } [4]=> array(6) { ["id"]=> string(1) "4" ["name"]=> string(4) "shop" ["system_id"]=> string(4) "shop" ["app_id"]=> NULL ["icon"]=> NULL ["cnt"]=> string(1) "0" } }


    Как теперь сделать проверку на категорию пользователя в шаблоне, т.к.

    {$cat_ids = shopCategoryuser::myHelper($wa->user('id'))}

    {$temp = 0}
    {foreach $cat_ids as $cat_id}
    {if $cat_id.id == $your_id}
    {$temp = 3}
    {break}
    {/if}
    {/foreach}
    {if $temp}
    промокод
    {/if}

    не работает и ничего не выводит...


Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите