Могу ли я скрыть цену товара для незарегистрированного пользователя?
Материал из Umicms
Для решения данной задачи можно использовать кастомный макрос. В файл classes/modules/custom.php запишем код:
public function priceforuser($element_id){
$permissions = permissionsCollection::getInstance();
$currentUserId = $permissions->getUserId();
// 2373 - id гостя.
if($currentUserId != 2373){
$emarket_inst = cmsController::getInstance()->getModule("emarket");
return $emarket_inst->price($element_id, 'userprice', 0);
} else return "Зарегистрируйтесь, чтобы увидеть цены";
}
Теперь необходимо указать в шаблонах вывода объектов каталога вместо обычного вывода цены, вывод по кастомному макросу. При использовании стандартных tpl-шаблонов от демо-сайта необходимо заменить
в шаблоне tpls/catalog/default.tpl
%emarket price('%id%', 'short')% заменяем на
%custom priceforuser(%id%)%
и в tpls/catalog/preview.tpl
%data getProperty(%id%, 'price', 'catalog_preview')% меняем на %custom priceforuser(%id%)%
Обратите внимание!!!
В версии системы 2.8.3. и далее id пользователя гость может отличаться.
