Bitrix подарки sale.gift.basket аяксом Часть 2.

Здесь появляется возможность добавить подарок в корзину аяксом, без перехода на сам товар.

Для этого в карточках выведем кнопку «Выбрать», добавим к нему урл и навесим обработчик, к-й аяксом добавит товар в корзину, отрисует позицию и пересчитает всю  сумму.  Согласитесь, не трудно же?

1. Находим в шаблоне sale.gift.basket кнопку BUY_LINK. Добавляем класс add_to_basket ссыль


href="action=add&id=<? echo $arItem['ID']; ?>

Стоит заметить, что кнопок там будет 2 — одна товар, 2-я — торговое предложение.
(далее…)

Bitrix подарки sale.gift.basket аяксом

Подарки выводяться в корзине компонентом sale.gift.basket. Надо выводить их аяксом сразу после применения купона. Шаблон компонента старый old_version_17. Новые .default и bootstrap_v4 написаны на mustache, там данный код не сработает.
1. Создаем спец. файл gifts.php в компоненте корзины. К нему пойдет аякс запрос. В него помещаем тот же компонент корзины, к-й будет выводить не корзину, а подарки. Делается это, потому как массивы $arResult[«APPLIED_DISCOUNT_LIST»] и $arResult[«FULL_DISCOUNT_LIST»] доступны только из-под корзины. Напрямую подарки не подключить. Для этого создадим отдельный шаблон корзины ajax_gift_template. (далее…)

bitrix умный фильтр красивый урл

Умный фильтр выдает урл вида
site.ru/tovars/filter/color-is-8e4e6038-474d-11e6-80e5-94de807e86a2/apply/
А нужен вида
site.ru/tovars/?filter=color-is-red&model-is-jbl
чтобы не индексировался.
Замена в catalog/index.php


		"SEF_URL_TEMPLATES" => Array(
			"smart_filter" => "#SECTION_CODE_PATH#/?filter=#SMART_FILTER_PATH#"

не полное решение.
(далее…)

Битрикс набор функций

Наверно, самый популярный метод — список элементов


$res = CIBlockElement::GetList(
  Array("SORT"=>"DESC") , // $arOrder 
  array('IBLOCK_ID'=>55), // $arFilter
  false, // $arGroupBy 
  Array("nTopCount"=>10), // $arNavStartParams
        array('ID' , 'NAME') // arSelectFields
); 
while($ob = $res->GetNext(true, false)){
    print_r($ob );
}
(далее…)

Битрикс кастомизация умного фильтра

часто возникает задача поменять шаблон catalog.smart.filter — например, селект сделать картинками, а на range slider цен навесить свои ползунки. Разобраться в битриксовом винегрете из html, php, js можно в этом посте.
Шаблон условно легко поделить на фильтр по св-вам, к-е указали в админке (Магазин — Основной каталог товаров — Настройки каталога), и фильтр по ценам. Это 2 цикла с пометками //prices //not prices (далее…)

Bitrix google recaptcha для компонентов

Добавим рекапчу от гугл в компоненты


1. blog.post.comment // комментарии в блоге
2. forum.topic.reviews // комментарии к статическим страницам
3. iblock.element.add.form // форма

Как подключать рекапчу писал в статье http://phpjs.ru/2017/07/18/google-captcha-v2/. А также, если не умеете работать с классами и композер, можно проверить капчу 3 строчками кода (см. в конце статьи).
Но это не есть красиво) Вынесем верификацию в ReCaptcha.php


    public function verifyCaptcha()
    {
        if ($_POST["g-recaptcha-response"]) {
            $resp = $rec->verify(
                $_POST["g-recaptcha-response"],
                $_SERVER["REMOTE_ADDR"]
            );
            return $resp->isSuccess();
        }
    }

(далее…)

Битрикс замена путей файлов на постоянные

При импорте, а также просто загрузке файлов битрикс создает каждый раз новый путь до файла.
Выглядит он примерно так: /upload/iblock/0a1/image.png . Я же заменю на /upload/files/1234/image.png где 1234 id элемента.
Я пройдусь по всем файлам и перемещю их в постоянные папки, удалив старые, чтобы не занимали места. Далее подробно в комментах. (далее…)

Битрикс отправка письма с вложением с формы.

Находим форму. Если сделан инфоблоками — это компонент iblock.element.add.form. Кастомизируем. Для этого добавляем пространство имен, копируем компонент и подключаем его уже как namespace:iblock.element.add.form. Или просто копируем в папку local/bitrix/components/
В коде component.php находим строки где идет добавление элемента инфоблока.


	
	// add new element
	$sAction = "ADD";

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


	

				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($arUpdateValues, true), FILE_APPEND);
				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($arResult["ERRORS"], true), FILE_APPEND);
				// file_put_contents($_SERVER['DOCUMENT_ROOT'].'/upload/form.txt', var_export($_FILES, true), FILE_APPEND);

(далее…)

Битрикс метатеги для торговых предложений

Заменим метатеги для тороговых предложений, а также просто для любых элементов каталога.
Перед вызовом компонента элемент каталога («bitrix:catalog.element») сделаю проверку на offer, то бишь торг. предложение.


if(!empty($_GET['offer'])){
	$arParams["SET_TITLE"] = $arParams['SET_META_DESCRIPTION'] = $arParams['SET_META_KEYWORDS'] = $arParams['SET_BROWSER_TITLE'] = 'N';
}

Добавим параметры, если их нет


		"SET_META_DESCRIPTION" => $arParams['SET_META_DESCRIPTION'],
		"SET_META_KEYWORDS" => $arParams['SET_META_KEYWORDS'],
		"SET_BROWSER_TITLE" => $arParams['SET_BROWSER_TITLE'],
"SET_TITLE" => $arParams["SET_TITLE"],

(далее…)

Bitrix формирование урлов многоуровневых разделов

Сайты каталоги в основном имеют структуру многоуровневых разделов. При тестировании могут потребоваться урлы этих разделов. Рекурсивное формирование ссылок и экспорт их в csv будет рассмотрен в этой статье.

329 zamorozhennie-ovoshi/green-goroh Замороженные овощи/Зеленый горошек «Premiko»
330 conserves/cucumber Консервированные овощи/Огурцы
331 v-steklannih-bankah/grib Овощи в стеклянных банках/Грибы
332 v-steklannih-bankah/tomatos Овощи в стеклянных банках/Помидоры
333 zamorozhennie-ovoshi/brokkoli Замороженные овощи/Брокколи
334 conserves/tomate Консервированные овощи/Банка томатов

Скрипт я написал в ООП стиле
Допустим у нас есть массив разделов где присутствует некий текст, напр. кнопка «Купить». (далее…)