Tag: Bitrix

Вывод в bitrix:catalog товаров из нескольких инфоблоков

Имеется тип инфоблока 1c_catalog, а в нем несколько инфоблоков с товарами выгружаемых из разных 1С. Нам нужно вывести все эти товары из всех инфобоков в комплексном компоненте bitrix:catalog. Как не печально, но я не нашел решения этой задачи без кастомизации. Ну и вот, что у меня получилось читайте далее…

Read More

Bitrix: вывод не активного элемента в публичной части

Так завелось, что при неактивном элементе, когда снята галочка «Активность» у элемента, то возникает сложность вывести его в публичной части сайта. Для этого забираем компонент в папку с вашими компонентами. Например: копируем /bitrix/components/bitrix/news.detail/ в /bitrix/components/ak/news.detail/
Далее в файле component.php ищем строки

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

и необходимо за комментировать или убрать строку «ACTIVE» => «Y»,

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

Вот и все. Теперь на вашем сайте можно вывести не активный элемент.

1С-Битрикс: страница 404.php (велосипед)

<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
$sapi_type = php_sapi_name();
if ($sapi_type=="cgi") 
   header("Status: 404");
else 
   header("HTTP/1.1 404 Not Found");
@define("ERROR_404","Y");
//Тут уже подключение верней части шаблона и присваивание заголовка
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Данная страница не существует!");
//Код страницы
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
?>
<style>
	h1 { text-align:center;font-size:16px; }
</style>
<p style="text-align:center;font-size:15px;">Вы можете <a href="/">перейти на главную страницу сайта</a></p>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Быстрое восстановление пароля root на сервер

Как быстро восстановить пароль на root пользователя для mysql.
Для этого выполните пошаговую инструкцию приведенную ниже.

1) Сначала остановите mysql.
 service mysqld stop
 2) И запустите mysql командой:
 /usr/bin/mysqld_safe --skip-grant-tables --user=root &
 3) После чего запустите клиент mysql
 mysql -u root
 4) Сделайте запрос sql
 UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
 где newpwd - новый пароль.
 5) Примените изменения
 FLUSH PRIVILEGES;
 6) Выходим из клиента mysql с помощью команды exit
 7) Прописываем команду
 killall mysqld
 Перезагрузите mysql сервер командой:
 service mysqld restart

Количество выбранных элементов в битриксе c SelectedRowsCount

Как оказывается не многие программисты, с чьим кодом мне приходится работать, не знают что не нужно обходить все полученные элементы в цикле, что бы посчитать их. Для этого битрикс уже сделал необходимый инструмент:

$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
$res->SelectedRowsCount()

Товарищи!!! Не ленитесь читать документацию. В ней даже поиск есть. Удачи Вам.

Быстро отправить электронное письмо через почтовые шаблоны в битриксе

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

Заходим в админку -> Настройки -> Типы почтовых событий. И там создаем новый, назовем его например «Отправка электронной газеты» и тип задаем такой SUBSCRIBE_GAZETA.

Далее заходим в админку -> Настройки -> Почтовые шаблоны. И в этом разделе создаем новый шаблон с указание «Тип почтового события» нашего нового события «Отправка электронной газеты[SUBSCRIBE_GAZETA]», а в сообщение ставим например такое #TEXT#. И в итоге у нас код будут выглядеть вот так:

$arFields = Array(
    "TEXT"    =>    "Это сообщение которое откправим в письме",
);
CEvent::SendImmediate('SUBSCRIBE_GAZETA', SITE_ID, $arFields,'N');

В $arFields можно указывать любое количество ключей массива и все они будут доступны в почтовом шаблоне, во всех его полях.

Fatal error: Call to undefined function curl_init() in Bitrix

В битриксе на виртуальной машине после первой установки сайт получил ошибку

Fatal error: Call to undefined function curl_init() in

Лечим:

1. Возможно пакета у Вас нет, ставим его — yum install php-curl

2. Если пакет есть то смотрим — ls /etc/php.d/
скорее всего там будет лежать файл curl.ini.disabled
если это так, то

mv /etc/php.d/curl.ini.disabled /etc/php.d/curl.ini

и

/etc/init.d/httpd restart

Ошибка при выгрузке в 1С из Битриксе MySQL Query Error: select ID, ATTRIBUTES from b_xml_tree where

Получил вот такую ошибку на одном из поектов при выгрузки из 1С в Битрикс.

MySQL Query Error: select ID, ATTRIBUTES from b_xml_tree where (ID = 1) and (NAME = 'КоммерческаяИнформация') [Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=']

Unknown

Сразу напрашивается вопрос=)  С чем это связано?

С тем, что таблицы в БД в разной кодировке. Приведите к одной кодировке и все заработает. Вот такой SQL коммандой это делается:

alter database имя_бд default character set utf8;