Битрикс нет в наличии как исправить

 

Пользователь 226966

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2013

Только купил коробку “Малый бизнес”. Заменил демо-товары на мои, цены и кол-во товаров вписал сам.
… и вот сюрприз: возле каждого товара появились надписи “нет в наличии”. Но это если через меню войти в каталог товаров, а на главной странице у меня спецпредложение,  новинки и лидеры продаж и здесь все норм.

Заранее спасибо!!!

 

Пользователь 51088

Постоянный посетитель

Сообщений: 112
Баллов: 10
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 22.10.2009

А не пробовали смотреть шаблон вывода товаров на страницах каталога товаров? Посмотрите все условия, при которых может выдаваться “нет в наличии” и проверьте не выполняются ли они у вас

 

Пользователь 226966

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2013

А где этот шаблон вывода товаров на страницах каталога товаров? Что-то никак не могу его найти.

Самое интересное, что эти надписи вроде бы сами появились, я их не активировал, просто демо-товар поменял на свой.

 

Пользователь 51088

Постоянный посетитель

Сообщений: 112
Баллов: 10
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 22.10.2009

В режиме правки, наведите на товары и в появившейся панели выберите редактировать шаблон компонента. Вообще это все есть в мануалах.

Кстати это появилось у всех товаров или только у некоторых?
Доступное количество проверяли у этих товаров?

возможно вам поможет вот это

http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=42&LESSON_ID=5298

 

Администратор

Сообщений: 1376
Баллов: 113
Авторитет:

0

Рейтинг пользователя:

3

Регистрация: 07.03.2008

В настройках “Торгового каталога” скорей всего включен, количественный учет, а может быть и складской – естественно если товаров нет в остатках, они и пишутся, что недоступны.

 

Пользователь 226966

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2013

товарищи мне все поправили ураааа
узнаю как – напишу

 

Пользователь 226966

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2013

#7

0

19.11.2013 21:20:52

Цитата
Станислав Котов пишет:
В режиме правки, наведите на товары и в появившейся панели выберите редактировать шаблон компонента.
Цитата
Станислав Котов пишет:
Доступное количество проверяли у этих товаров?

Все это я делал, кол-во сам вписывал. Не в этом было дело

Цитата
Юрий Волошин пишет:
В настройках “Торгового каталога” скорей всего включен, количественный учет, а может быть и складской – естественно если товаров нет в остатках, они и пишутся, что недоступны.

Здесь я тоже перепробывал всё. Опять не здесь было решение.

Завтра на работу заеду спрошу у товарища как он исправил. По телефону сказал он что-то про настройки цены.

 

Пользователь 226966

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 18.11.2013

Извиняюсь. Только сегодня попал на работу.
В моем случае чтобы убрать “нет в наличии” надо было установить тип цены – розничная в параметрах компонента “каталог”, к которым заходят через “правка” в публичном разделе. у меня не было выделено ни одного типа цены поэтому на сайте вместо цен, прописанных мной было “нет в наличии”.

удачи!

 

Пользователь 214484

Заглянувший

Сообщений: 7
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 04.09.2013

#9

0

06.01.2014 03:46:19

Цитата
Ренат Данилов пишет:
нат Данилов

Все получилось!
Мучился около часа. Оказалось все просто! Включаем режим правки, Наводим на товар, Просто жмем “Редактировать параметры компонента” в визуальном редакторе, ищем “Тип цены” и нажимаем на пункт “Розничная цена”.

 

Пользователь 269267

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 07.07.2014

#10

0

09.07.2014 14:03:51

Цитата
Роман Шеховцов пишет:

Цитата
Ренат Данилов пишет:
нат Данилов

Все получилось!
Мучился около часа. Оказалось все просто! Включаем режим правки, Наводим на товар, Просто жмем “Редактировать параметры компонента” в визуальном редакторе, ищем “Тип цены” и нажимаем на пункт “Розничная цена”.

Извините, такая же проблема, но только в Тип цены у меня один вариант: [BASE] BASE. Не скажете, как так у вас получилось, что есть вариант Розничная цена?

 

Пользователь 290589

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.10.2014

#11

0

28.10.2014 05:40:31

Здравствуйте, помогите пожалуйста. Вчера заметил что на главной странице, при наведении курсора мыши на товар, появилась табличка “нет в наличии”. Если перейти в карточку товара, то показывается цена и количество товара, можно оформить заказ. У товаров с торговыми предложения табличка не появляется. Цена и количество товара не равно нулю. Такая ситуация только с “тop элементов каталога”, в других  блоках все показывается нормально.  

 

Администратор

Сообщений: 9120
Баллов: 1763
Авторитет:

8

Рейтинг пользователя:

39

Регистрация: 05.08.2005

Epic fail – сказать “это так просто” и не суметь сделать

#12

0

28.10.2014 11:01:30

Добрый день! Установите обновление iblock 14.5.11 – в нем исправление этой ошибки

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

Пользователь 290589

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 28.10.2014

#13

0

28.10.2014 13:18:01

А как это сделать? В обновлении платформы нет рекомендованных обновлении. Когда нажимаю на кнопку проверить обновления, система их не находит. В журнале обновлений написано Updated: iblock (14.5.10)  

 

Администратор

