Живая лента

Данное сообщество не является официальным и не преследует ни каких целей. Владелец сайта оставляет за собой право удалять сообщения по своему усмотрению. Рекламные темы и сообщения только с согласия администратора.

Вход Регистрация
Быстрый вход / регистрация, через социальную сеть
Регистрируясь на сайте, Вы безоговорочно принимаете условия политики конфеденциальности и обработки персональных данных
valia9889@gmail.com Всем
17 сентября 16:12
Добавлены 1 фото в альбом: Новый альбом
Михаил Базаров -> Всем
7 сентября 12:28
Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов на одну карту

Подробнее:
https://camouf.ru/blog-note/7803/
a13z2005@yandex.ru -> Всем
28 августа 22:38
Привет всем!
у кого есть старые шаблоны корзины?!
и подскажите пожалуйста как в списке товаров (в корзине) вывести наименование раздела товара?
Михаил Базаров
Старая корзина во вложении.
Вывести раздел можно вот так: https://camouf.ru/blog-note/6093/
В корзине можно получить ID элемента

Учтите что у SKU это и есть ID товара, а у простого товара нужно получить его по PRODUCT_ID
Файлы:
sale.basket.basket.7z (112.55 КБ)
Михаил Базаров
Хотя у SKU нет разделов- так что все равно, нужно получать ID элемента по связанному SKU или PRODUCT_ID.
vitstar -> Всем
20 августа 15:58
Всем привет!

Как вывести элементы подраздела если родительский раздел был изменен?

Компонент catalog:section

У родительского раздела не выводятся товары из под разделов.
Если эти подразделы уже до этого существовали и были переключены в этот родительский раздел.
Но если пересохранить эти товары (Просто зайти в товар и сохранить), то данный товар выводится в родительском разделе.
Так же в родительском разделе выводятся товары которые были созданный уже в подразделе родительского раздела.
Например у нас есть 3 раздела. Раздел одежда, штаны и кофты. Одежда и штаны находятся на одном уровне, а кофты являются подразделом раздела "Одежда". Товары из раздела кофты выводятся в разделе одежды (Так как раздел кофты подраздел). В админке меняем родительский раздел разделу "Штаны" на "Одежду" (Теперь раздел штаны подраздел "Одежды"). Товары из раздела штаны не выводятся. Почему? Но если мы пересохраним какой либо товар из раздела "Штаны", то он выведится в разделе "Одежда". Как сделать что бы автоматически выводились товары?

Михаил Базаров
А битрикс чистый? Или какое-то решение из маркетплейса?
По идее, глюк какой-то. Так быть не должно
Андрей Александрович -> Всем
19 августа 14:39
Добрый день, как получить доп. свойство самого инфоблока?
Михаил Базаров
Не понял вопроса
Михаил Базаров -> Всем
11 августа 14:19
Битрикс, удалить всех пользователей через API

Если хотите удалить всех зарегистрированных пользователей из Битрикс.
Делать это в списке пользователей, достаточно ресурсоемко и рутинно (если их реально много, например 10 000).
Вывести всех сразу и отметить чекбокс "выбрать всех" - скорее всего не получится, придется выводить по 1000 или меньше.

Что бы "грохнуть всех разом" - можно воспользоваться API
<?
$filter = Array
(
  "GROUPS_ID"=> Array(5))
);
$rsUsers = CUser::GetList(($by="id"), ($order="desc"), $filter);
while($arItem = $rsUsers->GetNext())
{
        if (CUser::Delete($arItem['ID'])) echo "Пользователь " .$arItem['ID']. " удален";
}
?>

Здесь мы:
-  Выбрали всех пользователей из группы с ID=5 (обычно "Зарегистрированные пользователи")
-  Методом User::GetLis - получили всю информацию о них (но, по сути, нам нужен только ID пользователя)
-  Методом CUser::Delete - удалил полученного пользователя (перебрав всех)

