Добавляем информацию нелинейно

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

  • ShowViewContent Один из них — метод CMain::ShowViewContent.

    В темплейте исходного компоненте перед созданием контента пишем:

    $this->SetViewTarget('sidebar');

    Далее — формирум данные для вывода.
    Завершаем блок командой

    $this-> EndViewTarget();

    В результате наши данные сформированы, но пока нигде не отображаются.
    Для вывода созданного фрагмента в header или footer размещаем вызов контента:

    $APPLICATION->ShowViewContent("sidebar");
  • AddViewContent <?$this->SetViewTarget("sidebar");?> <div class="element-filter"> <!--вывод фильтра --> </div> <?$this->EndViewTarget();?> CMain::AddViewContent( view, content, pos = 500) позволяет вывести контент в пароизвольной области. view — идентификатор буферизируемой области. Идентификатору может соответствовать несколько буферов. Последовательность вывода контента определяется сортировкой pos. Пример: if(!isset($_REQUEST["ajax"])) $this->SetViewTarget("sidebar"); $APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", "", array(...), false ); if(!isset($_REQUEST["ajax"])) $this->EndViewTarget("sidebar"); в темплейте вызываем через $APPLICATION->ShowViewContent('sidebar');
  • Использование this <h1><?=$APPLICATION->ShowTitle();?><?$APPLICATION->ShowViewContent('mdf_title');?></h1> <?$this->SetViewTarget('mdf_title');?> same text here ... <?$this->EndViewTarget();?>
  • ob_start ob_start(); echo 'SomeText'; $out1 = ob_get_contents(); ob_end_clean(); $APPLICATION->AddViewContent('block_id',$out1);

Глобальные переменные (и проверка на мобильность по пути)

Есть массив $GLOBALS, который виден везде. И с помощью которого можно передавать информацию. На страницу или в темплейт.

Например, в header, где-нибудь в начале скрипта, определяем тип устройства. Мобильный?

(далее…)

Битрикс. Переход на php7

Часть 1. Стандартные правки для перехода Битрикса

Битрикс совместим с php7 (конечно, совместимость плагинов не гарантируется, но большинство из них — работают в семерке).

Самое мощное отличие при переходе на php7 — использование расширения mysqli вместо mysql.   Для того, чтобы использовать mysqli, необходимо отредактировать два конфигурационных файла.

(далее…)

Умный фильтр на Битриксе

«Умный фильтр» — стандартный компонент Битрикса.
Его главная фишка в том, что результаты фильтрации отображаются на налету генерируемой странице с уникальным адресом, содержащим параметры поиска.
Например /topki/filter/brend-is-kratki/apply/
В этой заметочке я хочу написать о правильной настройке фильтра.

(далее…)