Михаил Базаров- создание сайтов на битрикс

Живая лента

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

ВходРегистрация
Быстрый вход / регистрация, через социальную сеть
Регистрируясь на сайте, Вы безоговорочно принимаете условия политики конфеденциальности и обработки персональных данных
Михаил Базаров -> Всем
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 режим штатный.
Киря
Я как бы так и хотел сделать... Другой вопрос как сделать сео описание в конце каталога а "тэги" в верху.
Михаил Базаров
Если на каждый тег, должно быть свое описание-то, лучше их сделать разделами и подгружать Аяксом. А описания просто описания раздела.
Для поисковиков, можно сделать карту сайта, что бы могли увидеть каждый тег (его наполнение)
Dsadirin@gmail.com -> Всем
8 октября 2018 23:44
Добрый вечер!

Помогите пожалуйста человеку который начинает изучать Битрикс:)
Есть сайт на битрикс, а точнее интернет магазин, есть стандартный каталог товаров.
В списке товаров при наведении на товар появляется поле выбора количества, и кнопка "в корзину"
Как сделать чтобы все это было видно сразу без наведения на товар?
Подозреваю что все это меняется в стилях, но где конкретно так и не смог найти


Михаил Базаров
Это находится в стилях) Просто изучите шаблоны вывода карточки. Если память не изменяет, в новых версиях они в компоненте
catalog.iblock.element/card
teh.box.mail@gmail.com -> Всем
11 октября 2018 11:06
Добрый день!
Как можно реализовать второй сайт битрикс по одной лицензии не используя "многосайтовость" и с отдельной админ панелью?
Заранее спасибо.
Михаил Базаров
Ни как, запрещено лицензионным договором.
Можно выкрутиться, установив битрикс дважды, но используя единую базу данных- но это чит и на врядли будет в рамках лицензионного соглашения. Плюс, возможны поломки, если начнете ставить обновления на одном из сайтов
Михаил Базаров -> Всем
7 октября 2018 14:35
Шаблон горизонтального меню с фиксацией при прокрутке
Все стили и скрипты в комплекте. В script.js поменяйте высоту шапки на свою

Пример меню, на этом сайте
Файлы:
horizontal_multi.7z (3.12 КБ)
evgenyforever2012@yandex.ru -> Всем
18 сентября 2018 10:14
Добрый день! Подскажите Михаил, а подойдёт установка Memcached на виртуальном сервере (VPS) из статьи https://camouf.ru/blog-note/587/?sphra...e_id=30921 или для этой установки нужен полноценный (выделенный) сервер?
Михаил Базаров
Привет. На виртуальном сервере, как по мне, смысла нет. Там же и оперативка виртуальная: не получите преимуществ перед хранением кеша в файлах на диске.
Но, технически, инструкция подойдет.
evgenyforever2012@yandex.ru
Спасибо! Столкнулся ещё с одной проблемой, не запускается модуль "Управление масштабированием". Сайт установлен на VPS-сервере (Managament pool of server не создавал). Перехожу в панель управления, далее в настройки --> управление масштабированием --> ошибка 404 Not Found.

The requested URL /bitrix/admin/scale_panel.php was not found on this server.
Apache/2.4.6 (CentOS) Server at bearmart.ru Port 9887

Подскажите пожалуйста, как можно исправить?
evgenyforever2012@yandex.ru -> Всем
9 сентября 2018 22:22
Здравствуйте, Михаил! Подскажите пожалуйста, как подключить виртуальную машину к зарегистрированному домену. Может быть есть видео-урок на эту тему?
Для ёмкого интернет-магазина достаточно ли использовать виртуальную машину или все же заказать сервер, например, у компании Simple Cloud c ежемесячной оплатой?
Михаил Базаров
У Simple Cloud тоже виртуальные машины. "Емкий" магазин понятие, конечно растяжимое. Но можете взять у Simple Cloud по тарифу за 1000 рублей, а при необходимости сделаете переход на более производительный сервер/тариф