В массиве arItem хранится вся информация о пользователях. Комбинируя ее по разному, можно удалить только определенных пользователей.
Например: тех кто не заходил на сайт больше года.

Учтите, что если у пользователя есть заказ в магазине- он не удалится. Сначала нужно заархивировать все заказы или заказы до определенной даты.
Михаил Базаров -> Всем
6 августа 20:50
Получить группу текущего авторизованного пользователя в битрикс

Если нужно вывести где-то на странице или в кабинете группу, к которой относится текущий авторизованный пользователь. Можно получить ее методом
CGroup::GetByID

Сначала, методом CUser::GetUserGroup - получаем ID всех групп, к которым относится пользователь.
Затем, раздербаниваем массив foreach-ем и получаем названия всех групп по их ID
<?
global $USER;
   $curUserId = $USER->GetID(); // ID текущего пользователя
   $arGroups = CUser::GetUserGroup($curUserId); // ID групп текущего пользователя
   foreach ($arGroups as $curUserGroups) {
    $rsGroup = CGroup::GetByID($curUserGroups); // Получаем названия всех групп
    $arGroup = $rsGroup->Fetch();
    if ($arGroup['ID'] !== '2') {
            echo $arGroup['NAME'];  // И выводим
     }
   }
?>
В моем примере, я еще выполняю проверку ( if ($arGroup['ID'] !== '2') ). Не вывожу группу "Все пользователи" - у меня ее ID=2
По сути, все пользователи состоят в этой группе- выводить ее ни к чему




Фото:
Михаил Базаров -> Всем
6 августа 18:21
Что бы преобразовать php массив в js код, например передать данные о товаре из template.php в script.js шаблона. Можно использовать
CUtil::PhpToJSObject

Пример

В template.php
$jsParams = array(
         'PRODUCT' => array(
                  'PREVIEW_TEXT' => $arResult['~PREVIEW_TEXT'],
          ),
);

<script>
   var <?=$obName?> =
   new JCCatalogElement(<?=CUtil::PhpToJSObject($jsParams, false, true)?>);
</script>

Теперь в script.js будет доступно описание анонса, можно создать переменную для более гибкого управления
this.product.text = this.params.PRODUCT.PREVIEW_TEXT;