Сообщений: 9120
Баллов: 1763
Авторитет:

8

Рейтинг пользователя:

39

Регистрация: 05.08.2005

Epic fail – сказать “это так просто” и не суметь сделать

#14

0

28.10.2014 13:22:34

Обновление сейчас в статусе beta

Не надо сверлить зубы через задний проход дрелью от Сваровски

 

Пользователь 268229

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 10.10.2014

#15

0

29.10.2014 22:11:04

Уже есть 14.5.12 и опять бета. А когда появится исправление “нет в наличии” в статусе стабильных обновлений? Если долго ждать, то может откатить последнее обновление?

 

Пользователь 266610

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 13.08.2014

#16

0

24.03.2015 14:21:09

Помогите, как убрать в карточке товара поле “наличие”? Убрать совсем или поставить везде “есть” потому что у нас на сайте более 5000 наименований и на каждом в ручную указывать остаток на складе нереально. Шаблон переписать не могу…:( Просто не умею. подскажите как?

 

Пользователь 497049

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 03.03.2016

#17

0

03.03.2016 04:00:05

Хочется услышать ответ на вопрос выше. Как проставить просто есть в наличии – без количества?

 

Пользователь 403974

Эксперт

Сообщений: 792
Баллов: 137
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 05.11.2015

#18

0

03.03.2016 07:46:11

Показывать вместо точного количества информацию о достаточности: Y
Вам нужно это

 

Пользователь 972979

Заглянувший

Сообщений: 1
Баллов: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 25.02.2017

#19

0

25.02.2017 15:49:56

Здравствуйте! Подскажите пожайлуста как сделать наличие товаров сразу для всех категорий, не заходя в карточку товара? В моём случае нужно прописать доступное количество. Заранее огромное спасибо!

 

Пользователь 251205

Заглянувший

Сообщений: 2
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 04.04.2014

#20

0

21.03.2017 19:05:36

У меня  обе галки сняты ( количественный  и  складской  учет в  Торговом  каталоге) но  в карточке товара  все равно показывает “Нет в наличии”. В чем дело и как это убрать ?

 

Пользователь 1034309

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 23.03.2017

#21

0

24.05.2017 21:00:19

Такая же проблема, галки по рекомендациям сняты, колонка Наличия товара не пропадает.

 

Администратор

Сообщений: 365
Баллов: 84
Авторитет:

3

Рейтинг пользователя:

0

Регистрация: 22.01.2014

#22

1

25.05.2017 16:05:32

В настройках шаблона .default компонента catalog.element есть пункт “Показывать остаток товара” и “Разрешить указание количества товара”.

Отключите обе настройки, должно помочь.

 

Пользователь 234617

Заглянувший

Сообщений: 1
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 10.01.2014

#23

0

24.01.2023 21:59:49

Помогла установка цены.

Компоненты – Каталог – Параметры компонента – Цена – Выделить! тип цены –  Сохранить

Примерно так, можно лучше запрос сделать, но на раз сойдет – этот код установит значение по умолчанию

BitrixMainLoader::includeModule('iblock');
BitrixMainLoader::includeModule('catalog');

$iblocksId = [2, 3];

$iterator = BitrixIblockElementTable::getList([
	'select' => ['IBLOCK_ID', 'ID'],
	'filter' => ['IBLOCK_ID' => $iblocksId, '!PRODUCT.CAN_BUY_ZERO' => 'D', '!PRODUCT.TYPE' => BitrixCatalogProductTable::TYPE_SKU],
	'runtime' => [
		'PRODUCT' => [
			'data_type' => 'BitrixCatalogProductTable',
			'reference' => ['=this.ID' => 'ref.ID']
		]
	]
]);

$elements = [];
while($row = $iterator->fetch()) {
	$elements[] = $row;
}

foreach($elements as $element) {
	CCatalogProduct::Update($element['ID'], ['CAN_BUY_ZERO' => 'D']);	
}

echo 'Количество = '.count($elements);

$iblocksId – id-шники инфоблоков Каталог и Торговые предложения, если торговых предложений нет, укажи только ид каталога

Потом в ответах там скрин человек скинул, выставь настройки по умолчанию
В компоненте каталога должен быть указан PRICE_CODE

Немного о статусах наличия товара в Битриксе, разных видах его учёта и подводных камнях при использовании торговых предложений

Здравствуйте, уважаемые коллеги!

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

1. Статусы наличия товара
Я думаю, ни для кого не секрет, что в Битриксе всего два статуса наличия товара: “Есть в наличии” и “Нет в наличии”. И зависят эти статусы от трёх параметров торгового каталога:

Наличие на складе:

  НЕТ     Выполнены   ВСЕ три условия:
Доступное   количество <= 0
Количественный   учёт — ДА
Разрешена   покупка при отсутствии товара — НЕТ  
  ДА     Все   остальные случаи  

Каждый администратор интернет-магазина и программист 1С-Битрикс должен знать эту простую формулу как 2х2.
Мы можем положить товар в корзину и оформить вместе с ним заказ, только если его статус “В наличии”. Отсутствующие товары купить нельзя.
Но очень часто в интернет-магазинах можно встретить и другие статусы наличия, и сценарии покупки. Товар может отсутствовать в магазине в данный момент, но его уже заказали у поставщиков и везут в магазин. Обычно у таких товаров указывается примерная дата поступления в магазин, и его уже можно купить.
Так же очень распространена покупка товаров “Под заказ”. Обычно такие товары никогда не хранятся в магазине из-за больших габаритов, низкого спроса/оборота конкретной модели или ряда других причин, но при этом товар есть в наличии у поставщиков, с которыми работает торговая площадка. Такие товары доступны для покупки под заказ. Покупатель размещает заказ и оплачивает покупку, магазин заказывает товар у поставщика, после чего сразу пересылает его конечному покупателю.
Поскольку два последних сценария не поддерживаются Битриксом из коробки, для их реализации нужны какие-либо дополнительные модули и модификация шаблонов. В Битриксе есть возможность подписки на отсутствующие товары: вы можете положить отсутствующий товар в корзину,  где он попадёт в отдельную вкладку, а после появления этого товара на складе, пользователю будет отправлено уведомление на почту о том, что товар появился в магазине, и его можно купить. Это тоже довольно удобная и полезная вещь, но выполняет она несколько другую функцию.

В своей работе при разработке типовых решений часто сталкиваемся с клиентами, которым нужен сценарий покупки товаров “Под заказ”.
В типовом решении “Битроник” такой функционал был реализован с помощью создания в инфоблоке с каталогом отдельного свойства FOR_ORDER (Под заказ) в виде галочки. Если у товара отметить эту галочку, то его плашка со статусом наличия окрашивается в жёлтый цвет, а текст меняется на “под заказ”.
При добавлении поддержки такого статуса в типовое решение “Битроник 2” было решено отказаться от создания дополнительных сущностей и использовать уже имеющиеся в Битриксе стандартные параметры торгового каталога. Наиболее логичным нам представляется отображение статуса “Под заказ” в том случае, когда у товара включен количественный учет, доступное количество равно или меньше нулю, и разрешена покупка при отсутствии товара. Таким образом, у нас уже три статуса, которые зависят от параметров торгового каталога:

Статус товара:

  Нет в   наличии     Выполнены   ВСЕ три условия:
Доступное   количество <= 0
Количественный   учёт — ДА
Разрешена   покупка при отсутствии товара — НЕТ  
  Под   заказ     Выполнены   ВСЕ три условия:
Доступное количество <= 0
Количественный   учёт — ДА
Разрешена   покупка при отсутствии товара — ДА  
  В   наличии     Все   остальные случаи  

Поскольку с точки зрения платформы такие товары имеют обычный статус СATALOG_AVAILABLE, они всегда отображаются в каталоге, их можно добавить в корзину и оформить заказ. Отличается статус только визуальной индикацией в шаблонах каталога. Также в обновлении 2.8.5 планируется добавить текст, который будет появляться при наведении курсора мыши на плашки со статусом “под заказ”. Администратор сайта сможет редактировать этот текст и указать в нём сроки доставки или иную информацию о таких товарах.

Уважаемые коллеги, пожалуйста, напишите в комментариях, сталкивались ли вы в своей работе с необходимостью отображения дополнительных статусов товаров в интернет-магазинах на Битриксе, и как вы решали такие задачи. И нужно ли добавлять новые статусы наличия в стандартный функционал Битрикса, или эти задачи должны остаться на плечах разработчиков для Маркетплейса и решаться на уровне конкретных внедрений? Нам очень интересно узнать ваше мнение.

2. Зависимость статуса наличия от количества товара на отдельных складах.
Начиная с версии 12.5 в Битриксе стало возможным создавать склады и заполнять имеющееся количество товара на каждом отдельном складе. При этом везде пишется, что количество товара на складах носит лишь информационный характер и не влияет на расчёт остатков товара и определения его наличия в магазине. Это действительно так, но только если не включен Складской учет.
В отличие от обычного количественного учета складской учет нельзя включить или выключить для какого-либо отдельного товара. Этот функционал включается только для всего сайта целиком в настройках модуля Интернет-магазин. После включения функционала поля для редактирования как общего количества товара, так и количества товара на отдельных складах будут везде заблокированы. Изменять количество товара на складах можно будет только с помощью создания и проведения документов. Вместе с этим будет меняться и основное поле с общим количеством товара, которое и влияет на статус наличия товара. То есть, общее количество товара (СATALOG_QUANTITY) будет всегда равно сумме остатков по всем складам при постоянной работе складского учёта.
Более подробно с этим функционалом можно познакомиться в учебных курсах:

Количественный учет

,

Складской учет

.

3. Когда в бой вступают торговые предложения (SKU).
Появление в каталоге магазина товаров с торговыми предложениями несколько усложняет архитектуру каталога и понимание того, как, где и какие статусы наличия должны выводиться. Связано это с тем, что остаток товара и параметры количественного учёта в Битриксе можно задавать как у самого товара, так и у его отдельных торговых предложений. И даже если вы не видите вкладку “Торговый каталог” у основного товара, а лишь вкладку “Торговые предложения”, эти значения всё равно будут вычисляться для основного товара отдельно.
В последней заключительной третьей части этой статьи я постараюсь распутать этот клубок и вывести на чистую воду самые тёмные уголки стандартного шаблона Eshop для интернет-магазинов, который многие берут за основу при создании своих шаблонов.

Для начала рассмотрим небольшой пример, как отображались отсутствующие торговые предложения в предпоследней версии Eshop:

Как видим, отсутствующие товары имеют отличную индикацию. Но что делать, если мы не хотим отображать в списке отсутствующие товары? Для этого в комплексном компоненте bitrix:catalog имеется замечательный параметр “Не отображать товары, которых нет на складах” (HIDE_NOT_AVAILABLE).

После включения этой опции наблюдаем весьма странный и неожиданный результат:

Корректно отобразился только костюм “Огонь в ночи”. У него исчезли те торговые предложения, которые мы не сможем купить, а сам товар остался в списке, потому что в его настройках мы отключили количественный учет. Остальные товары с торговыми предложениями исчезли из списка, хотя у них и имеются торговые предложения в наличии, потому что для самих товаров не заданы никакие параметры для определения их наличия.
Так же мы отключили предварительно количественный учет для основного товара “Вечерний спорт”, чтобы он остался в списке. Но у него нет в наличии ни одного из торговых предложений, поэтому шаблон начал считать, что это просто обычный товар и предлагает нам купить его, что по сути своей бессмысленно.
Ещё больше нестыковок появляется, если сюда добавить использование фильтра:


По проблеме с фильтром и отсутствующими SKU 29.04.15 создали обращение в техподдержку 1С-Битрикс №623234, нам ответили, что опция HIDE_NOT_AVAILABLE пока что не работает с торговыми предложениями. На основе обращения была создана заявка в отдел разработки №47001. Больше никаких сообщений от отдела разработки с тех пор не приходило.

К счастью, хотя бы одну из этих проблем в Битрикс исправили в новом Eshop 15.5. Когда мы захотим скрыть отсутствующие товары, у товаров, чьих торговых предложений нет в наличии, не будет кнопки покупки.


Чтобы скрыть такой товар из списка нужно дополнительно зайти в настройки торгового каталога для этого отдельного товара, включить количественный учет, запретить покупку при отсутствии товара и выставить количество в 0. Но когда его торговые предложения снова появятся на складе, нужно заходить в настройки основного товара и снова отключать для него количественный учет, чтобы он появился в списке. Битрикс пока что не хочет брать на себя обязательства по автоматическому отслеживанию и синхронизации состояния наличия основного товара и его торговых предложений.

В некоторых случаях владельцы магазинов не хотят давать возможность покупки товара с торговыми предложениями в списке, а только с детальной страницы. Например, потому что этих характеристик очень много. Или же просто используется принципиально иной подход: торговые предложения выводятся в виде таблицы только на детальной странице товара. В таких случаях нужно скрыть кнопку покупки в списке, вывести минимальную цену из имеющихся у товара торговых предложений с пометкой “от …” и добавить пометку, что для покупки нужно перейти на детальную страницу.
Как быть со статусом наличия товара в этом случае? При разработке своих шаблонов руководствуемся следующим принципом:

Если у товара есть хотя бы одно торговое предложение в наличии, ставим статус “В наличии”. Если таких нет, но есть хотя бы одно торговое предложение со статусом “Под заказ”, ставим аналогичный статус. Если все торговые предложения отсутствуют на складе, ставим статус “Нет в наличии”.

Для того, чтобы обобщить всё вышесказанное про торговые предложения, я составил вот такую таблицу:

На данный момент самой большой проблемой остаётся тот факт, что товары с торговыми предложениями исчезают из списка, даже если торговые предложения есть в наличии, но главному товару мы задали отсутствие в настройках торгового каталога. На уровне шаблона с этим тяжело бороться, так как исчезают товары из $arResult ещё на этапе работы стандартных компонентов Битрикса.

Сколько времени понадобится Битриксу, чтобы исправить эту ситуацию, а так же починить работу фильтра для торговых предложений с одновременным скрытием отсутствующих товаров, нам неизвестно.
Но мы как всегда верим, надеемся, ждём…
:)

