Текст для пользователей определенной категории
Как вывести текст в карте товара, чтобы он был виден пользователям только из определенной категории. Например есть категория пользователей, которым предоставляется скидка, нужно чтобы в карте товара только им был виден текст "СКИДКА N%".
Пробовал так
{if $wa->user['category_id'] == 7} не получается
Пробовал так
{if $wa->user['category_id'] == 7} не получается
10 ответов
Необходимо написать хелпер Пользовательские хелперы
class shopCustom {
public static function myHelper($user_id)
{
}
в шаблоне
{$cat_ids = shopCustom::myHelper($wa->user('id'))}
//id категории, которой надо что-то вывести
{$your_id = 4}
{if in_array($your_id,$cat_ids)}
//тут выводим, к примеру промо-код
{/if}
Код не проверял, так что смотрите сами что там выводится, когда добавите хелпер не забудьте почистить кэш
Не работает, может я что-то не так сделал?
Создал файл - 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, т к в ней есть все пользователи, но ничего не выводит
{$wa->user('id')|var_dump}
{$cat_ids = shopCategoryuser::myHelper($wa->user('id'))}
{$cat_ids|var_dump}
что выводит?
Убедитесь, что ваш пользователь состоит в категории 1
$cat_ids = $model->getContactCategories($user_id)->fetchAll();
тут еще поправьте
{$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
Я пробую для администратора, а администратор состоит во всех категориях. Вообще нужно чтобы для пользователей категории 5 "Скидка 10%" было видно что у них есть скидка, ну и конечную цену показывало со скидкой, но это я уже решил, осталось только сделать видимость этой инфы
fetchAll да не правильно, что перепутал,
надо прокрутить этот массив
//вызываем хелпер
//проверяем
{$temp = 0}
{foreach $cat_ids as $cat_id}
{if $cat_id.id == $your_id}
{$temp = 1}
{break}
{/if}
{/foreach}
{if $temp}
промокод
{/if}
Работает, спасибо огромное!!!
Можно ваш рабочий пример?
В шаблоне, при помощи:
{$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}
не работает и ничего не выводит...