a13z2005@yandex.ru -> Всем
27 июля 0:01
Здравствуйте, подскажите пожалуйста как в catalog.comments отключить toolbar и табы, чтобы осталось только поле ввода текста ( скрин https://yadi.sk/i/fBxLxC2RHvkBwg ).

может есть у кого упрощенная версия этого компонента?!

Спасибо.
Михаил Базаров
Там все лихо закручено. Это компонент состоит из 3-х разрозненных.
Проще всего, попрятать не нужные части в display:none
Михаил Базаров -> Всем
14 мая 2018 9:03
Установить вебсервер на Ubuntu 18 LTS, оптимизированный под битрикс.

Выполняем обновление:
apt-get update
apt-get upgrade

Перезагружаем сервак: reboot

Данный вебсервер использую только для локальной разработки. Собственно, запущен на моем рабочем ноутбуке
под Кubuntu 18LTS. Что бы работать с разрабатываемыми сайтами быстро и в отсутствии интернета.
Для продакшена, нужно настраивать более тонко, хотя и так заработает.

Ставим апач:
sudo apt-get install apache2

Добавляем апач в автозагрузку:
sudo systemctl enable apache2

Ставим PHP 7.2.5:
sudo apt-get install php7.2-cli

Проверяем что он встал:
php -v (покажет версию php)

Перезапускаем апач:
sudo systemctl restart apache2

Ставим базу данных (Mysql 5.7):
sudo apt install mysql-server
Сконфигурировать Mysql, все команды выполняем поочереди
sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables&
sudo mysql --user=root mysql

Устанавливаем пароль пользователя root базы данных
mysql> update user set authentication_string=PASSWORD('PASSWORD') where user='root';
flush privileges;

Установка phpmyadmin
sudo apt-get install phpmyadmin php-mbstring php-gettext
В процессе попросит выбрать сервер (apache2) и пароль root базы данных

Все, базовый сервер готов. Можете поднастроить конфигурацию php
в файле /etc/php/7.2/cli/php.ini
Но я передпочитаю доводить под конкретный сайт, в файле виртуального хоста.


И конфигурацию базы данных
в файле /etc/mysql/mysql.conf.d/mysqld.cnf
Свой, заточенный под битрикс, приложу в архиве. Но очень внимательно, зависит от объема
оперативной памяти на сервере. Должен нормально запуститься если больше 4-х.
Если меньше, подкрутите этот конфиг (параметры выедающие память) под себя.


СОЗДАНИЕ ВИРТУАЛЬНОГО ХОСТА

Создать папку для сайта
mkdir /var/www/site.ru/public_html

Создать запись виртуального хоста
nano /etc/apache2/sites-available/site.ru.conf
с содержимым (повторюсь, конфиг php подгоняю под конкретный сайт.
В php.ini у меня все по умолчанию). Данное содержимое под Битрикс Бизнес
<VirtualHost *:80>
ServerName site.ru
ServerAlias site.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site.ru/public_html/

<Directory /var/www/site.ru/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm

php_admin_value short_open_tag On
php_admin_value mbstring.func_overload 2
php_admin_value mbstring.internal_encoding UTF-8
php_admin_value date.timezone Europe/Moscow
php_admin_value opcache.revalidate_freq 0
php_admin_value opcache.max_accelerated_files 100000
php_admin_value display_errors On
php_admin_value max_input_vars 10000
php_admin_value upload_max_filesize 8M
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Добавить сайт (включить)
sudo a2ensite site.ru

Перезагрузить апач (любая из трех, рекомендуется последняя команда)
sudo systemctl restart apache2

Создаем пользователя базы данных с полными привелегиями (так как root заблокирован и пусть таким остается). Команды выполняем поочереди
sudo mysql --user=root mysql
CREATE USER 'USER_NAME'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON * . * TO 'USER_NAME'@'localhost';
FLUSH PRIVILEGES;

Все. Простой веб сервер готов. Использую на локальном компьютере для разработки.
Для продакшена нужно настраивать параметры более тонко, особенно в плане
безопасности (директории для хранения сессий итд запреты/разрешения).
Плюс есть резон установить nginx и memcache (если позволяет оперативка)

Но об этом позже.

Видео инструкция, по данной заметке
https://www.youtube.com/watch?v=W-2mXox4ukU
Фото:
Файлы:
mysqld.cnf (3.16 КБ)
Локальный вебсервер в подсистеме Linux в Windows 10
Делается по заметке https://camouf.ru/club/user/1/blog/144/ Настраиваем локальный веб-сервер, для разработки сайтов. Осваиваем подсистему Linux в Windows 10 ...
Сергей Стефанович
Михаил Базаров,
Михаил, расскажи пожалуйста какие парметры нужно выставить в php.ini и my.cnf
установил Brainy. но производительность на битрикс вообще так себе
Михаил Базаров
Скрипт для добавления виртуального хоста
#!/bin/bash
#************************************************#
# Скрипт создает новый сайт, вклюает его в       #
#************************************************#
# Основа взята тут http://ubuntu-favorite-os.blogspot.co...u1010.html

echo -e "33[1mВведите название проекта (Например example.com):33[0m";
read NAME_OF_PROJECT

#создаем папки проекта
sudo mkdir /home/camouf/SITES/$NAME_OF_PROJECT

#даем полные права (только для локальной разработки- не пускайте в инет)
sudo chmod -R 777 /home/camouf/SITES/$NAME_OF_PROJECT/

#добавляем правила в конфигурационый файл апача
add_to_apache_conf="
<VirtualHost *:80>
ServerName ${NAME_OF_PROJECT}
ServerAdmin webmaster@localhost
DocumentRoot /home/camouf/SITES/${NAME_OF_PROJECT}/
<Directory /home/camouf/SITES/${NAME_OF_PROJECT}/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm

php_admin_value short_open_tag On
php_admin_value mbstring.func_overload 2
php_admin_value mbstring.internal_encoding UTF-8
php_admin_value date.timezone Europe/Moscow
php_admin_value opcache.revalidate_freq 0
php_admin_value opcache.max_accelerated_files 100000
php_admin_value display_errors On
php_admin_value max_input_vars 10000
php_admin_value upload_max_filesize 8M
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>"

#добавляем новый хост
#echo "$add_to_hosts_conf" >> /etc/hosts
touch /etc/apache2/sites-available/${NAME_OF_PROJECT}.conf
echo "$add_to_apache_conf" >> /etc/apache2/sites-available/${NAME_OF_PROJECT}.conf

#включаем конфигурацию сайта
sudo a2ensite ${NAME_OF_PROJECT}

#перезапускаем апач
sudo systemctl restart apache2
chmod -R 777 /home/camouf/SITES/${NAME_OF_PROJECT}

echo "Сайт готов"
a13z2005@yandex.ru -> Всем
21 июля 21:54
Всем привет!)
Подскажите пожалуйста как реализовать сгруппированный вывод товаров по разделам и подразделам
в компоненте catalog.section
Пример - см.скрин  https://yadi.sk/i/1GuTJxWFMu9dAw

