Показать только один тип цены в каталоге Битрикс

Просмотров: 17671

Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на сайте имеется несколько групп оптовых покупателей, для которых заведены определенные типы цен. И есть розничные цены. Если оптовик заходит под своей учеткой-то он видет оба типа цен, хотя и покупает по своей. Давайте скроем от него розничную цену, что бы не мешалась

Создаем группы и выставляем права на цены

Сначала создаем нужные группы оптовиков, для этого проходим в Администрирование-настройки-Пользователи-Группы пользователей и нажимаем "Добавить группу"

Создаем группы с помощью пошагового мастера, на данном этапе нужно только вписать название группы и символьный индетификатор на латинице. Остальные настройки можно не трогать, они не относятся к теме данной записки.

Типы цен создаются тут: Администрирование- Магазин- Настройки-Типы цен

По умолчанию, у вас всегда будет как минимум один тип цены, как правило он называется "Розничные" или "Интернет цена"- по ней производится покупка и оформление товаров по умолчанию. И она всегда доступна для всех пользователей, в том числе не авторизованных.

Создаем свои типы цен. Самое главное это вписать название цены и выставить права доступа. На скриншоте: Цена называется "Для выгрузки на сайт Казахстан", ее ID = "6" и доступна на просмотр и покупку только для пользователей находящихся в группах с ID 8 и 9.

Вот тут и начинается диллемма

Если посмотрим на каталог товаров как пользователь из группы 8, авторизовавшись от его имени увидим две цены в каталоге. Свою, на которую разрешен просмотр и покупка и "Розничную"- так как мы являемся "Все пользователи в том числе не авторизованные"

Что бы скрыть розничную цену (как вариант оформить ее как-то иначе или задвинуть в другой угол карточки товара). Можно воспользоватяся API битрикс, на проверку группы текущего авторизованного пользователя пользователя.

В том месте, где в шаблоне каталога выводятся цены, размещаем вот такой код (подсказки по коду прямо в нем):

