Могу ли я скрыть цену товара для незарегистрированного пользователя?

Материал из 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 пользователя гость может отличаться.

Личные инструменты