Михаил Базаров
Посмотрите. Если правильно понял- то что нужно
https://camouf.ru/club/user/1/blog/202/
Михаил Базаров -> Всем
26 июня 10:47
При клике на маленькую фотографию меняется большая.

Мини скриптик, может кому пригодится для каталога товаров или новостей при использовании дополнительных картинок (обычно MORE_PHOTO).
Вместо штатного, монструозного магнифера

PHP
<div class="more_photos">
     <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current">
           <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>">
    </a>
    <?
    if (count($arResult["MORE_PHOTO"]) > 0) {
       foreach ($arResult["MORE_PHOTO"] as $PHOTO) {
       $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false);
   ?>
      <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
               <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>">
      </a>
      <? }
   } ?>
</div>
JS
$(".more_photos").on("click", "a", function () {
     $(this).addClass("current").siblings().removeClass("current")
     $(".main_photo img").attr("src", $(this).prop("href"))
     return false;
});
CSS
Тут уж сами под свой дизайн. Например, как на картинке
.more_photos {
      float: left;
     width: 100px;
}

 .more_photos a {
     display: block;
     margin-bottom: 10px;
     text-decoration: none;
     width: 100%;
     height: 100px;
     border: 3px #fff solid;
     box-shadow: 0px 0px 1px #ccc;
     transition: all .25s ease-out;
}

   .more_photos a:hover {
     border: 3px #f6f6f6 solid;
}
   .more_photos a.current {
     border: 3px #D68189 solid;
}

.main_photo {
     float: right;
     width: calc(100% - 110px);
}

 .main_photo img {
     width: 100%;
     transition: all .25s ease-out;
}

PS: само собой, на сайте должен быть подключен jquery
Фото:
Михаил Базаров -> Всем
29 мая 10:27
Если нужно что-то сделать при появлении клавиатуры в мобильном приложении на Битрикс.

При вызове клавиатуры, внутри приложения страница сжимается по высоте. То есть, клавиатура накладывается не поверх контент, а именно уменьшает высоту контента, на свою высоту.

Кстати, это актуально и для обычных сайтов, в мобильном браузере

Частный случай:
- В приложении имеется закрепленная снизу панель, с быстрыми ссылками.
- При вызове клавиатуры (например написать комментарий) эта панель также поднимается над клавиатурой, перекрывая пол экрана.
- На iOS еще и ведет себя не адекватно, оказываясь в центре и ломая верстку
- Решение: прятать эту панель в display:none при появлении клавиатуры

