Блог

SEO шаблоны в Битриксе (памятка)

В шаблоне можно использовать обычный текст.
Использовать специальные конструкции в фигурных скобках, внутри нужно сначала писать знак равно, пример {=this.Name}. Есть зарезервированные слова:
this — текущий элемент. Пример: {=this.Code} — символьный код элемента.
parent — родительская секция. Пример: {=parent.PreviewText} — анонсовый текст родительского раздела

Читать подробнее...

Загрузка файла ajax-ом

Чтобы загрузить файл ajax-ом :
1) html стандарный, но обязательно указать enctype="multipart/form-data" в форме

Читать подробнее...

Задачка с яндекс.картой

Прежде всего немного воды. В функционал Битрикса широко внедрены карты (яндекс и гугл). Они довольно просто настраиваются есть функционал, который доступен простому (неподготовленному, не программисту) пользователю позволяющий решить задачи в рамках несложных потребностей. Но вот поступает задача более широкого плана, в частности: вывести элементы относящиеся к разным категориям, т.е. как-то должны сортироваться, кроме этого элементы (точки на карте) должны фильтроваться по разным параметрам, причем этих параметров довольно много и на финише

Читать подробнее...

Битрикс - обмен с 1С и https - не идет обмен данными

 RewriteCond %{SERVER_PORT} 80
    RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
    RewriteCond %{REQUEST_URI} !^/robots.txt$ [NC]
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

    RewriteCond %{SERVER_PORT} 443
    RewriteRule ^(/bitrix/admin/1c_exchange\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]
    RewriteRule ^(/robots.txt)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

Кодировка кирилицы в вызовах ajax

Если сайт работает в win-1251 и мы делаем отправку данных ajax-ом, то кириллица кодируется при помощи escape-последовательностей. Чтобы не получать кракозяблы нужно перекодировать данные уже на ajax-странице:

$f = iconv('UTF-8', 'windows-1251', $_GET['text']); 

Отложенный вывод данных из компонента

 вывод в любом месте перед реальным появлением данных 

$APPLICATION->ShowViewContent('mycontent');

 
в шаблоне любого компонента 

<?$this->SetViewTarget("mycontent");//дальше контент который буферизируется?> 
<div class="test">test</div> 
<?$this->EndViewTarget();//конец буферизации?>

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

Добавим кнопку на страницу просмотра/редактирования заказа в админке Битрикса

Читать подробнее...

Фото:

Были на Битрикс24.Идея в Москве

Делимся впечатлениями. Заряжает однозначно. Гандапас – супер, лапочка, интересно, провокационно, с опаской воспринимаю бизнес-коучеров (тренеров и пр.) основная их цель манипуляция, что с успехом получается, все говорят примерно об одном и том же. В любом случае, если не целиком, то местами уж точно было интересно, для примера: мы

Читать подробнее...

shell-клиент - полезные команды

Обратный и прямой DNS-запрос IP-адреса (для проверки поисковых ботов на подлинность)

Читать подробнее...

iblock.element.add.form - вызов в ajax

iblock.element.add.form не отвечает в ajax-вызове в случае успешного заполнения формы. Связано это с тем, что компонент в этом случае делает редирект - фактически мы получаем другую страницу, а не ту, что вызывали в ajax-е
В архиве слегка поправленный компонент в своем пространстве имен.
Файлы:
maxyss.tar.gz (17.65 КБ)

Многоязычность, недокументированные возможности

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

Читать подробнее...

Несколько единиц измерения для одного элемента (товара)

Пользователю предоставлена возможность менять «на ходу» единицы измерения. Как вариант – керамическая (кафельная) плитка, может быть измерена квадратными метрами, штуками и коробками. В карточке товара админка битрикса дает возможность установить в качестве единицы измерения только одну из величин, остальные величины дописали как свойства элемента инфоблока. Привязку сделали по части символьного кода, название свойства служит заголовком для альтернативной единицы измерения, в значении свойства храниться коэффициент. Код JS битрикса не модифицировался, на кнопки «добавить», «уменьшить» дописали свои JS, которые пересчитывают, значения для

