Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает), Ошибка Class 'Bitrix\Sale\Basket' если подключать пролог require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';, но если подключать шапку(require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");) то всё в порядке.
Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает), Ошибка Class 'Bitrix\Sale\Basket' если подключать пролог require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';, но если подключать шапку(require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");) то всё в порядке.
То всё нормально. Только в задаче мне шапка сайта не нужна, поскольку пишется ajax API для расчёта доставок. Как сделать чтобы класс Basket был виден при подключении require $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
D7, получение информации о товарах и торговых предложениях в корзине(без заказа), как получить длину, ширину и высоту?, Работа с корзиной на D7. Как получить вес и товара или торгового предложения понятно. А как получить вес, ширину и высоту?
Требуется получить информацию о товарах и торговых предложениях корзины bitrix не закреплённой за заказом. Как получить вес понятно. А как получить ширину, длину и высоту?
// [НАЧАЛО] Применяем к товарам к полученной корзине скидки(необходимо если корзина не в заказе) $context = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId()); $discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $context); $r = $discounts->calculate(); if ($r->isSuccess()) { $result = $r->getData(); if (isset($result['BASKET_ITEMS'])) { $basket->applyDiscount($result['BASKET_ITEMS']); } } // [КОНЕЦ] Применяем к товарам к полученной корзине скидки(необходимо если корзина не в заказе)
$sumNoDiscont = 0;// сумма всех товаров без скидок $sumDiscont = 0;// сумма всех товаров с скидкой foreach ($basket->getBasketItems() as $basketItem) {// перебираем товары и торговые предложения в корзине $priceBase = $basketItem->getBasePrice(); $priceDiscont = $basketItem->getPrice(); $weight = $basketItem->getWeight(); $length = $basketItem->как_получить(?); $width = $basketItem->как_получить(?); $height = $basketItem->как_получить(?);
Вопрос: как из $basketItem получить длину, ширину, высоту? _____________________ Примечание: То что можно получить вот так CCatalogProduct::GetByID($_id_торгового_предложения);// возвращается массив в котором есть длина, ширина, высота я и сам знаю. Интересует можно ли прямо из $basketItem-> как то получить?
Моё резюме и мои контакты на SuperJob -> перейти Верефицированный WMID 274708912937 -> проверить
Евгений Жуков написал: Ссылку на загрузку 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 -> проверить