Архив метки: Битрикс

Исправляем часовой пояс в битрикс

Иногда возникает ситуация когда в битриксе в главном модуле не верно отображает время = для решения проблемы

1 Заходим в папку Birtix ищем файл dbconn.php (находится в bitrix/php_interface.php).
2 Добавляем код date_default_timezone_set(«ЧАСОВОЙ ПОЯС»); где часовой пояс = ваш часовой пояс например «Europe/Moscow»
3 Перезапускаем веб-окружение.

Почему битрикс гавно

Евгений (Eugene) Михайленко (Mikhaylenko) Ph.D."1с-Битрикс: Стандарт + 15 часов работ" хм... у меня иное мнение, за это безобразие, которое сотворил 1С, а именно Битрикс, нужно не 15 часов работ, а лет пять так давать, работ, исправительных, в лагерях.

Читать далее Почему битрикс гавно

Битрикс полное наименование вместо наименования по всему сайту

Если необходимо по всему сайту записать полное наименование в наименование

SetTitle("Новая страница");
?>
$IBLOCK_ID,
            // " $data,
        ),
        false,
        false,
        array('ID', 'NAME', 'PREVIEW_TEXT')

    );

    while($ar_fields = $result ->GetNext()):
    $ar_fields = $result ->GetNext();

        //CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);

        ///$arFields = $ob->GetFields();
        //CIBlockElement::Delete($ar_fields['ID']);
        $el = new CIBlockElement;

        $PROP = array();

        $arLoadProductArray = Array(
            "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
        //    "IBLOCK_SECTION" => false,          // элемент лежит в корне раздела
        //    "PROPERTY_VALUES"=> $PROP,
            "NAME"           => $ar_fields['PREVIEW_TEXT'],
        //    "ACTIVE"         => "Y",            // активен
        //    "PREVIEW_TEXT"   => "текст для списка элементов",
        //    "DETAIL_TEXT"    => "текст для детального просмотра",
        //    "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
        );

        $PRODUCT_ID = $ar_fields['ID'];  // изменяем элемент с кодом (ID) 2
        $res = $el->Update($PRODUCT_ID, $arLoadProductArray);

        echo '
',htmlspecialchars(print_r($ar_fields,1)),'

';

endwhile;

endif;
?>

Битрикс полное наименование вместо наименования при обмене с 1с

Если необходимо автоматически писать в наименование полное наименование при обмене с 1с

AddEventHandler("iblock", "OnStartIBlockElementUpdate", Array("AHandlers", "ChangeElementName1CImport"));
AddEventHandler("iblock", "OnStartIBlockElementAdd", Array("AHandlers", "ChangeElementName1CImport"));

class AHandlers {
   function ChangeElementName1CImport(&$arFields) {
      if($arFields['IBLOCK_ID']==9 && strstr($_SERVER['REQUEST_URI'],'1c_exchange.php')) {
         $previewText = strip_tags(trim($arFields['PREVIEW_TEXT']));
         $name = $arFields['NAME'];
         $arFields['NAME'] = $previewText;
         $arFields['PREVIEW_TEXT'] = $name;
        //AddMessage2Log($arFields['NAME'], "my_module_id");
      }
   }

Битрикс записать полное наименование в наиенование

Если необходимо заменить поле NAME элемента на PREVIEW_TEXT при добавлении или изменении = или например при выгрузке товаров из 1с

AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "DropPreviewText");
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "DropPreviewText");

function DropPreviewText($arFields){
   if (@$_REQUEST['mode']=='import'){

      if (!is_array($arFields['NAME'])){
         $arFields['NAME'] = $arFields['PREVIEW_TEXT'];
      }
         unset($arFields['PREVIEW_TEXT']);
         unset($arFields['PREVIEW_TEXT_TYPE']);

         unset($arFields['DETAIL_TEXT']);
         unset($arFields['DETAIL_TEXT_TYPE']);
   }
}

Битрикс глобальное изменение кодировок таблиц в базе данных

Зайдите в Рабочий стол / Настройки / Инструменты / Командная PHP-строка

и выполните

$needCollation = 'utf8_general_ci'; // укажите здесь нужную кодировку

$res = $DB->Query('SHOW TABLE STATUS');
while($ts = $res->fetch()) {
    if ($ts['Collation'] != $needCollation) $DB->Query('ALTER TABLE `' . $ts['Name'] . '` DEFAULT CHARACTER SET utf8 COLLATE ' . $needCollation);

    $r2 = $DB->Query('SHOW FULL COLUMNS FROM ' . $ts['Name'] . ' WHERE Collation IS NOT NULL');
    while($col = $r2->fetch()) {
   if ($col['Collation'] != $needCollation) $DB->Query('ALTER TABLE `' . $ts['Name'] . '` CHANGE `' . $col['Field'] . '` `' . $col['Field'] . '` ' . $col['Type'] . ' CHARACTER SET utf8 COLLATE ' . $needCollation . ($col['Null'] == 'NO' ? ' NOT' : '') . ' NULL');
    }
}

PHP Вычесть из даты год, месяц, или день

php-date-time

Вычитаем из конкретной даты день

$date = new DateTime('2000-01-01');
$date->modify('-1 day');
echo $date->format('d.m.Y H:i:s');

Вычитаем месяц

$date = new DateTime();
$date->modify('-1 month');
echo $date->format('Y-m-d H:i:s');

Вычитаем год

$date = new DateTime();
$date->modify('-1 year');
echo $date->format('Y-m-d H:i:s');

Bitrix VM сменить пароль mysql root

Как сменить пароль root на mysql на виртуальной машине Битрикс или на веб окружении Битрикс?

Решение
> mysql
> UPDATE mysql.user SET Password=PASSWORD(‘Новый пароль’) WHERE User=’root’;
> service mysqld restart