Для этого блока добавляем id="keyborad_show", понятное дело, id можно любой.
<div id="keyborad_show" class="bottom_fixed">
       <a href="/mobileapp/dynamic/audio"><span class="fa fa-file-audio-o"></span> Аудио</a>
       <a href="/mobileapp/dynamic/video/"><span class="fa fa-file-video-o"></span> Видео</a>
       <a href="/mobileapp/dynamic/trand/"><span class="fa fa-fire"></span> Тренд</a>
</div>

Дальше все просто.
Включаем слежение за клавиатурой
BXMobileApp.UI.Page.captureKeyboardEvents(true);

На событие ее появления, просто добавляем класс к нужному элементу
var keyboard = document.getElementById('keyborad_show');
BX.addCustomEvent("onKeyboardDidShow", function(){ // Событие появления клавиатуры
       $(keyboard).addClass('dn_bf');
});
Ну и в css добавляем
.dn_bf {
      display: none;
}


Анатолий Теорский -> Всем
7 мая 8:34
А можно как нибудь в оформлении заказа принудительно всегда ( не зависимо от профиля покупателя ) выбирать способ оплаты и службу доставки которые мы поставим ? Проблема заключается в открытии всех блоков, так как у некоторых платежных систем и служб доставки есть ограничения, то когда грузится оформление заказа, может загрузиться одновременно две не совместимые комбинации ( платежка + служба доставки ) и тогда служба доставки не отображается. Либо может есть способ корректно всегда открыть все блоки в оформлении заказа? ( метод который описал Михаил - не работает ), а другие которые описаны на форумах - приводят к неотображению способов доставки ( если есть ограничения )
Михаил Базаров
Тут, только делать свою форму оформления.
Если правильно понял вопрос, нужно принудительно выбирать и службы оплаты/доставки.
Надо скидывать, все ранее выбранные пользователем (что не позволит штатный компонент) и выбирать заранее "утвержденные".
Михаил Базаров -> Всем
4 мая 10:18
Где MAMP Хранит базы данных на macOS

MAMP Pro до версии 5: Хранит базы данных в директории своей установки
/Applications/MAMP/db

MAMP Pro версии 5: Хранит базы в
/Libraries/Application Support/appsolute/MAMP PRO/db
Михаил Базаров -> Всем
17 февраля 2018 12:13
Разные свойства у разделов одного инфоблока  в Битрикс
Как создать разные свойства, в форме создания элемента, внутри одного инфоблока битрикс.

битрикс, свойства битрикс, элементы битрикс, разделы битрикс

https://www.youtube.com/watch?v=1KP1cWM26tU
Разные свойства у разделов одного инфоблока в Битрикс
Как создать разные свойства, в форме создания элемента, внутри одного инфоблока битрикс.
<Без имени>
Для небольшого ассортимента это хорошее решение. А если выгрузка из 1С и тысячи позиций и тысячи свойств, есть ли варианты автоматизировать процесс?
Михаил Базаров -> Всем
20 марта 10:57
bitrix.sale.order.ajax раскрыть блоки доставки и оплаты.

Если в компоненте одношагового оформления заказа, нужно раскрыть блоки доставки и оплаты:
В самый низ template.php добавляем
$(window).on('ready', function(event){
    BX.Sale.OrderAjaxComponent.editDeliveryBlock(true);
    BX.Sale.OrderAjaxComponent.editPaySystemBlock(true);
});
Для блоков оплаты и доставки добавляем селектор bx-selected

Тоже самое, можно делать со всеми блоками:
BX.Sale.OrderAjaxComponent.editActiveBasketBlock(true);
BX.Sale.OrderAjaxComponent.editActiveRegionBlock(true);
BX.Sale.OrderAjaxComponent.this.editActiveDeliveryBlock(true);
BX.Sale.OrderAjaxComponent.editActivePaySystemBlock(true);
BX.Sale.OrderAjaxComponent.editActivePickUpBlock(true);
BX.Sale.OrderAjaxComponent.editActivePropsBlock(true);

