Исправляем ошибку MySQL «Row size too large» в 1с-Битрикс

Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs» (или «Got error 139 from storage engine»). Ниже рассмотрены причины и условия ее возникновения, а также различные методы устранения, с вмешательством в настройки сервера или без него. Читать дальше…

Автокэширование в 1с-Битрикс — сложно о простом

Автокэширование в 1с-Битрикс — хорошо развитая и довольно сложная система, позволяющая в разы уменьшить число обращений к базе данных и ускорить выполнение страниц. Понимать принципы и грамотно ее использовать должен любой успешный «битрикс-разработчик» для создания быстрых и качественных проектов. Сегодня поговорим о связи кэша и шаблона компонента. Читать дальше…

Своя иконка для инфоблока в админке

Код, который позволяет в админке для заданного инфоблока установить свою иконку (автор Максим Смирнов, идея).

Для этого нужно:
1. в css создать правило #my_menu_icon { background:url(путь до иконки); }
2. в /bitrix/php_interface/init.php дописать

AddEventHandler("main", "OnBuildGlobalMenu", array("MyClass", "OnBuildGlobalMenu"));
class MyClass
{
   function OnBuildGlobalMenu(&$aGlobalMenu, &$aModuleMenu)
   {
      $type = "articles"; // тип инфоблока
      $iblock_id = 19; // ID нужного инфоблока

      foreach($aModuleMenu as $i1 => $aMenu1)
      {
         if($aMenu1["items_id"] == "menu_iblock_/$type")
         {
            foreach($aMenu1["items"] as $i4 => $aMenu4)
            {
               if($aMenu4["items_id"] == "menu_iblock_/$type/$iblock_id")
               {
                  $aModuleMenu[$i1]["items"][$i4]["icon"] = "my_menu_icon";
                  //<a id="my_menu_icon"></a> + css = result
               }
            }
         }
      }
   }
}

Как получить ключ для переводчика Bing

C тех пор как корпорация добра стала злой и закрыла бесплатный доступ к своему переводчику, 1с-Битрикс использует для автоматической генерации имен файлов/папок/названий элементов и подобных вещей сервис от Bing. Чтобы включить этот функционал, необходимо сначала зарегистрироваться и получить «ключ приложения Bing». Внутри подробная иллюстрированная инструкция как сделать это быстро и безболезненно. Читать дальше…

Как сделать AJAX формы 1с-Битрикс в всплывающих окнах

Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода:
— можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавление элемента инфоблока или веб-форма.
— всплывающее окно создается «на лету» при помощи javascript и изменяет свой размер в зависимости от количества контента внутри.
— весь процесс работы формы, вывода ошибок и результата происходит при помощи AJAX без перезагрузки окна.
Читать дальше…

Как сделать ссылку для печати в Битрикс

Ссылки для печати обычно имеют вид Домен/Адрес_страницы/?print=Y Чтобы всегда иметь в ссылке актульный адрес страницы, его необходимо выводить с помощью встроенной функции GetCurPageParam(), которая позволяет удалять и добавлять параметры к текущему адресу. Соответственно html-код будет иметь вид:

<a href="<?=$APPLICATION->GetCurPageParam("print=Y", array("print"))?>" title="Версия для печати">Версия для печати</a>

Рекомендации интегратору 1с-Битрикс

Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности как шаблон очень и очень сложно. Исходя из этого я решил выделить несколько правил создания шаблонов для 1с-Битрикс, которые призваны облегчить жизнь при поддержке сайта. Однако я не претендую на абсолютную истину и все нижеописанные рекомендации складываются исключительно из личного опыта. Читать дальше…

Ссылки на соседние элементы инфоблока

Сегодня мы займемся реализацией очень полезного функционала, который точно есть в WordPress, скорее всего присутствует в других движках, но почему-то не сделан по умолчанию в 1с-Битрикс. А именно, в шаблоне вывода детальной новости (товара в каталоге или вообще любого элемента инфоблока) отобразим ссылки на предыдущий и последующий элементы. Это даст возможность пользователю не возвращаться в список и просматривать материалы сайта «по цепочке». Читать дальше…

Как изменить заголовок X-Powered-CMS, отсылаемый сервером

CMS 1c-Bitrix отличается большой любовью везде упоминать свое название. Одним из таких мест является ответ сервера, куда автоматически подставляется строка X-Powered-CMS:Bitrix Site Manager (DEMO или хеш ключа). Если вдруг понадобится отключить, то сделать это можно 2 способами — удалить соответствующую строку в /bitrix/modules/main/include.php или добавить следующий код в /bitrix/php_interface/init.php

AddEventHandler("main", "OnBeforeProlog", "ChangeHeaders");
function ChangeHeaders() {
    header("X-Powered-CMS: any_string", true);
}