Битрикс
8 Августа 2015

Битрикс: перемещение всего javascript в конец страницы

В Битрикс с версии 15.5 появилась возможность средствами системы переносить весь javascript код на странице в подвал перед закрывающим тегом </body>. Перенос всех js вниз шаблона - хорошее решение с точки зрения оптимизации скорости работы сайта. Google, к примеру, давно рекомендует веб-мастерам придерживаться подобной практики.

Активировать эту опцию можно в настройках главного модуля (Настройки -> Настройки продукта -> Настройки модулей) отметив чекбокс "Переместить весь Javascript в конец страницы".

Если есть js, который целесообразно оставить ближе к началу страницы, к примеру, скрипты счетчиков и систем аналитики, необходимо добавить атрибут data-skip-moving="true", в том случает скрипт останется на свое месте в шаблоне.

Читать дальше
18 Июля 2015

Резервное копирование в Битрикс & Перенос сайта Битрикс на другой хостинг

В Битрикс есть хороший встроенный инструмент для создания резервных копий сайта. Он позволяет без особых сложностей создать резервную копию сайта вместе со всеми файлами и базой данных и перенести сайт на другой сервер. А потом с помощью скрипта восстановления развернуть все это дело. В админке резервное копирование расположено в Настройки -> Инструменты -> Резервное копирование -> Создание резервной копии.

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

У некоторых возникает вопрос: "как перенести сайт на битриксе самостоятельно без использования встроенного инструмента резервного копирования?". По принципу работы сайт на Битрикс ничем не отличается от большинства систем управления. Есть файловая структура, есть база данных MySQL. Поэтому осуществить перенос сайта можно самостоятельно заархивировав все файлы и каталоги сайта и отдельно базу данных, осущесвив экспорт-импорт из базы MySQL со старого сервера на новый. Если у вас есть панель управления PHPMyAdmin, сделать это будет проще простого.

Читать дальше
19 Июня 2015

Битрикс: ошибка - db query error. please try later

Эта ошибка встречается не часто, но всё-таки. У меня за всю историю работы с Битриксом она встречалась всего пару раз. Выглядит ошибка следующим образом, в браузере вместо содержимого сайта выводится: db query error. please try later. Что означает ошибку в запросе к базе данных.

Причины могут разные. Одна из них - указаны не правильные данные для подключения к базе данных. Проверить и исправить их можно в файле по адресу /bitrix/php_interface/dbconn.php, если это не помогло, тогда можно нужно искать другую причину.

В том же самом файле dbconn.php нужно включить вывод сообщений об ошибках. В самом низу файла дописываем $DBDebug = true;

Смотрим текст ошибки. У меня были случаи, возникшие в результате повреждения таблиц, в тексте ошибки были указания на какую-то там таблицу, связанную с хранением данных модуля веб-аналитики. Лечится восстановлением этих таблиц через phpMyAdmin. Необходимо войти в панель выделить нужные таблицы и выбрать опцию "Восстановить таблицу".

Читать дальше
17 Июня 2015

Вывод ключевых слов под статьями в Битрикс а-ля теги

При создании элемента в инфоблоке во вкладке SEO можно наблюдать дополнительное поле для ввода тегов. Что делать с ними не совсем понятно, если эти теги задать, то при просмотре элемента детально они не выведутся. А нужны они лишь для того, чтобы можно было набить этими самыми фразами компонент облако тэгов bitrix:search.tags.cloud. На мой взгляд, эти облака тегов ни кому не нужны, ну или почти никому. Пользы от этого компонента в большинстве случаев чуть менее, чем нет.

Но как же тогда вывести теги под статьёй и сделать возможность поиска похожих элементов по ним? Опишу небольшой и нетрудозатратный способ. На мой взгляд, вместо заполнения этих тегов лучше использовать заполненное поле с мета тегами meta keywords, их приходится заполнять всегда, т.к. они необходимы для seo, а дублировать фразы в поле теги лишний раз не хочется.

Читать дальше
17 Июня 2015

Фильтация элементов по значению свойства при выводе из инфоблока

Что говорить, делать фильтры по разным свойствам элементов приходится довольно часто, даже на несложных проектах. Опишу простой пример создания фильтра по свойству типа список. Допустим, у нас есть инфоблок с элементами, на сайт через компонент нужно вывести только те, которые помечены как избранные.

Для этого в настройках инфоблока создаём специальное свойство типа список, даём имя FAVORITES, делаем свойство флажком и задаём ему значение YES.

Далее в шаблоне перед вызовом компонента, который выводит эти элементы из инфоблока создаём массив с фильтром.

Читать дальше
29 Апреля 2015

Битрикс: модификация пунктов контекстного меню в админке

Опишу пару примеров для скрытия некоторых пунктов контекстного меню и меню с доступными действиями в админке Битрикс. Мне это требовалось, чтобы ограничить выбор доступных действий для некоторых групп пользователей.

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

Читать дальше
20 Апреля 2015

Скрытие системного сообщения об окончании лицензии в Битрикс

В случае, если Битрикс ставится чисто для теста и лицензия не покупается, а используется лицензия с ограниченным сроком действия DEMO, или уже истек срок техподдержки, в админке выводится назойливое сообщение об том, что заканчивается тестовый период или нужно продлить срок активной техподдержки. Сообщение весьма раздражительно. 

Скрыть его можно как минимум двумя способами.

Читать дальше
9 Апреля 2015

Битрикс: запрет на редактирование элементов инфоблока, созданных другими пользователями

В Битрикс достаточно удобный и гибкий в настройках механизм разграничения прав доступа для работы с различными модулями, компонентами и документами сайта. 

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

Чтобы реализовать эту задачу, нам понадобится написать свой обработчик события.

В этом нам поможет OnBeforeIBlockElementUpdate - событие возникает до изменения элемента инфоблока, и может быть использовано для отмены изменения или для переопределения некоторых полей.

В файле init.php, расположенного на сайте в /bitrix/php_interface/, пишем следующий код с проверкой на условие - если логин пользователя не равен создателю инфоблока и, если это не админ, то выводим сообщение и отменяем действие.

Читать дальше
4 Апреля 2015

Битрикс: расширенные параметры редактирования меню

Довольно часто возникает необходимость добавить различные параметры или атрибуты к ссылкам в меню. Или задать определенные условия для показа пунктов меню на сайте. Рассмотрим как это можно сделать через расширенный режим редактирования меню на сайте под управлением Битрикс.

Рассмотрим как добавить дополнительные параметры к ссылкам. К примеру, id или data атрибуты.

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

Читать дальше
14 Марта 2015

mbstring.func_overload = 2 и mbstring.internal_encoding = UTF-8

Весьма распространенная проблема, с которой сталкиваются многие разработчики сайтов на Битрикс - это невозможность установить продукт или развернуть сайт из бэкапа на этапе восстановления базы данных из-за требований битрикса к параметрам этих php функций php mbstring.func_overload и mbstring.internal_encoding.

Читать дальше

Использую в своей работе