Назад в раздел

Как разрешить покупку товара, которого нет в наличии?

ID статьи: 79
, создана 30 май 2016

Нужно разрешить пользователям откладывать в корзину товар, которого нет в наличии.


Решение

По умолчанию, если товара нет в наличии, вместо кнопки «В корзину» отображается кнопка «Под заказ» с формой обратной связи «Заказать товар». Если вы хотите разрешить класть товар, которого нет в наличии, в корзину, можно изменить настройки решения.

  1. Перейдите в настройки решения: Настройки → Настройки продукта → Настройки модулей → [Аспро:Название_решения]

  2. В блоке добавления товаров в корзину найдите параметр «Кнопка покупки у отсутствующих товаров» и поставьте там значение – «Отображать кнопку “В корзину”».

01.jpg

  1. Перейдите в настройки модуля: Рабочий стол → Настройки → Настройки продукта → Настройки модулей → Торговый каталог и активируйте параметр «Разрешить продажу товаров отсутствующих на складе».

02.jpg

Сохраните изменения и проверьте результат.

03.jpg


Можно,я не жадный.У меня нет знаний языка php, троешные знания алгоритмизации,у меня немного другое направление,так что за возможную кривоватость кода не кидайте тапками,но код покрайней мере работает,а теперь к сути:
Правим bitrixtemplatesstore_minimal_redcomponentsbit rixcatalog.defaultbitrixcatalog.section.defau lttemplate.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
 