И можно убрать кнопки "Далее - Назад" в файле order_ajax.js

Для доставки: найти и закомментировать
this.getBlockFooter(deliveryContent);
Для оплаты:
this.getBlockFooter(paySystemContent);

Вячеслав
Сделал все по инструкции, но не сработало...
Файлы:
0 Б
Михаил Базаров -> Всем
8 февраля 16:38
Заготовка для разработки сайта на битрикс.
В архиве:
- Папка local с базовым шаблоном и необходимыми файлами (инклюды, аяксы итд)
- Структура персонального раздела
- Структура типовых статичных страниц

Использовано в видео:
https://www.youtube.com/watch?v=vn1OJG...e=youtu.be
Файлы:
fish_site.zip (3.69 МБ)
2) Разработка простого сайта с магазином на #Битрикс / В режиме стримов
Мой сайт: https://camouf.ru Стрим #2: Чистим битрикс и готовим структуру сайта Что будем делать и как будут проходить трансляции. Заготовка шаблонов и структ...
<Без имени>
Вот это прям громадное, спасибо.
Михаил Базаров -> Всем
25 марта 10:50
Форма авторизации с использованием vue js для Битрикс

Готовый шаблон всплывающей формы авторизации.
Просто распаковываем в шаблон своего сайта и выводим в нужной части сайта компонент
system.auth.form и применить этот шаблон (auth)

В основном шаблоне сайта, подключите vue из ядра
\Bitrix\Main\UI\Extension::load("ui.vue");

На его месте появится кнопка, вызывающая шаблон авторизации.
Стилей по минимуму, подгоняйте под себя.

Так же внутри файл для отправки формы (index.php)- результат успешного или не успешного входа.
Этот файл обязательно удалите, или переместите в папку /personal/ он просто для примера (или любую другую папку - в форме подправьте путь)



Фото:
Файлы:
auth.zip (5.19 КБ)
Михаил Базаров -> Всем
21 марта 18:08
Старый-новый шаблон оформления заказа.
Там немножко не аккуратно внутри, делал по быстрому, но думаю кому надо причешете.
Основан на старом шаблоне, верстается легко.
Фото:
Файлы:
older.zip (135.99 КБ)
Михаил Базаров -> Всем
20 марта 21:09
Figma заготовки для мобильного приложения

Это, готовый Figma макет для всех размеров загрузочного экрана. Нужны для использования в форме отправки на компиляцию - пригодятся для формы отправки на компиляцию мобильного приложения.

https://www.figma.com/file/CoWZtnT9VlW...le-screens
Михаил Базаров -> Всем
17 марта 13:13
Если файлы php скачиваются вместо выполнения в Битрикс веб окружении

Если у вас Битрикс веб окружение, и сайт вроде бы нормально работает но некоторые php файлы скачиваются вместо выполнения.
Убедитесь что эти файлы не начинаются с "upload*.php" - то есть, нельзя в именах папок и файлов использовать это слово (даже если uploadpict.php).
Они заблокированы от исполнения на уровне httpd в Битрикс Окружении


Михаил Базаров -> Всем
27 февраля 14:55
Принудительно перезаписать ядро Битрикс, если оно модифицировано.

Если вам достался проект, на котором, предыдущие горе разработчики внесли модификации в ядро Битрикс.
Можно запустить принудительную перезаливку ядра (только файлов)

Просто переходим на страницу
ВАШ_САЙТ/bitrix/admin/update_system.php?BX_SUPPORT_MODE=Y

Само собой, перед запуском, сделайте полную резервную копию.

Ирина Краснова Всем
9 февраля 23:13
Добавила 1 фото в альбом: Новый альбом
Михаил Базаров -> Всем
9 февраля 14:06
Компонент который умеет выводить разделы инфоблока с элементами.
Черновик, сделал за часок. Настройки и шаблон немного не гибкие, будет дорабатываться.