<?foreach($arElement["PRICES"] as $code=>$arPrice):
$arGroupAvalaible = array(8,9); // массив групп, которые в которых нужно проверить доступность пользователя
$arGroups = CUser::GetUserGroup($USER->GetID()); // массив групп, в которых состоит пользователь
$result_intersect = array_intersect($arGroupAvalaible, $arGroups);// далее проверяем, если пользователь вошёл хотя бы в одну из групп
if(!empty($result_intersect)){
	if ($arPrice["PRICE_ID"] == "6") //Показываем ему тип цены с ID-6 (и только ее){
		echo $arPrice["VALUE"].' руб.';
	}
}else{
	if($arPrice["PRICE_ID"] == "3") { //Показываем цену с ID-3 (в моем случае розничная)
	{
		echo $arPrice["VALUE"].' руб.';
	}
}
endforeach;?>⁠

Вот таким образом можно скрыть не нужные пользователю типы цен. Как правило, актуально только если у вас несколько групп пользователей с правом на покупку по определенному типу цены

Александр Жулин 04.04.2018
Приветствую я конечно (возможно) не правильно сделал. Но вот внедрил 02.04.2018 некий код. У меня штук 20 типов цен. И для каждого покупателя надо выводить определенную цену, бывает даже 2 цены. Может подскажите правильно ли это. Ну судя по продажам выводится цены правильные + в корзину падает правильная цена.
Создал (например) группу пользователей Оптовые покупатели(10), Дилеры(12), Крупный опт(14), ......Так же создал типы цен - ОПТ(WHOLESALE) Дилерская(Diler) КрОПТ(KrOpt). Зарегистрировал пользователей и дал им группу в соответствие с типом цен.
Открываю компоненту bitrix:catalog и приписываю до вывода компоненты:
if(in_array(10, CUser::GetUserGroup($USER->GetID()))){
   $pri = array (0=>"BASE",1=>"WHOLESALE");
}
elseif(in_array(12, CUser::GetUserGroup($USER->GetID()))){
   $pri = array (0=>"Diler");
}

elseif(in_array(14, CUser::GetUserGroup($USER->GetID()))){
   $pri = array (0=>"KrOpt");
}

else {
   $pri = array (0=>"BASE");
}

Далее в компоненте ищу строчку "PRICE_CODE" и прописываю

""PRICE_CODE" => $pri,"
И выводятся у меня цены в соответствии с группой пользователей. Для пользователей группы 10 выводится 2 цены Розничная и оптовая. Для других групп своя 1 цена. Для остальных (В том числе не авторизованные) Розничная цена (BASE).
Дмитрий Иванов 25.11.2020
Подскажите, пожалуйста, можно ли реализовать переключение пользователя между группами пользователей/типами цен, допустим, оптовая цена и бесплатная доставка от 100 000, розничная цена и доставка от 5 000?
Гость 19.05.2022
а где этот код можно вставить?
жалко что не вставили скрин или пут к файлу для правки.

и еще. при создание второго типа цен и выставление в настройках отображения по группам - для второй группы удалились цены и теперь пишет что товар не доступен и необходимо на него подписаться......
Михаил Базаров 19.05.2022
Цитата
Гость написал:
а где этот код можно вставить?
жалко что не вставили скрин или пут к файлу для правки.

и еще. при создание второго типа цен и выставление в настройках отображения по группам - для второй группы удалились цены и теперь пишет что товар не доступен и необходимо на него подписаться......

Собственнл в шаблоне списка элементов и в детальной карточке товара. У вас пути могут отличаться, особенно если какое-то готовое решение, типа Аспро.
По умолчанию:
/ШАБЛОН_САЙТА/components/bitrix/catalog.item/НАЗВАНИЕ_ШАБЛОНА/card/template.php
и
/ШАБЛОН_САЙТА/components/bitrix/catalog.element/НАЗВАНИЕ_ШАБЛОНА/template.php

А показ цен: может быть разрешили просмотр но не покупку. Там же, в настройках цены.
Гость 10.07.2024
Всё просто и понятно!
   
опечатка 1 - (верно - дилемма):  "Вот тут и начинается диллема"
опечатка 2 - (верно - увидим):     "то увидем две цены в каталоге"
Гость 11.07.2024
    Дилемма не поддаётся   :) :
   опечатка 1 - (верно - дилемма): "Вот тут и начинается диллемма"
   
   Вот ещё нашлось:
   опечатка 2 - (верно - видит): "то он видет оба типа цен"
   опечатка 3 - (что бы - слитно): "что бы не мешалась"
   опечатка 4 - (Что бы - слитно): "Что бы скрыть розничную цену"
   опечатка 5 - (дубль слова): "авторизованного пользователя пользователя"

Блог-note: заметки разработчика

Постраничная навигация в списке разделов Битрикс- catalog.section.list

Если в магазине очень много разделов и хочется вывести их с постраничной навигацией: можно воспользоваться методами CDBR...

Добавить СЕО-метатеги в результаты поиска по каталогу

Задача: на странице с результатами поиска по каталогу нужно установить уникальные метатеги: keywords, description, canon...

Адаптивное гамбургер меню для битрикс

Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В архиве готовый шаблон для Битри...

Вывести товары из того же раздела в карточке товара

Немножко топорный, но все же вполне действенный способ по выводу внутри подробной карточки товара, элементов того же раз...

Фотогалерея на шаблоне новостей в 1С-Битрикс

Частенько стоит задача, по мимо стандартных "Картинка для анонса" и "Детальная картинка", добавить в...

Получение SEO данных элементов и разделов инфоблока, через API 1С-Битрикс

Для того чтобы извлечь данные из вкладки SEO административной панели Битрикс, необходимо использовать специализированные...

Умный фильтр во всплывающей панели на мобильных.

Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень красиво отображается на мобильных...

Вывести компонент новостей на страницу в Битрикс

Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последню...

Вывести новости из конкретного раздела инфоблока Битрикс

Бывает что требуется вывести конкретные новости или статьи из одного раздела инфоблока в Битрикс, для этого потребуется ...