<?
if (count($arResult['ITEMS']) < 1)
    return;
?>
 
<div class="catalog-item-list">
<?
foreach ($arResult['ITEMS'] as $key => $arElement):
 
    $this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
    $this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CATALOG_ELEMENT_DELETE_CONFIRM')));
 
    $bHasPicture = is_array($arElement['PREVIEW_IMG']);
 
    $sticker = "";
    if (array_key_exists("PROPERTIES", $arElement) && is_array($arElement["PROPERTIES"]))
    {
        foreach (Array("SPECIALOFFER", "NEWPRODUCT", "SALELEADER") as $propertyCode)
            if (array_key_exists($propertyCode, $arElement["PROPERTIES"]) && intval($arElement["PROPERTIES"][$propertyCode]["PROPERTY_VALUE_ID"]) > 0)
                $sticker .= "&nbsp;<span class="sticker">".$arElement["PROPERTIES"][$propertyCode]["NAME"]."</span>";
    }
 
?>
<pre><?php //print_r( $arElement) ?></pre>
    <div class="catalog-item<?if (!$bHasPicture):?> no-picture-mode<?endif;?>" id="<?=$this->GetEditAreaId($arElement['ID']);?>" itemscope itemtype = "http://schema.org/Product">
        <div class="catalog-item-info">
 
        <?if($bHasPicture):?>
            <div class="catalog-item-image">
                <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><img itemprop="image" src="<?=$arElement["PREVIEW_IMG"]["SRC"]?>" width="<?=$arElement["PREVIEW_IMG"]["WIDTH"]?>" height="<?=$arElement["PREVIEW_IMG"]["HEIGHT"]?>" alt="<?=$arElement["NAME"]?>" title="<?=$arElement["NAME"]?>" id="catalog_list_image_<?=$arElement['ID']?>" /></a>
            </div>
        <?endif;?>
 
            <div class="catalog-item-desc">
                <div class="catalog-item-title"><a href="<?=$arElement["DETAIL_PAGE_URL"]?>"> <span itemprop="name"><?=$arElement["NAME"]?></span></a><?=$sticker?></div>
                <div class="catalog-item-preview-text" itemprop = "description"><?=$arElement['PREVIEW_TEXT']?></div>
            <?if(is_array($arElement["OFFERS"]) && !empty($arElement["OFFERS"])):?>
                <div class="catalog-item-offers">
                <?$i=0;?>
                <?foreach($arElement["OFFERS"] as $arOffer):?>
                    <?if($i != 0):?>
                    <div class="catalog-detail-line"></div>
                    <?endif;?>
                    <?$i++;?>
                    <div class="catalog-item-links">    
                    <?if($arOffer["CAN_BUY"]):?>
                        <a href="<?echo $arOffer["ADD_URL"]?>" class="catalog-item-buy<?/*catalog-item-in-the-cart*/?>" rel="nofollow"  onclick="return addToCart(this, 'catalog_list_image_<?=$arElement['ID']?>', 'list', '<?=GetMessage("CATALOG_IN_CART")?>');" id="catalog_add2cart_link_ofrs_<?=$arOffer['ID']?>"><?echo GetMessage("CATALOG_ADD")?></a>
                    <?elseif(count($arResult["PRICES"]) > 0):?>
                        <span class="catalog-item-not-available"><?=GetMessage("CATALOG_NOT_AVAILABLE")?></span>
                    <?endif?>
                    <?if($arParams["DISPLAY_COMPARE"]):?>
                        <a href="<?echo $arOffer["COMPARE_URL"]?>" class="catalog-item-compare" onclick="return addToCompare(this, '<?=GetMessage("CATALOG_IN_COMPARE")?>');" rel="nofollow" id="catalog_add2compare_link_ofrs_<?=$arOffer['ID']?>"><?echo GetMessage("CATALOG_COMPARE")?></a>
                    <?endif?>
                    </div>
                    <div class="table-offers">
                    <?if(!empty($arParams["OFFERS_FIELD_CODE"]) || !empty($arOffer["DISPLAY_PROPERTIES"])):?>
                    <table cellspacing="0">
                    <?foreach($arParams["OFFERS_FIELD_CODE"] as $field_code):?>
                        <tr><td class="catalog-item-offers-field"><span><?echo GetMessage("IBLOCK_FIELD_".$field_code)?>:</span></td><td><?
                                echo $arOffer[$field_code];?></td></tr>
                    <?endforeach;?>
                    <?foreach($arOffer["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
                        <tr><td class="catalog-item-offers-prop"><span><?=$arProperty["NAME"]?>:</td><td><?
                            if(is_array($arProperty["DISPLAY_VALUE"]))
                                echo implode(" / ", $arProperty["DISPLAY_VALUE"]);
                            else
                                echo $arProperty["DISPLAY_VALUE"];?></td></tr>
                    <?endforeach?>
                    </table>
                    <?endif;?>
                    <?foreach($arOffer["PRICES"] as $code=>$arPrice):?>
                        <?if($arPrice["CAN_ACCESS"]):?>
                            <div class="catalog-item-price" itemprop = "offers" itemscope itemtype = "http://schema.org/Offer">
                            <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
                                <span class="catalog-item-price" itemprop = "price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span> <s><span itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span></s>
                            <?else:?>
                                <span class="catalog-item-price" itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span>
                            <?endif?>
                            </div>
                        <?endif;?>
                    <?endforeach;?>
                    </div>
                <?endforeach;?>
                </div>
            <?else:?>
            <?foreach($arElement["PRICES"] as $code=>$arPrice):
                if($arPrice["CAN_ACCESS"]):
?>
                <div class="catalog-item-price" itemprop = "offers" itemscope itemtype = "http://schema.org/Offer">
                <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
                    <span class="catalog-item-price" itemprop = "price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span> <s><span itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span></s>
                <?else:?>
                    <span class="catalog-item-price" itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span>
                <?endif;?>
                </div>
            <?
                endif;
            endforeach;
            ?>
            <?endif?>
            </div>
        </div>
        
 
 
 
 
        <?if(empty($arElement["OFFERS"])):?>
        <div class="catalog-item-links">
            <!--noindex-->
<?if ($USER->IsAuthorized()):?>
        <?if (($arElement['CATALOG_QUANTITY']) >= 1):?>
            <a href="<?echo $arElement["ADD_URL"]?>" class="catalog-item-buy<?/*catalog-item-in-the-cart*/?>" rel="nofollow"  onclick="return addToCart(this, 'catalog_list_image_<?=$arElement['ID']?>', 'list', '<?=GetMessage("CATALOG_IN_CART")?>');" id="catalog_add2cart_link_<?=$arElement['ID']?>"><?echo GetMessage("CATALOG_ADD")?></a>
        <?elseif (count($arResult["CATALOG_QUANTITY"]) < 1):?>
            <span class="catalog-item-not-available"><?=GetMessage('CATALOG_NOT_AVAILABLE')?></span>
        <?endif;?>
<?else:?>
<span class="catalog-item-not-available"><?=GetMessage('CATALOG_NOT_AVAILABLE1')?></span>
<?endif;?>
 
        <?if($arParams["DISPLAY_COMPARE"]):?>
            <a href="<?echo $arElement["COMPARE_URL"]?>" class="catalog-item-compare" onclick="return addToCompare(this, '<?=GetMessage("CATALOG_IN_COMPARE")?>');" rel="nofollow" id="catalog_add2compare_link_<?=$arElement['ID']?>"><?echo GetMessage("CATALOG_COMPARE")?></a>
        <?endif;?>
            <!--noindex-->
        </div>
        <?endif;?>
 
    </div>
    <div class="catalog-item-separator"></div>
<?endforeach;?>
</div>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
    <?=$arResult["NAV_STRING"];?>
<?endif;?>

В той же папке есть папка lang/ru,там в темплейте добавляем строчку

PHP
1
$MESS ['CATALOG_NOT_AVAILABLE1'] = "Авторизуйтесь";

Это что касается списка товара,теперь для детального просмотра элемента надо тоже шаблон поправить,лежит он тут bitrixtemplatesstore_minimal_redcomponentsbit rixcatalog.defaultbitrixcatalog.element.defau lttemplate

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
 
<?if (is_array($arResult['DETAIL_PICTURE_350']) || count($arResult["MORE_PHOTO"])>0):?>
<script type="text/javascript">
$(function() {
setTimeout(function(){
    $('div.catalog-detail-image a').fancybox({
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        'speedIn': 600,
        'speedOut': 200,
        'overlayShow': false,
        'cyclic' : true,
        'padding': 20,
        'titlePosition': 'over',
        'onComplete': function() {
            $("#fancybox-title").css({ 'top': '100%', 'bottom': 'auto' });
        } 
    });
}, 30);
});
</script>
<?endif;?> 
 
<div class="catalog-detail" itemscope itemtype = "http://schema.org/Product">
    <table class="catalog-detail" cellspacing="0">
        <tr>
 
        <?if (is_array($arResult['DETAIL_PICTURE_350']) || count($arResult["MORE_PHOTO"])>0):?>
            <td class="catalog-detail-image">
            <?if (is_array($arResult['DETAIL_PICTURE_350'])):?>
                <div class="catalog-detail-image" id="catalog-detail-main-image">
                    <a rel="catalog-detail-images" href="<?=$arResult['DETAIL_PICTURE']['SRC']?>" title="<?=(strlen($arResult["DETAIL_PICTURE"]["DESCRIPTION"]) > 0 ? $arResult["DETAIL_PICTURE"]["DESCRIPTION"] : $arResult["NAME"])?>"><img itemprop="image" src="<?=$arResult['DETAIL_PICTURE_350']['SRC']?>" alt="<?=$arResult["NAME"]?>" id="catalog_detail_image" width="<?=$arResult['DETAIL_PICTURE_350']["WIDTH"]?>" height="<?=$arResult['DETAIL_PICTURE_350']["HEIGHT"]?>" /></a>
                </div>
            <?endif;?>
                <div class="catalog-detail-images">
            <?if(count($arResult["MORE_PHOTO"])>0):
                foreach($arResult["MORE_PHOTO"] as $PHOTO):
            ?>
                <div class="catalog-detail-image"><a rel="catalog-detail-images" href="<?=$PHOTO["SRC"]?>" title="<?=(strlen($PHOTO["DESCRIPTION"]) > 0 ? $PHOTO["DESCRIPTION"] : $arResult["NAME"])?>"><img border="0" src="<?=$PHOTO["SRC_PREVIEW"]?>" width="<?=$PHOTO["PREVIEW_WIDTH"]?>" height="<?=$PHOTO["PREVIEW_HEIGHT"]?>" alt="<?=$arResult["NAME"]?>" /></a></div>
            <?
                endforeach;
            endif?>
 
                </div>
            </td>
        <?endif;?>
 
            <td class="catalog-detail-desc">
            <?if($arResult["PREVIEW_TEXT"]):?>
                <span itemprop = "description"><?=$arResult["PREVIEW_TEXT"];?></span> 
                <div class="catalog-detail-line"></div>
            <?endif;?>
                    <?if(is_array($arResult["OFFERS"]) && !empty($arResult["OFFERS"])):?>
                        <div class="catalog-item-offers">
                        <?foreach($arResult["OFFERS"] as $arOffer):?>
                            <?if(!empty($arParams["OFFERS_FIELD_CODE"]) || !empty($arOffer["DISPLAY_PROPERTIES"])):?>
                            <table cellspacing="0">
                            <?foreach($arParams["OFFERS_FIELD_CODE"] as $field_code):?>
                                <tr><td class="catalog-item-offers-field"><span><?echo GetMessage("IBLOCK_FIELD_".$field_code)?>:</span></td><td><?
                                        echo $arOffer[$field_code];?></td></tr>
                            <?endforeach;?>
                            
                            <?foreach($arOffer["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
                                <tr><td class="catalog-item-offers-field"><span><?=$arProperty["NAME"]?>:</span></td><td><?
                                    if(is_array($arProperty["DISPLAY_VALUE"]))
                                        echo implode(" / ", $arProperty["DISPLAY_VALUE"]);
                                    else
                                        echo $arProperty["DISPLAY_VALUE"];?></td></tr>
                            <?endforeach?>
                            </table>
                            <?endif;?>
                            <?foreach($arOffer["PRICES"] as $code=>$arPrice):?>
                                <?if($arPrice["CAN_ACCESS"]):?>
                                    <div class="catalog-detail-price-offer" itemprop = "offers" itemscope itemtype = "http://schema.org/Offer"><label><?=GetMessage("CATALOG_PRICE")?></label>&nbsp;&nbsp;
                                    <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
                                        <s><span itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span></s> <span class="catalog-price" itemprop = "price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span>
                                    <?else:?>
                                        <span class="catalog-price" itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span>
                                    <?endif?>
                                    </div>
                                <?endif;?>
                            <?endforeach;?>
                            <div class="catalog-item-links">
                            <?if($arParams["USE_COMPARE"] == "Y"):?>
                                <noindex>
                                <a href="<?echo $arOffer["COMPARE_URL"]?>" class="catalog-item-compare" onclick="return addToCompare(this, '<?=GetMessage("CATALOG_IN_COMPARE")?>');" rel="nofollow" id="catalog_add2compare_link_ofrs_<?=$arOffer['ID']?>"><?echo GetMessage("CATALOG_COMPARE")?></a>
                                </noindex>
                            <?endif?>
                            <?if($arOffer["CAN_BUY"]):?>
                                <a href="<?echo $arOffer["ADD_URL"]?>" class="catalog-item-buy<?/*catalog-item-in-the-cart*/?>" rel="nofollow"  onclick="return addToCart(this, 'catalog_detail_image', 'list', '<?=GetMessage("CATALOG_IN_BASKET")?>');" id="catalog_add2cart_link_ofrs_<?=$arOffer['ID']?>"><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></a>
                            <?elseif(count($arResult["CAT_PRICES"]) > 0):?>
                                <span class="catalog-item-not-available"><?=GetMessage("CATALOG_NOT_AVAILABLE")?></span>
                            <?endif?>
                            </div>
                            <div class="catalog-detail-line"></div>
                        <?endforeach;?>
                        </div>
                    <?else:?>
                <div class="catalog-detail-price">
                <?foreach($arResult["PRICES"] as $code=>$arPrice):
                    if($arPrice["CAN_ACCESS"]):
                ?>
                    <label><?=GetMessage("CATALOG_PRICE")?></label>
                    <p>
                        <span itemprop = "offers" itemscope itemtype = "http://schema.org/Offer">
                            <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
                                <span class="catalog-detail-price" itemprop = "price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span> <s><span itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span></s>
                            <?else:?>
                                <span class="catalog-detail-price" itemprop = "price"><?=$arPrice["PRINT_VALUE"]?></span>
                            <?endif;?>
                        </span>
                    </p>
                <?
                        break;
                    endif;
                endforeach;
                ?>
                </div>
 
<?if ($USER->IsAuthorized()):?>
                <?if(($arResult["CATALOG_QUANTITY"]) >= 1):?>
                <div class="catalog-detail-buttons">
                    <!--noindex--><a href="<?=$arResult["ADD_URL"]?>" rel="nofollow" onclick="return addToCart(this, 'catalog_detail_image', 'detail', '<?=GetMessage("CATALOG_IN_BASKET")?>');" id="catalog_add2cart_link"><span><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></span></a><!--/noindex-->
                </div>
                <?elseif(($arResult["CATALOG_QUANTITY"]) < 1):?>
<div class="catalog-item-links"><span class="catalog-item-not-available"><?=GetMessage('CATALOG_NOT_AVAILABLE')?></span></div>
                                <?endif;?>
<?else:?>
<div class="catalog-item-links"><span class="catalog-item-not-available"><?=GetMessage('CATALOG_NOT_AVAILABLE1')?></span></div>
<?endif;?>
 
 
                <div class="catalog-item-links">
 
                    <?if(!$arResult["CAN_BUY"] && (count($arResult["PRICES"]) > 0)):?>
                    <span class="catalog-item-not-available"><!--noindex--><?=GetMessage("CATALOG_NOT_AVAILABLE");?><!--/noindex--></span>
                    <?endif;?>
 
                    <?if($arParams["USE_COMPARE"] == "Y"):?>
                    <a href="<?=$arResult["COMPARE_URL"]?>" class="catalog-item-compare" onclick="return addToCompare(this, '<?=GetMessage("CATALOG_IN_COMPARE")?>');" rel="nofollow" id="catalog_add2compare_link" rel="nofollow"><?echo GetMessage("CATALOG_COMPARE")?></a>
                    <?endif;?>
                </div>
                <?endif;?>
            </td>
        </tr>
    </table>
    
<?
if (is_array($arResult['DISPLAY_PROPERTIES']) && count($arResult['DISPLAY_PROPERTIES']) > 0):
?>
    <?$arProperty = $arResult["DISPLAY_PROPERTIES"]["RECOMMEND"]?>
    
    <?if(count($arProperty["DISPLAY_VALUE"]) > 0):?>
    <div class="catalog-detail-recommends">
        <h4><?=$arProperty["NAME"]?></h4>
            <div class="catalog-detail-recommend">
            <?
            global $arRecPrFilter;
            $arRecPrFilter["ID"] = $arResult["DISPLAY_PROPERTIES"]["RECOMMEND"]["VALUE"];
            $APPLICATION->IncludeComponent("bitrix:store.catalog.top", "", array(
                "IBLOCK_TYPE" => "",
                "IBLOCK_ID" => "",
                "ELEMENT_SORT_FIELD" => "sort",
                "ELEMENT_SORT_ORDER" => "desc",
                "ELEMENT_COUNT" => $arParams["ELEMENT_COUNT"],
                "LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"],
                "BASKET_URL" => $arParams["BASKET_URL"],
                "ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"],
                "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"],
                "CACHE_TYPE" => $arParams["CACHE_TYPE"],
                "CACHE_TIME" => $arParams["CACHE_TIME"],
                "DISPLAY_COMPARE" => "N",
                "PRICE_CODE" => $arParams["PRICE_CODE"],
                "USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"],
                "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"],
                "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"],
                "FILTER_NAME" => "arRecPrFilter",
                "DISPLAY_IMG_WIDTH"  => $arParams["DISPLAY_IMG_WIDTH"],
                "DISPLAY_IMG_HEIGHT" => $arParams["DISPLAY_IMG_HEIGHT"],
                "SHARPEN" => $arParams["SHARPEN"],
                "ELEMENT_COUNT" => 30,
                ),
                $component
            );
            ?>
        </div>
    </div>
    <?unset($arResult["DISPLAY_PROPERTIES"]["RECOMMEND"])?>
    <?endif;?>
