Евгений Жуков написал: Ссылку на загрузку js-скрипта? А если он понадобится на этой странице кому-то другому?
Понял!
На деле там css файл и мало вероятно, что он кому то потребуется.
Я по другому понимал необходимость, поэтому и спросил. Бывает что фронт разработка закончена и back-end программист должен по ТЗ внедрить вёрстку как есть, чтобы загрузка всех css и js была идентичной. Поэтому при вопросе в фронт-эндщику, с вопросами "посмотри, тут вёрстка поехала" или "перекрой вот этот стиль который bitrix генерирует", можно услышать "на вёрстке всё работает корректно, разберитесь с back-end!" Хотел узнать как правильно решить задачу исключительно силами back-end, не трогая css код.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
D7, расчёт скидок корзины, пример из документации не работает, пустое значение $result['BASKET_ITEMS'], Необходимо работать с базовой ценой и скидкой в корзине. Взял пример из документации, попробовал - не работает. Оказалось пустое значение $result['BASKET_ITEMS']
Да, заменил строчку как Вы написали! Вот теперь всё работает и $basketItem->getPrice(); после выполнения всего выше описанного кода вернул значение цены с скидкой ТП как и было нужно.
Касаемо ошибки в документации, её поправят?
Если я как пользователь опубликую комментарий его добавят?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Евгений Жуков написал: Самый простой вариант - "перебить" своим собственным стилем или css-классом.
То-есть установкой более высокого приоритета например?
Ваш ответ, так написан, что возможно предполагает и другие варианты. Есть ли варианты программированием на back-end?
Можете что то отрицательное сказать, про метод: 1) включаем буферизацию вывода на область где подключается скрипт в html, парсим, удаляем ссылку, возвращаем результат? Вопрос о том насколько такое приемлемо с точки зрения стандартов разработки на bitrix?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
В шаблоне же несколько полей. Вам нужно подставлять активность не только на селект торгового, но и чтобы цена подставлялась от соответствующего торгового и Id-шники соответствующие. Смотрите var_dump($arResult) что там есть и в нужные места шаблона добавляйте проверки и выводите что нужно. Детально по шаблону не подскажу, поскольку использовал при разработке API добавления в корзину самописное.
Ещё по стороне вашего решения, обычно не делают GET параметром, поскольку у Вас так получается несколько URL одного и того же товара. Возможно есть смысл сделать якорь то есть uri#value и по #value на фронте по JavaScript выбирать активный элемент и переключать торговое предложение на нужное. Тогда на сервере в шаблоне возможно править ничего не придётся, на фронте же будет выбираться активное ТП и соответственно функционал по добавлению в корзину будет отрабатывать для него.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
D7, расчёт скидок корзины, пример из документации не работает, пустое значение $result['BASKET_ITEMS'], Необходимо работать с базовой ценой и скидкой в корзине. Взял пример из документации, попробовал - не работает. Оказалось пустое значение $result['BASKET_ITEMS']
// Поскольку корзина не привязана к заказу делаем так $context = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId()); $discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $context); $r = $discounts->calculate();// Проверял, в $r есть нужные мне скидки
if (!$r->isSuccess()) { var_dump($r->getErrorMessages()); }
$result = $discounts->getApplyResult();// var_dump($result); показывает что ключа ['BASKET_ITEMS'] в нём нет
if (isset($result['BASKET_ITEMS'])) {// из комментария выше следует что следующий код выполнен не будет $r = $basket->applyDiscount($result['BASKET_ITEMS']); if (!$r->isSuccess()) { var_dump($r->getErrorMessages()); } }
Вопрос в том, почему $result['BASKET_ITEMS'] не существует и как применить скидки чтобы цена с скидкой была доступна по $basketItem->getPrice() а так же величина скидки по $basketItem->getField("DISCOUNT_PRICE")
$basketItem получаю так foreach ($basket->getBasketItems() as $basketItem) {...}
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Хотя не так. Если создать пустую страницу только лишь с вызовом require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); то на пустой странице файл /bitrix/js/ui/fonts/opensans/ui.font.opensans.min.css подключается только под админом. А на странице карточки товара каталога подключается даже без админа. И всегда ещё подключается /bitrix/cache/css/s1/main/kernel_main/kernel_main_v1.css что это за файл? Нужен ли он и можно ли го отключить и если можно то как?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Сейчас обнаружил что этот стиль подключается не только на каталоге, а глобально на любой странице, для страниц начинающихся с require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Комплексный компонент каталог. В частности в нём вызывается компонент карточки товара. На данной странице подгружается стиль /bitrix/js/ui/fonts/opensans/ui.font.opensans.min.css который делает отображение текста в некоторых блоках не таким как на вёрстке. В каких местах компонента каталог находятся подключения стилей? Необходимо все их выключить, так как стандартные стили нет надобности использовать. Как это проще сделать?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как органичить данные в фильтре smart.filter только свойствами товаров переданными в массиве $arrFilter(имя которого передано в FILTER_NAME)?, Как органичить данные в фильтре smart.filter только свойствами товаров переданными в массиве $arrFilter(имя которого передано в FILTER_NAME)?
Вячеслав Трофимов написал: В шаблоне умного фильтра, сделайте unset всем ненужным фильтрам. Я именно так вмешивался в его состав, можно либо добавить, либо убрать.
result_modifier.php
Думал о таком варианте, с той лишь разницей, что сразу unset по всему массиву с данными, поскольку для того чтобы сравнить всё равно придётся предварительно запросить информацию по свойствам товаров по известным Id, а какой смысл сравнивать если можно сразу переписать нужными данными. Благодарю за ответ!
PREFILTER_NAME для умного фильтра(smart.filter) как им пользоваться и с какой версии он доступен?, PREFILTER_NAME для умного фильтра(smart.filter) как им пользоваться и с какой версии он доступен?
Нашёл по ссылке https://toster.ru/q/340847 информацию, что есть такая штука как PREFILTER_NAME для умного фильтра. Вот только информации как им пользоваться почти нет. 2 вопроса: 1) с какой версии этот параметр доступен? 2) как им пользоваться?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Распродажа повторяет комплексный компонент каталог bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?, Распродажа повторяет комплексный компонент каталог bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?
Сейчас решил следующим образом, при этом если у Вас есть иное решение - пожалуйста, предлагайте!
require($_SERVER['DOCUMENT_ROOT'].'/local/templates/main/phpscripts/myGetBasketData.php');// класс нужен для получения Id товаров с скидкой $myGetBasketData = new myGetBasketData;
global $arrFilter; $arrFilter = array(); $arrFilter["=ID"] = $myGetBasketData->getProductIdDiscontAr();
далее $arrFilter передаём комплексному компоненту bitrix catalog через FILTER_NAME а именно $APPLICATION->IncludeComponent( "bitrix:catalog", "new_catalog", array( "FILTER_NAME" => "arrFilter", ...
Метод getProductIdDiscontAr класса myGetBasketData доступен в листинге файла класса myGetBasketData.php по ссылке blog.ivru.net/?id=96
Важно! Метод возвращает массив товаров с скидкой, только тогда, когда скидка создана непосредственно на товар, то есть так как показано на скринсшоте.
Алгоритм работы метода определения Id товаров с скидкой метода getProductIdDiscontAr() примерно следующий
1) получается список скидок через CSaleDiscount::GetList 2) далее в foreach Id скидок передаются в CSaleDiscount::GetByID 3) у возвращённых данных проверяется наличие и не пустота ключа массива ["CONDITIONS"] 4) если строка есть и не пустая парсятся данные от Equal";s:5:"value";a: до } 5) если такие данные найдены то они множественно парсятся от i: до ; 6) каждое второе значение это и есть Id товара на который действует скидка(эти Id собираются в массив $prodIdAr и возвращаются методом getProductIdDiscontAr)
Таким образом если у Вас скидки указаны не явно на товар а например по свойства, то метод нужно дописывать под такие скидки.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как органичить данные в фильтре smart.filter только свойствами товаров переданными в массиве $arrFilter(имя которого передано в FILTER_NAME)?, Как органичить данные в фильтре smart.filter только свойствами товаров переданными в массиве $arrFilter(имя которого передано в FILTER_NAME)?
Проверено что $arParams["FILTER_NAME"] содержит строку "arrFilter"
При всём выше описанном комплексный компонент каталог отображает товары указанные в $arrFilter["=ID"] (то есть товары с скидкой), а фильтр по свойствам(Размеры, материалы и прочее) генерируется из всех 50-ти+ товаров имеющихся в инфоблоке каталога.
Как ограничить данные в фильтре данными относящимися исключительно к товарам с скидкой(то-есть ид которых содержится в $arrFilter["=ID"]).
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Распродажа повторяет комплексный компонент каталог bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?, Распродажа повторяет комплексный компонент каталог bitrix. Как настроить массив в FILTER_NAME чтобы на распродаже выводлись только товары с скидкой?
В directory root сайта есть 2 папки catalog и sale. В catalog размещён комплексный компонент bitrix - catalog. index.php из sale подключает через require_once index.php из папки catalog.
В админке bitrix настроены скидки на определённые товары.
Если обращение идёт к папке sale то создаётся массив arrFilter который передаётся в FILTER_NAME компонента каталог.
Вопрос в том что именно нужно передать в $arrFilter чтобы на /sale/ отобразились только товары с действующей скидкой?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?, Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?
Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?, Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?
Евгений Жуков написал: Для catalog.section фильтр по полям и свойствам ТП идет в ключ OFFERS
А как именно? $arrFilter['OFFERS_PROPERTY_'.$key.'_VALUE'][] = $value; Так или как то иначе? Как написал что то не сработало. ID инфоблока всё равно указываем каталога а не ТП, верно?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
А если отфильтровать требуется по свойству торгового предложения например с CODE = SIZE как это сделать через FILTER_NAME инфоблок я так понимаю всё равно указывается от каталога с товарами а не инфоблок торговых предложений?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?, Как в bitrix catalog.section выполнить фильтрацию по свойствам торговых преложений?
Умный фильтр несколько отредактирован, поэтому для ajax запросов создан отдельный файл и выхов компонента catalog.section в который передаётся имя переменной $arrFilter.
Значения данного массива формируются из данных из GET, а именно так: foreach ($_GET as $key => $get) : if (is_array($get)) { foreach ($get as $value) { $arrFilter['PROPERTY_'.$key.'_VALUE'][] = $value; } } endforeach;
Если создать свойство у товаров, например SIZE то с ключом $arrFilter['PROPERTY_'.$key.'_VALUE'] всё нормально работает и товары фильтруются. В документации нашёл что фильтрация по торговым предложениям осуществляется точно так же то есть указывается например PROPERTY_SIZE или PROPERTY_SIZE_VALUE, но ни так ни так не срабатывает. Как отфильтровать по свойству торгового предложения с именем SIZE? Не в конфликте ли имен проблема? SIZE сейчас есть и у товаров и у ТП, при этом по товарам фильтруется а по ТП нет.
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Как передать страницу пагинации в $APPLICATION->IncludeComponent("bitrix:catalog.section" не Get параметром ?PAGEN_1=1 а из POST переменной $pagination, Как передать страницу пагинации в $APPLICATION->IncludeComponent("bitrix:catalog.section" не Get параметром ?PAGEN_1=1 а из POST переменной $pagination
Есть вызов компонента catalog.section который подгружает данные по Ajax при использовании фильтров(она немного не стандартная поскольку есть множественный выбор по каждому параметру) Нужно передать значение номера страницы пагинации в $APPLICATION->IncludeComponent( "bitrix:catalog.section", "new_section", array(........ но не в виде GET["PAGEN_1"] а из переменной $_POST["pagination"]
Как это сделать?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить