Есть необходимость выводить элементы инфоблока с паджинацией по N элементов на страницу. Возможно ли в рамках стандартных компонентов Битрикс в редакции "Старт" вывести элементы с сортировкой с таким условием
- при загрузке страницы, сначала должны выводится ближайшие к текущей дате события, по возрастанию даты, от более ранних, к более поздним.
- элементы, которые по дате являются прошедшими должны вывестись по сортировке ниже остальных элементов.
Денис Логинов написал: не понимаю почему такая сложность из-за простого вывода нельзя сделать просто: если заголовок пустой то далее весь блок не выводить, иначе выводить. ?
Вы не вникнули в суть функций отложенного контента. Они нужны тогда, когда тебе нужно вывести некий контент выше по HTML верстке, но содержимое этого контента ты будешь знать только когда отработается вся страница и ее компоненты. Типичный пример - цепочка навигации. Ты не знаешь, что у тебя будет за цепочка навигации, пока не отработают все компоненты ниже по коду. Тоже самое и с метатегами. На момент срабатывания функции ShowTitle нельзя сделать валидную проверку на содержимое title через условия, так как он еще не сформирован. ShowTitle не выводит непосредственно текст, она только добавляет буферную метку в контент, говорящую о том, что на это место нужно будет проставить уже сформированный тайтл, после того как завершат работу компоненты. Подстановка реального контента на место буферных меток осуществляется движком. На этот момент уже сформирован весь HTML код хэддера, футера и контентной части и проверки, которые вы сделаете в хэддере не отрабатывают на момент подстановки буферного контента .Гарантировано можно получить title только в футере или на событие onEpilog. И единственный вариант здесь добавить к конечному title обертку h2, и там где вы ее добавите сделать проверку на то, что title не пустой.
Стандартный компонент модифицировать не нужно. Я бы сделать эту кастомизацию шаблоне, там где можно вывести тег <script></script> При отработке компонента bitrix:main.feedback в шаблоне можно выловить параметры успешного заполнения, после обновления страницы. В шаблоне в условия обернуть вывод тега <script> со включенным в него скриптом метрики.
У вас есть название класса и имя метода. Код в этом классе довольно простой. Предлагаю вам в методе посмотреть при каких условиях он возвращает false, думаю что их там не много.
Строго говоря, такой вариант не совсем валиден, в данном примере сначала отработает GetTitle, который выше. То есть на момент срабатывания GetTitle отложенный контент еще не сформирован. То есть если на момент вызова GetTitle свойство "title" было нулевым, а где-то ниже по коду оно станет ненулевым, то h2 все равно не выведется.
Title выставляется по отложенному алгоритму, то есть если есть несколько идущих друг за другом компонентов или вызовов функци SetPageProperty, то они будут переписывать title друг за другом и title последнего вызова выведется там где применена функция ShowTitle. Поэтому могу предложить после работы всех компонентов, то есть в футере например, добавить к уже сформированному title обертку h2 (через функции GetTitle, SetPageProperty), но только в том случае если GetTitle выдал непустую строку. При этом в ShowTitle нужно передать второй параметр strip_tags = false.
Судя по всему тут непонятки со структурой сайта и раздел /glavnaja здесь лишний. Нужно перенести индексную страницу index.php или так как она у вас называется для раздела /glavnaja в корень сайта то есть в www.site.ru/index.php В пункте меню вывести первым пунктом www.site.ru
Делайте простой дебаг. Зайдите в код component.php и распечатывайте $_REQUEST и $arResult (в файл) на каждом этапе работы компонента. Таким образом отловите что происходит, когда заказ не может оформится.
Стандартно такого свойство типа "Привязка к инфоблоку" в Битриксе не предусмотрено. Возможно привязать инфоблок через свойство типа "Строка" и вводить туда идентификатор инфоблока -ID или можно CODE если вы гарантируете уникальность символьных кодов своих инфоблоков. Привязка элемента к элементу осуществляется через привязку свойством типа "Привязка к элементу". Оно доступно как для отдельного элемента (товара), так и для разделов.
Сам не копал именно это место в хайлоад модуле. Как разработчик разработчику предлагаю подебажить класс модуля, благо код там несложный, если написанные методы и событийная модель в модуле этого не предусматривают, тогда единственная возможно - создать свой полнеценный компонент с шаблоном для управления highload таблицами через сущность и разместить его в админке через функционал виджетов. Сам я так делал не раз, но универсального компонента не делал.
Александр Романов написал: Можно не дублировать товар, а сделать привязку одного и того же товара к нескольким разделам. В этом случае будет 2 разных URL для одной и той же карточки товара. То есть контент там будет один и тот же и не нужно будет дублировать свойства.
Это делается при изменении карточки элемента в админке во вкладке "Разделы". Там можно привязать один и тот же товар к разным разделам. Пример в скриншоте http://joxi.ru/zANyeR6tnbO029
Можно не дублировать товар, а сделать привязку одного и того же товара к нескольким разделам. В этом случае будет 2 разных URL для одной и той же карточки товара. То есть контент там будет один и тот же и не нужно будет дублировать свойства.
Недавно узнал о событиях внедренных в D7, которые позволяют выхватит момент генерации SEO данных и определить свои обработчики, чтобы формировать метаданные по своему алгоритму. Но эти кастомные обработчики и шаблоны для них приходится писать вручную. Есть ли возможность как-то валидно по какому-то событию модифицировать выдачу вот этого выпадающего списка, чтобы добавить туда свои пункты со своими шаблонами ?
Могли ошибки при обновлении произойти из-за неправильной кодировки некоторых таблиц? У 16 таблиц была кодировка utf8_general_ci вместо utf8_unicode_ci.
Я понял. Еще понял что я спутал b_catalog_discount и b_sale_discount при описании проблемы и сравнении старых и новых версий модулей. Евгений, подскажите, где используется в административном разделе таблица b_sale_discount и b_sale_discount_group? Хочу посмотреть, что там все работает.
Встроил на страницу компонент basket.line Выдает ошибку базы данных.
Код
[Bitrix\Main\DB\SqlQueryException] Mysql query error: Unknown column 'sale_internals_discount_group.ACTIVE' in 'where clause' (400)
SEL ECT
`sale_internals_discount_group`.`DISCOUNT_ID` AS `DISCOUNT_ID`
FR OM `b_sale_discount_group` `sale_internals_discount_group`
WHERE `sale_internals_discount_group`.`GROUP_ID` IN (1,3,4,2)
AND UPPER(`sale_internals_discount_group`.`ACTIVE`) like upper('Y')
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/db/mysqlconnection.php:104
#0: Bitrix\Main\DB\MysqlConnection->queryInternal(string, array, object)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/db/connection.php:332
#1: Bitrix\Main\DB\Connection->query(string)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/query.php:1735
#2: Bitrix\Main\Entity\Query->query(string)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/query.php:450
#3: Bitrix\Main\Entity\Query->exec()
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/datamanager.php:230
#4: Bitrix\Main\Entity\DataManager::getList(array)
/var/www/site/data/www/site-k.ru/bitrix/modules/sale/general/discount.php:34
#5: CAllSaleDiscount:DoProcessOrder(array, array, array)
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:272
#6: SaleBasketLineComponent->calculateOrder(array)
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:240
#7: SaleBasketLineComponent->getTotalPrice()
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:152
#8: SaleBasketLineComponent->executeComponent()
/var/www/site/data/www/site-k.ru/bitrix/modules/main/classes/general/component.php:506
#9: CBitrixComponent->includeComponent(string, array, NULL)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/classes/general/main.php:1011
#10: CAllMain->IncludeComponent(string, string, array)
/var/www/site/data/www/site-k.dev.test.ru/private/shop/index.php:16
Несуществующее поле ACTIVE в таблице b_sale_discount_group. Версия Битрикса 15.0.6, установлены все стабильные обновления. Посмотрел на более старом сайте где версия 15.0.2 с такой же редакцией (Бизнес)
Очевидно что ошибка происходит из-за новой логики в этом файле, написаной в соответствии с ядром D7, при этом в таблице b_sale_discount_group отсутствует новое поле ACTIVE необходимое для этой логики.
Также я нашел описательный файл для сущности этой таблицы. В нем присутствует поле ACTIVE /bitrix/modules/sale/lib/internals/discountgroup.php
Возможно ли генерировать Торговые предложения на основе свойств типа "Список" или "Справочник" с помощью API так, как это делается в админке через интерфейс ?
В обновлении 15 версии была добавлена новая фича - добавление пользовательского свойсва к объекту типа "Склад". Сейчас на сайте стоит версия 15.0.6 и в этой функции баг - при попытке изменения пользовательского свойства у Склада #2 - #N, меняется свойство не у него а у Склада #1.