<?endif;?>
<?
if (is_array($arResult['DISPLAY_PROPERTIES']) && count($arResult['DISPLAY_PROPERTIES']) > 0):
?>
    <div class="catalog-detail-properties">
        <h4><?=GetMessage('CATALOG_PROPERTIES')?></h4>
        <div class="catalog-detail-line"></div>
        <?foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>
            <div class="catalog-detail-property">
                <span><?=$arProperty["NAME"]?></span>
                <b>
<?
        if(is_array($arProperty["DISPLAY_VALUE"])):
            echo implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);
        elseif($pid=="MANUAL"):
?>
                    <a href="<?=$arProperty["VALUE"]?>"><?=GetMessage("CATALOG_DOWNLOAD")?></a>
<?
        else:
            echo $arProperty["DISPLAY_VALUE"];
        endif;
?>
                </b>
            </div>
    <?endforeach;?>
    </div>
<?endif;?>
 
    <?if($arResult["DETAIL_TEXT"]):?>
    <div class="catalog-detail-full-desc">
        <h4><?=GetMessage('CATALOG_FULL_DESC')?></h4>
        <div class="catalog-detail-line"></div>
        <span  itemprop = "description"><?=$arResult["DETAIL_TEXT"];?></span>
    </div>
    <?endif;?>
    
</div>

Ну и в ленге/ру в шаблоне добавить тоже самое что и в предыдущем файле чтобы он выводил сообщение “Авторизуйтесь”

P.S. Добавлю что тут еще проверяется авторизация,если она вам не нужна,уберите эти условия проверки авторизации.



1



Добавить комментарий