Выводит:
- название и ссылку на раздел,
- название и ссылку на элемент,
- картинку анонса элемента,
- описание анонса элемента
- цену элемента (если установлен торговый каталог)

Пока плохо выводит свойства. В принципе выводит и дает их выбрать в параметрах. Но в шаблон нужно добавлять вручную.
Что бы работали ссылки, они должны быть обязательно указаны в настройках инфоблока (прописывание в ручную будет позже).
Дает указать количество выводимых элементов.

ВАЖНО! работает с версии Битрикс 18.5 (ниже нет)

Размещать в своем пространстве имен
Будет доступен в Контент=>Каталог




Фото:
Файлы:
Михаил Базаров -> Всем
27 января 14:57
Передать контактные данные покупателя в почтовое событие "Новый заказ"

Если нужно добавить свои поля в почтовое событие "Новый заказ", например ФИО, адрес и телефон покупателя
Добавляем в init.php
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails");
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
 $arOrder = CSaleOrder::GetByID($orderID);
 $order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
 $fio = "";
 $phone="";
 $address = "";
 while ($arProps = $order_props->Fetch())
 {
   if ($arProps["CODE"] == "FIO")
   {
     $fio = $arProps["VALUE"];
   }
   if ($arProps["CODE"] == "PHONE")
   {
      $phone = $arProps["VALUE"];
   }
   if ($arProps["CODE"] == "ADDRESS")
   {
     $address = $arProps["VALUE"];
   }
 }
 $arFields["FIO"] = $fio;
 $arFields["PHONE"] =  $phone;
 $arFields["ADRESS"] =  $address;
}

После этого, в почтовом шаблоне будут доступны маркеры
#FIO# #PHONE# #ADRESS# с нужными данными

Добавляя блоки
if ($arProps["CODE"] == "ADDRESS")
{
 $address = $arProps["VALUE"];
}
Можно передать любые свойства заказа, по их коду
Михаил Базаров -> Всем
4 января 21:25
Сделать перенаправление на 80-ый порт внутри докер контейнеров, если их больше одного.
Перенаправление доменов на IP контейнера на порт 80 каждого

Если у вас два (или больше) докер контейнера, к которым нужен доступ на 80-ый порт извне.
Можно разрулить на хост машине, с помощью
HAProxy и nginx

Исходные данные:
- Хост машина с Docker-ом- Ubuntu 18
- Внутри запущено два контейнера с битрикс веб окружением.
- Нужно, в зависимости от запрошенного адреса (домена), направить на 80-ый порт соотвествующего контейнера
- Контейнер 1: сделан форватинг порта хост машины 9380 на порт 80 контейнера (домен site1.ru)
- Контейнер 2: сделан форватинг порта хост машины 9480 на порт 80 контейнера (домен site2.ru)

На хост машину ставим HAProxy
# apt-get update
# apt-get -y install haproxy

На хост машину ставим nginx
# apt-get -y install nginx

В конфиг виртуального хоста nginx добавляем
# первый контейнер
server {
    listen 80;
    server_name site1.ru;
        location / {
             proxy_set_header HOST $host;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://0.0.0.0:9380/;
        }
}

# второй контейнер
server {
    listen 80;
    server_name site2.ru;
        location / {
             proxy_set_header HOST $host;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://0.0.0.0:9480/;
        }
}

Перезапускаем nginx
     

/etc/init.d/nginx restart


PS: Можно для каждого сайта сделать свой конфиг- что бы было аккуратнее
nano /etc/nginx/sites-enabled/site1.ru


Михаил Базаров
Еще аккуратнее.
Сделать докер контейнер с nginx, дабы ни чего не ставить на хост машину (кроме докера естессно)
Михаил Базаров -> Всем
11 января 2017 14:43
Кто просил старый шаблон оформления заказа битрикс sale.order.ajax? Вот он

