была у меня в закладках хорошая статейка, а щас вот открыл - а ее нет:( хорошо, хоть у гугла есть сохраненная копия страницы. автор, простите за репост без подписи ...
В веб-окружении Битрикса по-умолчанию стоит msmtp для отправки писем. Если ваш домен привязан к Яндекс.Почте для домена, и вы хотите отправлять почту через реально существующий почтовый ящик с авторизацией, вам придётся внести в файл конфигурации некоторые изменения, чтобы всё работало хорошо.
Файл /home/bitrix/.msmtprc:
account default
logfile /var/log/msmtp.log
host smtp.yandex.ru #(smtp.gmail.com - для гугла) #
port 587 # именно этот порт! #lkz гугля рекомендуют ставить 465, хотя в просторах сети читал, что и 587 подходит ...#
from robot@domain.ru
keepbcc on
auth on
user robot@domain.ru
password <password>
tls on
tls_starttls on # обязательно для Яндекс.ПДД
tls_certcheck off
И не задавайте слишком длинных паролей.
P.S: при работе с GMail вторую строку (tls_starttls) наоборот включать не нужно.
UPDATE 2014-09-08
полный файлик с настройками для gmail:
account default
logfile /var/log/msmtp.log
host smtp.gmail.com
port 587
from user@gmail.com
auth on
user user@gmail.com
password password
tls on
tls_starttls on
tls_certcheck off
keepbcc on
для корректности настройки можно выполнить из сервера команду:
php -r "mail('test@email.com', 'Test', 'Test');"
UPDATE 2014-12-02
Для проверки из сайта, в командную строку можно ввести код:
if (mail("moe_mylo@gmail.com","test subject", "test body","From: otpravitel@bitrix.ru"))
echo "Сообщение передано функции mail, проверьте почту в ящике.";
else
echo "Функция mail не работает, свяжитесь с администрацией хостинга.";
Только email-адресы ставьте ваши
P.P.P.S Перенес инструкцию (вместе с дополнениями) себе на сайт
Настроил через сервер smtp.yandex.ru, почта уходит но почему то если приходит на gmail то попадает в спам, а отправителем стоит EMPTY-FROM конфиг такой
# smtp account configuration for default
account default
logfile /home/bitrix/msmtp_default.log
host smtp.yandex.ru
port 587
from simple@yandex.ru
keepbcc on
auth on
user simple@yandex.ru
password XXXXXXXXX
tls on
tls_starttls on
tls_certcheck off
Если у вас на сайте есть панелька, которая должна фиксироваться в верху сайта, то скорее всего в режиме редактирования она закрывает (или закрывается) панелькой админки битрикса.
Вот маленький js скрипт способный решить указанную проблему (используем только BitrixJS )
shef-panel - ID Вашей панельки
Переменные
minTop = '40px' - высота панельки Битрикса, когда она свернута
maxTop = '147px'; - высота панельки Битрикса, когда она развернута
Эти значения будут добавлены в style.top вашей панельки
Добрый день! Я только начал разрабатывать на битрикс и уперся в ShowPanel, закрывающую часть страницы Ваши решения не срабатывают, помогите разобраться, не хочется решать проблему margin и тп
Когда-то давно читал у Антона Долганина Компонент в теле новости, а недавно мне нужно было реализовать подобную задачу но с поддержкой AJAX. Если делать так как написал Антон, то опрос (с аяксом) подключается выше тела новости, а он вполне может быть и в самой новости и после нее.
В моем случае разница только в файле component_epilog.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
global $idVote;
echo preg_replace_callback(
"/#VOTE_ID_([\d]+)#/is".BX_UTF_PCRE_MODIFIER,
create_function('$matches', 'ob_start();
echo("<div id=vote_news_$matches[1]></div>");
global $idVote;
$idVote=$matches[1];
$retrunStr = @ob_get_contents();
ob_get_clean();
return $retrunStr;'),
$arResult["CACHED_TPL"]);
?>
<? if($idVote):?>
<? //делаем блок невидимым на всякий случай, если опрос внутри новости, иначе прыгнет снизу в необходимое место?>
<div id="city_vote" style="display:none;">
<?$APPLICATION->IncludeComponent(
"bitrix:voting.current",
"voting_current_ajax",
Array(
"CHANNEL_SID" => "INTERVIEW",
"VOTE_ID" => $idVote,
"VOTE_ALL_RESULTS" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "3600",
"CACHE_NOTES" => "",
"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_ADDITIONAL" => ""
),$component
);?>
</div>
<script type="text/javascript">
$(document).ready(function(){
//сначала клонируем опрос вместе с событиями, потом вставляем в нужное место, иначе не переносятся его события
$("#city_vote div:first").clone(true).appendTo("#vote_news_<?=$idVote?>");
//потом очищаем контейнер
$("#city_vote").empty();
});
</script>
<?endif?>
Встретился сегодня с одной проблемкой и спешу поделиться решением...
Итак, ставил на один из сайтов обновления (месячный пакет накопился ...) и при обновлении какой-то сбой произошел ... Результат сбоя - не работают 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 не забываем вернуть код модуля в исходное состояние!
Доброго времени суток! На форуме поднимался как-то уже вопрос о том, как, подтягивая компоненты битрикса по аяксу вытягивать также и скритп, который подключается к компоненту и файл стилей компонента. Тогда решения данного вопроса нормально не было найдено.
И вот теперь есть решение: Более подробно изучил работу с BX.ajax
Сильно расписывать нет времени, посему, сразу готовые наработки.
Итак, есть какой-то компонент. У данного компонента есть файл result_modifier.php
Т.о. в файл /ajax.php размещаем подключение компонента. Указанным запросом получаем данный компонент и помещаем его в контейнер с id="result_container". Все!
В результате файлы script.js и style.css, подключаемые вместе с компонентом, будут также подключаться и при запросе компонента по технологии ajax.
Пример подключения скриптов для ajaxа - хорошая штука. Но столкнулся ещё с проблемой инициализации битриксовых скриптов после ajax-загрузки: в компоненте catalog.section не срабатывают стандартные действия (добавить в корзину, добавить в сравнение). При этом сами скрипты подгрузились.
Создать комплект в битриксе методом CCatalogProductSet::add , передаешь массив полей в метод add и комплект формируется (пример позаимствован с просторов сети)
// Массив для создания комплекта
$arFields = array(
"TYPE" => 1, //тип 1 - комплект, 2 - набор
// "SET_ID" => 0, //указывает на то что набор добавляется к этому товару
"ITEM_ID" => 1234, // ID товара
"ITEMS" => array(
[0] => array(
"ACTIVE" => "Y", // активность записи
"ITEM_ID" => 34, // ID товара который добавляется в комплект
"QUANTITY" => 1 // количество товара
),
[1] => array(
"ACTIVE" => "Y",
"ITEM_ID" => 56,
"QUANTITY" => 1
),
)
);
Но когда сталкиваешься с методом CCatalogProductSet::update все оказывается сложнее, особенно учитывая что нет документации.
Метод принимает два параметра CCatalogProductSet::update($intID, $arFields) и вроде бы все просто, в первом передаем айди комплекта, а во втором массив полей. Но суть в том что айди комплекта это не айди элемента в инфоблоке (тот, что мы передаем в параметре "ITEM_ID"), а свой отдельный айди.
Получить его можно с помощью метода CCatalogProductSet::getAllSetsByProduct
$arSetsByProduct = CCatalogProductSet::getAllSetsByProduct($origId, CCatalogProductSet::TYPE_SET);
$arSetsByProduct = array_shift($arSetsByProduct); // комплект данного товара, тк getAllSetsByProduct возвращает массив
и уже потом вы можете обновить комплект товаров с помощью CCatalogProductSet::update (и выполнить recalculateSetsByProduct , как советуют в другой статье https://dev.1c-bitrix.ru/community/web...log/19963/)
Паничев Алексей написал: Спасибо! Помогло в 2018 году настроить автоисправление остатков после ошибочной установки QUANTITY комплектам в результате синхронизации с 1С.
Достаточно пересохранить любой товар, входящий в комплект.
Нигде не встречал, чтобы клиенты создавали свои Activity (Действия) для бизнес-процессов. Думаю, что это связано с отсутствием соответствующей документации.
В данной статье постараюсь пошагово описать процесс создания своего Activity на примере действия, которое будет писать в лог БП или текстовый файл, произвольные значения из шаблона бизнес-процесса.
Возникла тут интересная задача реализации многосайтововости на доменах. Есть сайт на домене .ru, контент сайта фильтруется по регионам, т.е. имеются сайты вида: moscow.sitename.ru, piter.sitename.ru, kiev.sitename.ru, kharkov.sitename.ru .... и так все регионы (как вы понимаете, список регионов постоянно расширяется...). Возникла необходимость в вынесении украинских регионов на украинский домен sitename.com.ua.
ru-сайт был поднят на BitrixVM, как сайт по умолчанию (до меня), ДНС-ы самого домена и всех его алиасов были настроены на IP сервера. Все алиасы обрабатываются на стороне сайта так что для сервера никаких проблем с обработкой поддоменов и разбросом их по различным папкам тут нет. Точнее не было, пока не было необходимости выделения украинской части сайта в отдельный сайт.
Как-то скомкано получается изложить всю проблему, но, надеюсь, кому нужно - поймут.
И вот начал я насипрйку многосайтовости. В админке битрикса вторую лицензию занял новым укр. сайтом. В админке виртуальной машины завел дополнительный сайт для .com.ua. Настроил днс-ы украинского домена и его алиасов аналогично значениям ру-домена. Открываю сайт sitename.com.ua - попадаю в верную папку. Радуюсь. А вот дальше начинается счастье... Т.к. в настройках серверов я чуть сильнее чайника, то посмотрев на файлы конфигурации nginx, впал в ступор - понимаю, где править нужно, но не понимаю, что. Пришлось обращаться к знакомому сервернику. За что ему как всегда, огромное спасибо! Кому нужен специалист такого профиля - пишите вличку, познакомлю:)
Итак, решение задачи заключалось в правке всего 4-х файлов:
server {
...
server_name _;
...
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
}
подменяем параметр "server_name", прописывая сюда ру-домен с алиасами:
server {
...
server_name *.sitename.ru sitename.ru;
...
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
}
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».