Читать подробнее...

Фото:

Прилипающий (плавающий) блок на JQuery

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

Читать подробнее...

Получение корневого раздела в дереве каталога для элемента

Записываю, что бы не искать третий раз оригинал здесь: http://alexvaleev.ru/margin-sections-bitrix/
задача возникает редко, поэтому решение не откладывается, лучше записать:
 CModule::IncludeModule('iblock');
$dbSect = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$arResult["IBLOCK_ID"], "<=LEFT_BORDER" => $arResult["LEFT_MARGIN"], ">=RIGHT_BORDER" => $arResult["RIGHT_MARGIN"], "DEPTH_LEVEL" => 1), false); 
$arSect = $dbSect->GetNext();

Кастомзация загрузки заказов из 1С в Битрикс

  • Загрузка XML-заказа:
    http://site.com/bitrix/admin/1c_exchange.php?type=sale&mode=import&sessid=SESSID&filename=FILENAME
    где SESSID - идентификатор сессии, его можно получить через консоль вебинспектора, выполнив там команду BX.bitrix_sessid().
    FILENAME - имя загружаемого файла из папки /upload/1c_exchange
  • Код загрузки XML заказов находится в файле /bitrix/modules/sale/general/order_loader.php метод CSaleOrderLoader::nodeHandler().
  • Выгрузка XML заказов:
    /bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=SESSID

ФЗ-54 и Битрикс

У нас как всегда, время дали с февраля по 1 июля для перехода на новые условия работы. Люди дождались пока наступит 1 июля и только тогда стали стучать, что им что-то надо поменять в интернет-магазине, что бы соответствовать текущим требованиям законодательства. В связи с этим попытаюсь дать пояснения текущему положению вещей.

Читать подробнее...

Разработка и поддержка сайтов в Белгороде


Разработка и поддержка сайтов в Белгороде
Наш опыт работы с платформой 1С-Битрикс позволяет предложить заказчику максимальный спектр услуг. Мы обладаем необходимыми компетенциями, что подтверждает партнерский статус и сертификаты и готовы выполнить проекты любой сложности. Чем сложнее – тем интереснее.

Читать подробнее...

Вывод элементов инфоблока на карту Google

Одно из самых удобных и быстрых решений

Вывод объектов из каталога на карту Google

Читать подробнее...

Пошаговый скрипт в init.php

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

Читать подробнее...

Кастомизация обмена с 1С

Клиентом была поставлена задача: при обмене с 1С товары помеченные на удаление в 1С должны деактивироваться на сайте, тоже самое должно происходить с характеристиками (в Битриксе они становятся торговыми предложениями).
Решение: стандартный (от Битрикса) класс CIBlockCMLImport (лежит здесь:Bitrix/modules/iblock/classes/general/cml2.php) выносим в свой файл задаем собственное имя и в функцию ImportElement дописываем код:
 if($arXMLElement[$this->mess["IBLOCK_XML2_DELETE_MARK"]]=='true')
      {
         $obElement->Update($arDBElement["ID"], array("ACTIVE"=>"N"), $bWF);
      }

Читать подробнее...

Простой переключатель вкладок на jquery

<div class="tabs_block">
 
    <div class="tap-block-title">
        <a class="tap-block-title active" href="javascript:void(0);">Плитка</a>
        <a class="tap-block-title" href="javascript:void(0);">Сантехника</a>
        <a class="tap-block-title" href="javascript:void(0);">Мозаика</a>
        <a class="tap-block-title" href="javascript:void(0);">Акции</a>
    </div>

  <div class="tabs__content active"> 

  <!-- содержимое вкладки --> 

    </div>
  <div class="tabs__content"> 

  <!-- содержимое вкладки --> 

    </div>

  <script>
     (function($) {
$(function() {

  $('.tap-block-title').on('click', 'a:not(.active)', function() {
    $(this)
      .addClass('active').siblings().removeClass('active')
      .closest('div.tabs_block').find('div.tabs__content').removeClass('active').eq($(this).index()).addClass('active');
  });

});
})(jQuery);

