собственно сабж. есть у кого полностью рабочий конфиг ?
мне увы пока так и не удалось полностью подружить эту связку. столкнулся с проблемой заголовков(при ЧПУ), т.е. получаем либо на все 200 OK либо 404 Not Found
если интересно могу выложить конфиги...
совместными усилиями, собрали рабочий конфиг, спасибо Сергею Ляпко
UPD 23.12.2015: Добавил новый конфиг.
Старый
server {
listen 80;
server_name example.com www.example.com;
server_name_in_redirect off;
# access_log /var/log/nginx/example.com.nginx.access.log main;
index index.php;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 1024M;
client_body_buffer_size 4M;
root /var/www;
#кому не надо убирать у домена www это не пишем. между http:// и example.com убрать пробел, парсер дурит :)
if ($host = 'www.example.com' ) {
rewrite ^(.*)$ http:// example.com$1 permanent;
}
location / {
try_files $uri $uri/ @bitrix;
}
location ~ \.php$ {
try_files $uri @bitrix;
fastcgi_pass unix:/var/run/php5-fpm/www.sock; #путь до сокета php-fpm
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location @bitrix {
fastcgi_pass unix:/var/run/php5-fpm/www.sock; #путь до сокета php-fpm
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
}
location ^~ /bitrix/admin/ {
try_files $uri @bitrixadm;
fastcgi_pass unix:/var/run/php5-fpm/www.sock; #путь до сокета php-fpm
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location @bitrixadm{
fastcgi_pass unix:/var/run/php5-fpm/www.sock; #путь до сокета php-fpm
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/bitrix/admin/404.php;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
access_log off;
expires max;
error_page 404 = /404.html;#не забываем создать страницу
}
location ~ (/\.ht|/bitrix/modules|/upload/support/not_image|/bitrix/php_interface) {
deny all;
}
#все помнят это :)
location ~ /.svn/ {
deny all;
}
location ~ /\.ht {
deny all;
}
}
Если просто зайти по несуществующему файлу в url к админке, то админка открывается (авторизация открывается от битрикса) открывается беспрепятственно, пароль не спрашивается от auth_basic указанный в nginx конфиге.
test.site.ru/bitrix/admin/dfdfjhjd.php auth_basic не срабатывает. Хочется что бы выходила страница 404.
внимательно смотрите код прежде чем писать что ниче не работает. Автор сам не очень понял что создал. Суть в том, что если в скидке четко выделяется id товара (ВНИМАНИЕ) по одному из условий - тогда да, код имеет место быть. Если же применение скидки идёт по, например, значению свойсвта - код НЕ будет работать
Привет всем , кто подскажет как создать новый тип свойства для РАЗДЕЛА инфоблока, чтобы в нем отображался список из свойств этого или другого ИБ Нужен код Заранее спасибо
Очередной клиент, со своими очередными премудростями захотел иметь в сделках ЦРМ сложный механизм скидок, аналогичный тому, что отлично работает (при правильной настройку, конечно же) в БУС, и именуется "правила работы с корзиной".
Ваять подобный механизм очень не хотелось. Ну оооочень. По сему начались размышления. Писать - долго, не очень интересно, и главное - есть такое, но в БУС. А в ЦРМ нету. А в БУС есть. Но в коробке есть механика БУС. Но механизм рассчитан на корзину интернет-магазина БУС. А скидки нужны в ЦРМ.
А что нужно клиенту? Клиенту нужно, чтобы на список товаров в сделке ЦРМ работали скидки корзины БУС. Уже было собирался пойти сложным путём (нажимаем сохранить сделку -> создаётся корзина -> пихаются в неё товары/применяются скидки -> берём изменённые цены и меняем в сделке -> показываем сделку с уже изменёнными ценами), но вдруг "а если... пойти на хитрость?".
В панели управления, в разделе "Магазин" настраиваем интеграцию с ЦРМ. В качестве целевой ЦРМ используем ЭТУ ЖЕ коробку.
Что нам даёт эта петля. При создании сделки, появляется "связать сделку с интенет-магазином". При использовании этого функционала, заказ создаётся в "БУС" с использованием ВСЕХ скидок на товар и правил работы с корзиной, и успешно цепляется ЦРМ, где появляется сделка с нужными ценами. Можно (с помощью небольшого напильника) при необходимости, вытянуть даже список применённых скидок.
Что нужно учитывать. Для корректной и комфортной работы этого функционала требуются покупатели. Покупателя можно создавать прямо в сделке, но он может не подцепиться к существующему контакту, если что-то не совпадает (к примеру, адрес почты друггой). Для избежания подобных неурядиц, а так же комфортного использования описанного выше функционала МОЖНО сделать так, чтобы при создании контакта в ЦРМ автоматом создавался покупатель. И дальше оперировать только выбором покупателя.
В Битриксе, начиная с версии 7.1.3, появилась возможность переопределить стандартный механизм отправки почты.
Когда может быть полезен такой финт ушами? К примеру, когда в конторе есть какой-то централизованный сервис отправки почты, который должны использовать все приложения (SMTP-сервер на другой машине, веб-служба, что угодно). Для примера, рассмотрим GMail в качестве такого сервиса.[spoiler]
Механика простая: везде, где должна вызываться функция mail(), вызывается bxmail(). А уже в этой функции, перед вызовом стандартной функции mail(), Битрикс проверяет, определена ли функция custom_mail() и, если да, вызывает её вместо mail(). Соответственно, чтобы переопределить механизм отправки, нужно всего лишь написать функцию custom_mail() (в /bitrix/php_interface/init.php, к примеру (если хотим, чтобы такой механизм отправки действовал для всех сайтов на данной копии)).
Приступим к делу! Лично мне для отправки почты через GMail ближе всего Zend_Mail, но... Ни эта библиотека, ни другие не позволяют установить "сырые" заголовки для письма. А разбирать $additional_headers мне что-то не очень хочется. Следовательно, выбор перепадает на PEAR::Net_SMTP, как на механизм прямой работы с SMTP-сервером.
Итак, ближе к коду!
require_once 'Net/SMTP.php';
/**
* Отпраляем почту через SMTP-сервер GMail (пользователь: user@gmail.com).
*
* @see CEvent::HandleEvent()
* @see bxmail()
*
* @param string $to Адрес получателя.
* @param string $subject Тема.
* @param string $message Текст сообщения.
* @param string $additionalHeaders Дополнительные заголовки передаются Битриксом почти всегда ("FROM" передаётся здесь).
*
* @return bool
*/
function custom_mail($to, $subject, $message, $additionalHeaders = '')
{
/*
* Настройки можно (нужно) вынести в админку, но это уже домашнее задание :)
*/
$smtpServerHost = 'ssl://smtp.gmail.com';
$smtpServerHostPort = 465;
$smtpServerUser = 'user@gmail.com';
$smtpServerUserPassword = 'password';
if (!($smtp = new Net_SMTP($smtpServerHost, $smtpServerHostPort))) {
return false;
}
if (PEAR::isError($e = $smtp->connect())) {
return false;
}
if (PEAR::isError($e = $smtp->auth($smtpServerUser, $smtpServerUserPassword))) {
return false;
}
preg_match('/From: (.+)\n/i', $additionalHeaders, $matches);
list(, $from) = $matches;
$smtp->mailFrom($from);
$smtp->rcptTo($to);
/*
* Получаем идентификатор конца строки у Битрикса.
*/
$eol = CAllEvent::GetMailEOL();
$additionalHeaders .= $eol . 'Subject: ' . $subject;
if (PEAR::isError($e = $smtp->data($additionalHeaders . "\r\n\r\n" . $message))) {
return false;
}
$smtp->disconnect();
return true;
}
Вынесение настроек в админку, создание статического объекта соединения (чтобы не тратить время при отправке множества писем за раз) — это всё задания на дом
Можно ли это использовать, чтобы отправлять почту не через один ящик как сейчас, а напрямую? Наверное, надо как-то определить ящик отправитель и подставить соответствующие ему параметры авторизации $smtpServerUser = 'user@gmail.com'; $smtpServerUserPassword = 'password'; Правильно?
Встретился сегодня с одной проблемкой и спешу поделиться решением...
Итак, ставил на один из сайтов обновления (месячный пакет накопился ...) и при обновлении какой-то сбой произошел ... Результат сбоя - не работают js-скрипты в админке... даже авторизоваться через админку не получается.
Заменил содержимое папки /bitrix/js/main/ на аналогичное же содержимое с другого сайта (где обновления встали отлично). и тут меня ждал сюрприз: включенный cdn, и, как следствие, скрипты тянутся не из указанной папки, а из облака. Все! файлы обновил, а админкой пользоваться все равно не могу, ну и CDN отключить, чтобы файлы из ядра все-таки заработали тоже не могу...
Перерыл кучу информации как же отключить cdn имея только ftp-доступ и вот до чего дошел: Открываю файл: /bitrix/modules/bitrixcloud/classes/general/cdn_config.php и в нем нахожу строки (131-134):
public function isActive()
{
return ($this->active > 0);
}
В return вместо проверки активности ставлю false - и это дает мне возможность загрузиться в админке, ну а дальше - дело техники. Отключаем cdn-ускорение и ищем дальше ошибки ...
P.S. после отключения cdn не забываем вернуть код модуля в исходное состояние!
Сколько времени пишу под Битрикс, никогда не знал о существовании константы SITE_TEMPLATE_PATH (не описанной, как всегда, в документации, но любезно подсказанной моим коллегой).
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».