В принципе, можно обойтись только связями между разделами.
Но в этом случае вам придется выводить элементы разделов сложным образом на сайте.
На сайте выводится структура разделов из инфоблока для сайта. Пользователь зашел в раздел, вам нужно отобразить элементы этого раздела, но фактически раздел пустой. Вам нужно найти разделы из инфоблка для 1С, которые связаны с текущим разделом и вывести все элементы из них. Не уверен, что компонент catalog.section подойдёт для этого, возможно, придется писать свой компонент, который будет собирать в кучу нужные вам элементы из разных разделов и выводить их.
В первый инфоблок грузятся "сырые" данные из 1С, второй инфоблок показывается на сайте. Всё, что вам нужно - это перенести данные из одного каталога во второй.
Если проблема только в структуре разделов, то можно сделать следующим образом:
1. Нужно привязать разделы из 1С к разделам на сайте. Это нужно сделать вручную. Можете создать дополнительное множественное свойство типа "число", куда будете записывать ИД разделов инфоблока из 1С. Можно писать числа через запятую во внешний код, можно ещё куда-нибудь, неважно. Главное, чтобы у вас в базе данных была связь между разделами разных инфоблоков.
2. Нужно написать обработчик событий , и . В этих обработчиках нужно организовать привязку (либо копирование) элементов инфоблока к элементам инфоблока для сайта. В обработчике вам будет доступно поле IBLOCK_SECTION_ID, по которому вы ищете привязанный раздел из инфоблока для сайта, и уже туда помещаете копию элемента или пустой элемент, привязанный к элементу из инфоблока для 1С аналогичным образом, но в этом случае придется подменять элементы при выводе.
Шаблон сайта - это шапка и подвал. Для каждого сайта можно задать несколько шаблонов, подключить любой из них в зависимости от условий.
Шаблон страницы - это в буквальном смысле шаблон, т.е. набор html-тэгов для примера, куда нужно вставлять уже свой код.
Приведи пример.
У вас сложная верстка, и в каждую страницу вам после подключения шапки и перед подключением подвала необходимо выводить некоторый набор тэгов. Причем для раздела каталог - набор один, а для остальных страниц - другой.
Впоследствии, чтобы контент-менеджер (или чтобы самому не запутаться) мог легко создавать страницы, без ручной вставки этих наборов тэгов, можно создать два новых шаблона страницы - один для каталога, другой для остальных страниц.
В итоге при создании новой страницы в выпадающем списке будет достаточно выбрать "шаблон страницы каталога" и в форму будет вставлен первоначальный набор открывающих/закрывающих тегов и оставлено место, куда нужно вставлять содержимое (ну или как вы сами этот шаблон сделаете).
Ещё можно создать шаблон страницы для включаемой области например.
Если же хочется использовать news.list, то есть два варианта.
1. У требуемого элемента устанавливаете индекс сортировки равный 1, делаете сортировку по индексу сортировки по возрастанию, ставите количество элементов на странице 1 и скрываете постраничную навигацию.
2. Задаете имя фильтра в настройках компонента, пишете там arNewsFilter, а перед вызовом компонента на странице пишете
С точки зрения SEO-оптимизации я бы посоветовал сохранить одну и ту же страницу для одного и того же элемента, т.к. дублирование снижает ранжируемость.
Можете сделать какой-нибудь костыль, который будет менять хлебные крошки в зависимости от того, откуда перешел пользователь.
Первое - это набор первой помощи. Поставить последние обновления, провести проверку сайта. Если обновления стоят, проверка сайта не выдает ошибок, то пишите в техподдержку.
Возможно, проблема кроется в настройках торгового каталога. Проверьте, что инфоблок товаров, которые вы добавляете в корзину, является торговым каталогом и что у товаров есть цена.
Красная точка в компоненте, Красная точка в компоненте
Проверьте всё на наличие лишних подключений включаемых областей/компонентов. Возможно, где-то что-то валяется лишнее. Ещё как вариант, можете установить в "HIDE_ICONS"=>"Y", но тогда и отредактировать из публичной области будет нельзя.
надо SHOW_BORDER=>false
404 страница для пагинации, Подробнее в самой теме
Самый быстрый и простой вариант - это отключить кэширование постраничной навигации и внутри шаблона делать проверку, превышает ли переданный в $_GET номер страницы максимально возможный. Если превышает, то устанавливать 404-ю ошибку. Но это не совсем правильный способ, т.к. внутри шаблонов такое делать не рекомендуется.
Способ получше - скопировать компонент, и внутри нового компонента скопировать основной запрос к БД (GetList), но с пустым массивом группировки, чтобы получить количество элементов. Потом посчитать, выходит ли введённый номер страницы за рамки получаемого количества элементов и если выходит, устанавливать 404-ю ошибку.
Создаете папку /www/, туда помещаете файл qqq.php Внутри этого файла пишете
Код
<?require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
// подключение служебных файлов битрикса. Не забудьте подключить нужные модули
// ... ваш код, где вам будут доступны объекты $APPLICATION, $USER и др.
//служебный футер
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php');?>
Производители отдельным, левым меню, список производителей в меню каталога
Как я понял, производитель хранится в элементе в виде строки? Обычно при интеграции да.
Вам нужно сделать не просто левою меню, вам нужен фильтр по текстовому свойству "производитель". Можете попробовать воспользоваться компонентом "Умный фильтр", если совладаете с настройками.
Либо можете сделать своё решение. Если вкратце, то вам понадобится: на странице каталога получить массив всех вариантов свойства "производитель" из всех товаров текущего раздела. После этого вывести слева этот список. Сделать ссылки, в которых будет передаваться выбранный производитель и произвести фильтрацию по этому параметру.
Как ограничить количества раздело в bitrix:catalog.section.list
Но это не совсем правильный способ, т.к. из базы данных будут браться все данные. По-хорошему надо скопировать оригинальный компонент и в новом изменить только одну строку, где делается запрос к БД
Попробовал все, что есть в гугле, а почти ничего нету., При редактировании элемента произошла ошибка, элемент не был сохранен
Сначала я бы посоветовал стандартный набор - накатить последние обвноления, провести проверку сайта. Если последние обновления стоят и проверка проходит нормально, то надо писать в техподдержку.
Ну и пара вопросов, если предложенное не поможет. 1. После чего появилась ошибка? 2. Где эта ошибка возникает (публичная часть, административный раздел или работа с базой?) 3. Ошибка на одном элементе, элементах раздела, инфоблока или на всех вообще?
Надо подробности, слишком мало данных, чтобы чем-то помочь. Попробуйте отключить документооборот, если он используется в инфоблоках
OnBeforeResizeImage/OnAfterResizeImage, Кто смог завести этот обработчик?
Андрей Пилипенко, возможно, ваш компонент не получает данные о мета-тэгах, а потому записывает в свойства пустые значения. Попробуйте в самом низу страницу перед вызовом футера сделать
У вас беда в том, что в корзину добавляется именно торговое предложение. Первое, что приходит в голову - это написать обработчик события , который будет заменять имя торгового предложения на имя элемента из каталога.
Добавление товара в корзину/заказ, куда правильно добавить обработчик
В любом случае способ выбран неверный, т.к. не рекомендуется вносить изменения в компоненты и тем более модули битрикса. Если вам нужно реализовать какую-то свою логику работы, то нужно (можно скопировав оригинальный) и модифицировать уже его.
Если вам нужно только пересчитать стоимость товаров в корзине, то вариантов несколько: 1. Воспользоваться файлом вашего шаблона компонента sale.basket.basket 2. Воспользоваться обработчиком события
Вывод свойства привязка к элементам с свойствами элементов
У вас есть ИБ "Новости". У него свойство с кодом 36 - это привязка к элементам ИБ "Каталог".
Алгоритм действий следующий: вам нужно получить ИД привязанных элементов, по этим ИД получить информацию из ИБ "Каталог". Если вы хотите ещё и получить кнопку "Купить", то лучший способ - вставить компонент bitrix:catalog.section.
Т.к. вставлять один компонент в шаблон другого не рекомендуется, то нужно использовать файл component_epilog.php
Подробнее 1. В папке шаблона вашего компонента news.detail (которым вы выводите новость) создаёте файл 2. В этом файле получаете массив ИД связанных элементов из свойства PROPERTY_36 $arIDs = $arResult["PROPERTIES"]["36"]["VALUE"] 3. Формируете фильтр для компонента global $arNewsFilter; if (count ($arIDs) > 0) { $arNewsFilter = Array ("ID" => $arIDs);
} 4. Подключаете компонент, в настройках которого указываете название фильтр, убираете задание ИД раздела, ставите галочку "показывать все элементы, если не задан раздел" 5. Настраиваете шаблон
Разные товары для регионов, Разные товары для регионов
Вариантов несколько 1. Разделение на уровне инфоблоков (неудобно, надо копировать свойства) 2. Разделение на уровне разделов 3. Разделение на уровне свойств
Во втором случае нужно будет добавить столько корневых разделов, сколько у вас регионов. Потом раскидать по этим разделам ваши элементы. Но если у вас сложная структура каталога (глубокая вложенность разделов), то это не очень удобно - придется копировать структуру каталога в каждый регион.
Третий случай легче всего реализовать. Создаете свойство типа список, в варианты записываете ваши регионы (не забудьте поставить галочку "свойство участвует в поиске). Потом на странице списка добавляете фильтр по этому свойству.
Если необходимо разделить несколько инфоблоков по регионам, то лучше сделать свойство "привязка к элементам", создать отдельный инфоблок для регионов, к которому привязать свойство.