PS Добавлено позже, Там оказывается вообще весь компонент изменился на D7
В архиве целиком старый компонент, вместе со старым шаблоном



Файлы:
sale.order.ajax.zip (104.48 КБ)
<Без имени>
Спасибо большое. Ту ересь, что написана в новом шаблоне, кастомизировать нереально.
Михаил Базаров -> Всем
11 декабря 2018 23:38
Использование Vue.JS в Битрикс. Мини инструкция, развернутая будет позже, в блоге

Подключение vue библиотеки из ядра битрикс:
Доступна с версии ui 18.5.1
\Bitrix\Main\UI\Extentions::Load("ui.vue");

Подключение vuex:
Доступна с версии ui 18.5.1
\Bitrix\Main\UI\Extentions::Load("ui.vue.vuex");

Подключение дебаг информации от vue
Добавить в init.php - подключение версии для разработки
define('VUEJS_DEBAG', true)

Для использования функций vue в битрикс, нужно использовать не Vue.xxx
а BX.Vue.xxx - где xxx нужная функция
Исключение. Для создания экземпляра писать не
new Vue(...)
а
BX.Vue.create(...)

Для использования функций vuex правила теже
а BX.Vuex.xxx - где xxx нужная функция
Vuex.Store(...) заменить на BX.Vuex.store(...)
Игорь -> Всем
17 октября 2018 19:41

Необходимо произвести полную переиндексацию сайта для корректной работы поиска.

Подскажите куда нужно зайти?в какую то социальную сеть,весь интернет перерыл не могу найти
Игорь
вот
Файлы:
0 Б
<Без имени>
Игорь, после переиндексации в админке, надо сделать переиндексацию модуля социальная сеть.
Лайвхак - заходи в ДИСК и кнопка появится
Файлы:
0 Б
<Без имени>
Игорь, а вообще - вот прямая ссылка
https://адрес_твоего_портала/company/personal/user_reindex.php
Roman L -> Всем
22 октября 2018 9:44
Великий и могучий Битрикс иногда видит такие дубли как

www.nazvaniesaita.ru/catalog/category1/product1
www.nazvaniesaita.ru/catalog/category1/podkategory1/product1
(Используется компонент каталог)

И говорит, у тебя дубль страницы, что же делать ?

Как поставить каноническую ссылку на нужный тебе путь, и где он ставится ?
Михаил Базаров
В настройках компонента каталог, поставить галку "Использовать канонический url"
В настройках самого инфоблока, прям на первой странице (там, где название инфоблока и пути для ЧПУ) вписать правила генерации канонических URL
Киря -> Всем
12 октября 2018 15:44
Добрый вечер.

Как создать дополнительное описание в каталоге битрикс?

Или как лучше реализовать поиск по тэгам в разделе каталога.
Для облегчения поиска по разделу каталога надо сделать тэги. Как их создавать и выводить в битрикс?
Примерно вот что я хочу.

http://brownsugar.by/shokolad,-glazur...ra,-kakao/

Кликаешь по тэгу и тебе аяксом товары подтягивает. Как что то подобное реализовать в Битрикс?

Шоколад, глазури, пудра, какао / Ингредиенты - Интернет-магазин для кондитера brownsugar.by
Кондитерский шоколад, пудра, глазури, какао для настоящих профессионалов на Brownsugar.by! Мы привозим только качественные ингредиенты по всей Беларуси. Заходите и заказывайте!
Михаил Базаров
Можно умный фильтр под это дело адаптировать. Теги это свойства товаров, ну и просто вывести их в умный фильтр и использовать AJAX режим штатный.
Киря
Я как бы так и хотел сделать... Другой вопрос как сделать сео описание в конце каталога а "тэги" в верху.
Михаил Базаров
Если на каждый тег, должно быть свое описание-то, лучше их сделать разделами и подгружать Аяксом. А описания просто описания раздела.
Для поисковиков, можно сделать карту сайта, что бы могли увидеть каждый тег (его наполнение)