Почтовые шаблоны расположены на странице Настройки > Настройки продукта > Почтовые события > Почтовые шаблоны. Если не знать- то можно искать сколь угодно долго.

-
Bitrix- где находятся почтовые шаблоны?
-
Выставляем права для Joomla файлов через консоль
1)Изменяем права для всего каталога рекурсивно, для папок и файлов
$ chmod -R 755 $(find . -type d)
// только для файлов2)Изменяем только для файлов — рекурсивно
1chmod -R 0644 `find ./ -type f`3)и для файла config 444 — выставляю через ftp или же через админ панель хостинга
4) Кроме этого в папке amministrator добавляю в Htacces для закрытия папки по IP
Order Allow,Deny
Allow from 192.168.0.0/16 -
Устанавливаем рекапча (recapcha) для bitrix форм.
Предисловие. После выполнения данной инструкции recapcha заменит стандартную капчу битрикса.
Вот обучающее видео по веб формам — они есть везде, кроме стартовой редакции битрикса.
https://www.youtube.com/watch?v=R0SKyV2C6_wВнимание! При создании веб формы — выставляем галочку использовать капчу.
Далее приведена ссылка на регистрацию капчи- от сюда нам нужен будет Ключ и Секретный ключ . их сохраняем себе куда нибудь.
https://www.google.com/recaptcha/
Подробнее -
Выставляем свойства select битрикса — функция SetPropertyValueCode
Маленькое лирическое отстпуление. Создатели битрикса пи… плохие люди.
Внимание! для селекта нужно выставлять id . Дополнительный синтаксис _value и property_ не пашет.Он пашет только в arrfilert в компонентах. Заходим в любой элемент инфоблока. И через панельку браузера вытаскиваем id Для Да и Нет внутри селек.12345if(CIBlockElement::SetPropertyValueCode($id_element, "ATT_DAY", 18)){ //число 18 - это моё id значения да.echo 'обновлено';}else{echo 'не обновлено';}Если вы например для строкового поля можете записать название атрибута и засунуть туда значение, для селекта такой фокус не прокатит. Значение ДА НЕТ или иное тоже не пропишите, только численное id. С этой мелочь я застрял на 3 часа своего времени. Надеюсь моему читателю повезет.
-
Вывести через fancybox или litebox видео youtube и превьюшку.
Как вывести видео через fancybox или litebox с превью youtube изображением ?
Через litebox никак.
Можно вынести через fancybox
вот ссылка http://fancyapps.com/fancybox/3/. Скачиваем , заходим в папку \dist , берем минимизированные Js и css файл. Дописываем в header нужной страницы. Этот код для bitrix.Вот изначальный код из документации
1234<a data-fancybox href="https://www.youtube.com/watch?v=_sI_Ps7JSEk">YouTube video<img src="paths"></a>Если нужно превью , то воспользуемся функцией php.
Подробнее -
Bitrix- Вывести свойства типа «файл» на странице товара.
Bitrix- Вывести свойства типа «файл» на странице товара.
Внимание!
1. В компоненте каталог- свойство файл изначально заблокирован проверкой внутри файла result_modifier.php
2. Этот хак только для компонента каталог.1.Скопируйте шаблон компонента в паку шаблона. Для этого включите в Режим правки (вверху) , нажмите на стрелку рядом шестернёй и найдите ‘копировать шаблон компонента’. Если вы уже скопировали это действие пропускайте.
2. После копирования открываем меню рядом с шестерней и выбираем редактирование шаблона компонента catalog.element, пункт «редактировать файл result_modifier.php».

Находим строки:12345678if (!empty($arResult['DISPLAY_PROPERTIES'])){foreach ($arResult['DISPLAY_PROPERTIES'] as $propKey => $arDispProp){if ('F' == $arDispProp['PROPERTY_TYPE'])unset($arResult['DISPLAY_PROPERTIES'][$propKey]);}}удаляем их, либо обрамляем в комментарии (/* и */) .
3. нажать на шестиренку- и добавить название атрибута в свойства снизу мультиселекта. В мультиселексте оно выводится не будет! Пусть будет ATT_FOTO. Оно будет отображено в инпуте снизу. Вариант 2- прописать принудительно в DETAIL_PROPERTY_CODE и другие ….PROPERTY_CODE, которые вам нужны.
4. теперь мы в детальном виде каталога можем использовать файлы
print_r($arResult[‘DISPLAY_PROPERTIES’][‘ATT_FOTO’]); -
php функция list +array_keys или получение первого ключа и первого значения ассоциативного массива в одну строку
Недавно у меня произошел взрыв мозга. Это всё виноваты функции Php и анализ чужого кода. Мне встретились 3 функции:list() ,array_values() и array_keys().
Подробнее -
Bitrix -cложный поиск одновременно по нескольким полям
Сложный поиск одновременно по нескольким полям в bitrix. Ищем не прямое вхождение а поск строки в подстроке (символы процентов). Поиск понимает гет запрос $_GET[‘s’] (…php?s=словапоиска)
OR- позволяет искать одновременно по нескольким полям.
1- обычный поиск по данному инфоблока
2. Поиск по значению настраиваемого полям
3. Поиск по значению связанного данного- у нас в данном коде нужно значение name.
пояснение.У нас есть инфоблок книги, есть второй инфоблок , называемый авторы. У одной книги может быть несколько авторов. Так вот, выводя книги мы фильтруем по имени автора. PROPERTY_ATT_AUTHOR- это настраиваемое поле книги. ДОбавляем точку и дописываем name- обращаемся уже к таблице автор и полю NAME автора. Т. битриском образовали связь один ко многим.
Аналогичен запросу (jeft join … on) в Mysql.1234567$arrFilter=array();$arrFilter[]=array("LOGIC" => "OR",array('NAME'=>'%'.strip_tags($_GET['s']).'%'), //ищем в поле имяarray('property_att_seriya_book'=>'%'.strip_tags($_GET['s']).'%'), // поиск по серии- ищем в настраиваемом поле'PROPERTY_ATT_AUTHOR.NAME'=>'%'.strip_tags($_GET['s']).'%', // поиск по имени автора в связном инфоблоке);Далее arrFilter прописываем в нужном в компоненте.
Вот форма поиска с помощью которой мы обращаемся к разделу search . У формы выставлен метод GET. Кто не знает чем отличается post от get запроса- желательно просветиться.
123<form action="/search" method="get" id=""><input type="search" value="" name="s" ></form> -
Подключаем bitrix без шаблона средствами php
Как использовать битрикс без подключения шаблона? Подключите данный файл и сможете получать данные из любого инфоблока bitrix.
Например создайте файлик api.php в корне сайта и добавьте строку ниже.
//подрубаем битрикс1require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");Сразу станут доступными команды типа
12345678910111213CModule::IncludeModule('iblock');$arFilter = array('IBLOCK_ID' => 1, // ID инфоблока'!=property_att_izd_plany_value' => 'Да','ACTIVE' => 'Y',// любые другие параметры, например 'ACTIVE' => 'Y');$res = CIBlockElement::GetList(false, $arFilter, array('IBLOCK_ID'));if ($el = $res->Fetch()){$m_count['novinki']='<span class="left_menu_count">( '.$el['CNT'].' )</span>';}else{$m_count['novinki']=' ';} -
Получаем xml файл с помощью библиотеки curl в php
Получаем xml файл с помощью библиотеки curl в php. Для отладки ответа используем $data= curl_getinfo ($ch) и print_r($data). Ответ от курл преобразуем в объект xml и к нему обращаемся как к массиву.
123456789101112131415161718function download_page($path){$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$path);curl_setopt($ch, CURLOPT_FAILONERROR,1);curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);curl_setopt($ch, CURLOPT_TIMEOUT, 30);$retValue = curl_exec($ch);$data= curl_getinfo ($ch);// print_r($data); // смотрим статусы для отладки - http_codecurl_close($ch);return $retValue;}$sXML = download_page('http://apiapi.api');$oXML = new SimpleXMLElement($sXML);// возвращает массивprint_r($oXML);
Цены
1500 р/чБолее подробно тут: https://ftask.ru/цены