Уж простите, если подобных вопросов море, хорошо искал, но ответа не нашел. Собственно вопрос - можно ли как-то в Уберкарте скрыть цену от глаз незарегистрированных пользователей? Покопавшись в Уберкарте, не обнаружил такой возможности.
Если нет, то можно ли это сделать в E-commerce?
P.s. Ну прям хоть обижайся и уходи на VirtueMart...
Комментарии
А еще бы Вам про темизацию нод почитать и тогда обижаться не будете. ))
Есть в ноде товара конкретная переменная $node->sell_price.
Следовательно ничего не мешает на хуке nodeapi на событии load, а лучше view написать следующее
if (!$user->uid) {
unset($node->sell_price);
}
Либо просто указать аналогичное условие для вывода в шаблоне если вы конечно вытягиваете через шаблон данные по полям а не единой переменной $node->content.
Спасибо за подсказку. Уже разобрался, отписаться здесь не успел. немного другой путь нашел на сайте уберкарта. немного подредактировал и работает.
вставляем в uc_product.module такой вот код:
global $user;
$node->content['display_price']['#access'] = $node->content['display_price']['#access'] && $user->uid;
$node->content['sell_price']['#access'] = $node->content['sell_price']['#access'] && $user->uid;
if ($user->uid == 0 && $op = 'view') {
$node->content['add_to_cart']['#value'] = (t('You must login or register to see prices and purchase. Please, <a href="/user/login">login</a><a href="/user/register">Register</a>'));
}
}
и теперь всем незарегистрированным будет предложено зарегистрироваться, чтобы увидеть цены и кнопку "Корзина". У такого способа есть один недостаток - при выводе модулем Каталог или Views, цены все равно выводятся, а скрываются только тизере и самом товаре.
Думаю, надо через шаблон сделать, правильнее оно как-то.
Да, забыл: Друпал 5, Уберкарт 1.6
Да создайте вы свой модуль, в нем функию my_module_nodeapi() и там допишите предложенную логику и не надо будет темизировать и уж тем более писать в чужих готовых модулях. И при обновлении помнить о том что вы там что-то дописали.
Тем более этот хук может пригодится для других более "высоких" целей. )))
собственно, такой модуль уже есть, как оказалось. на Ubercart.org лежит вот тут
и чего сразу не посмотрел, спрашивается
Там есть и под Д6, но при использовании вьюсы цена видна.
Как побороть?
да, viewsом можно либо выводить цену для всех, либо не выводить вообще. в данном случае, он не поможет. можно попробовать аргументы, то что-то сильно сомневаюсь, что это верный путь. я делал без видов, ссылки просто на термины таксономии. так работает.
Мне без вьюсы нельзя )))
Можно сделать 2 пункта меню, один для всех без цены, а второй с ценой видят только зарегистрированные. Но это если совсем прижмет.
только наверное не пункта, а разных меню вообще. соответственное, и виды дублировать надо, указывая видимость для нужных ролей. и потом блоки меню показывать только определенным ролям. для зарегенных - с ценами, для анонимов - без. но это явно неверное решение. на самый крайний случай можно оставить.
а если будете передавать заказчику, спасибо за такое решение он вам не скажет