</script> 

</div>
<style>
     .tabs__content {
  display: none; /* по умолчанию прячем все блоки */
}
.tabs__content.active {
  display: block; /* по умолчанию показываем нужный блок */
}
  </style> 
[CODE][/CODE]

Меню по разделу

Иногда бывает нужно вывести меню не по всему инфоблоку, а только по одному из разделов. Кастомизированный компонент menu.section имеет дополнительный параметр "Корневой раздел меню (ID):" в который нужно ввести ID раздела.

Читать подробнее...

Файлы:
maxyss.zip (8.56 КБ)

Простой ajax-вызов скрипта

Простой Html

Читать подробнее...

Уникализация многомерных массивов php

Задача: уникализировать многомерный массив, удалив одинаковые значения (дубли), на PHP.
[LEFT]

Читать подробнее...

Сортировка массива с помощью другого массива (array_multisort)

Функция array_multisort
первый массив (сортирующий) - фактически маска для сортировки второго (основного) массива. Задаем его элементы так, чтобы их порядок после сортировки давал нужный нам порядок основного массива. Сортирующий массив будет отсортирован SORT_ASC (по умолчанию, если не указано иного), а элементы основного массива будут отсортированы в соответствии с элементами сортирующего массива. Например
$ar1 = array(30, 10, 20, 0);
$ar2 = array(1, 2, 3, 4);
array_multisort($ar1, $ar2); 
Получим отсортированный массив $ar1 = array(0, 10, 20, 30); и $ar2 = array(4, 2, 3, 1);

Фильтрация по наличию на складах

Умный фильтр Битрикса не поддерживает фильтрацию по складам (потому как работает только со свойствами элементов). Следовательно, чтобы добавить в возможность фильтровать товар по наличию на складах, нужно добавить соответствующие свойства в карточку элемента. Для этого напишем обработчик в init.php, который при изменении количества товара на складе будет проставлять нужные свойства в карточку элемента.

Читать подробнее...

Умный фильтр с иерархией вложенности

Не единожды поступала задача вывести фильтр с многоуровневой структурой. Здесь будет показана одна реализация на основе свойств инфоблока. Вторая реализация выглядит как фильтр, на самом деле является выводом catalog.section.list, закомуфлированным под фильтр и подающим в ajax данные для фильтрации catalog.section либо по свойствам, либо по разделам. Эта реализация основана на интуитивно понятной структуре разделов инфоблока и является ее отображенинм. Она накладывает определенные ограничения на структуру разделов и выводит только два уровня. На момент написания реализацию можно посмотреть здесь: http://locationhunters.ru/catalog/

Умный фильтр обладает бОльшими возможностями и выглядит для заказчика более предпочтительным, чем выше описанный пример. Естественно, что все зависит от конкретной задачи в рамках которой разработчик делает свой выбор. Для описаной здесь реализации использован следующий подход: многоуровневость заложена в

Читать подробнее...

Кастомный вызов компонента регистрации при использовании NEED_AUTH

1. Скопировать стандартный шаблон компонента bitrix.system.auth.registration в папку шаблона сайта
2. В этом шаблоне разместить примерно следующий код:

Читать подробнее...

Форматирование даты

Обратный слэш - экранирует скобочки. Берем текущую дату сервера и добавляем нужное кол-во дней (часов, минут).
FormatDate("j M. \(D.\)", $_SERVER['REQUEST_TIME']+$_POST['date']*60*60*24)
 

Обновляем корзину Битрикса без перезагрузки страницы

Вызвать событие обновления корзины в любом месте кода
<script> 
   BX.onCustomEvent('OnBasketChange'); // Обновляем корзину   
</script>
Страницы: 1 | 2 | След.