Все что необходимо по битриксу и не только

  • Header/Footer.php 6

    Head

    <title><?$APPLICATION->ShowTitle()?></title>
    <? $APPLICATION->ShowHead(); ?>
    <meta http-equiv="Content-Type" content="text/html; charset=<?=LANG_CHARSET;?>" /> 
    <? $APPLICATION->ShowMeta("keywords") ?> 
    <? $APPLICATION->ShowMeta("description") ?>

    Ссылки и другое

    <a href="<?=SITE_DIR?>index.php"> ссылка на корень 
    <?=SITE_TEMPLATE_PATH?>/ - подставляет путь к шаблону
    <?$APPLICATION->ShowPanel();?> - выводит панель управления администратора
    <?$APPLICATION->ShowTitle(false);?> - заголовок (в h1 например использовать)

    Включаемые области

    Для страницы

    <?$APPLICATION->IncludeComponent( 
    			 "bitrix:main.include", 
    			 "", 
    			 Array( 
    			 "AREA_FILE_SHOW" => "page", 
    			 "AREA_FILE_SUFFIX" => "zagolovok", 
    			 "EDIT_TEMPLATE" => "" 
    			 ) 
    		);?>
    Создаст файл с префиксом zagolovok для страницы. пример kontakty_zagolovok.php
    Из файла
    <?$APPLICATION->IncludeComponent( 
    						"bitrix:main.include", 
    						"", 
    						Array( 
    						"AREA_FILE_SHOW" => "file", 
    						"PATH" => "/include/logo.php", 
    						"EDIT_TEMPLATE" => "" 
    						), 
    						false 
    						);?>
    Создан файл logo.php в папке include

    Вывод информации только на главной странице в Битриксе

    <?if($APPLICATION->GetCurPage() == "/"):?> 
    	#Ваш код
    <?endif;?> 
    Или такой вариант:
    <?if($APPLICATION->GetCurPage() == "/index.php"){
    	#Ваш код
    }?> 
    Вместо GetCurPage() можем попробовать GetCurDir():
    <?if($APPLICATION->GetCurDir() == "/") {}?> 

    Отобразить информацию везде кроме главной страницы

    В новых шаблона Битрикса:

    <?$curPage = $APPLICATION->GetCurPage(true);?> 
    <?if ($curPage != SITE_DIR."index.php"):?> 
    	#Ваш код
    <?endif?> 

    Вывод информации: If главная - Else не главная

    <?if($APPLICATION->GetCurDir()==SITE_DIR):?> 
    	#Ваш код главная
    <?else:?> 
    	#Ваш код не главная
    <?endif;?>

  • Битрикс source 7

    Полезные скрипты 1С-Битрикс

    • Скрипт для установки 1С-Битрикс на хостинг: bitrixsetup.php (более подробно здесь)
    • Скрипт для тестирование хостинга на соответствие требованиям: bitrix_server_test.php (более подробно здесь)
    • Скрипт для диагностики проблем интеграции с 1С: bx_1c_import.php
    • Скрипт для тестирования магазина: bx_sale_test.zip (более подробно здесь)
    • Конвертация сайта из cp1251 в UTF8: convert_utf8.php (более подробно здесь)
    • Скрипт для создания символьных ссылок на /bitrix и /upload: symlink.php (более подробно здесь)
    • Скрипт для восстановления резервной копии: restore.php (более подробно здесь)

    Чистая рабочая страница

    <?
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    $APPLICATION->SetTitle("Бизнес");
    ?>
    
    Text here....
    
    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

    Открытие ссылок меню Битрикс в новом окне

     \" target=\"_blank 
    Пример:
    Array( "Название пункта меню", "http://web-as-group.org/\" target=\"_blank", Array(), Array(), "" )

    Вывод блока только для определенного пользователя

    Если пользователь авторизован, то даем информацию

    <?if($USER->IsAuthorized()): // Если пользователь авторизован, то?>
    Здесь информация только для авторизованных пользователей.
    <?endif;?>
    Если пользователь не авторизован, то даем информацию
    <?if(!$USER->IsAuthorized()): // Если пользователь не авторизован, то?>
    Здесь информация только для не авторизованных пользователей.
    <?endif;?>
    Выводить информацию только пользователю с конкретным ID
    <?if($USER->GetID()==$ID):?>  
    <?endif?>
    Больше пользователей
    <?if( ($USER->GetID()==$ID1) || ($USER->GetID()==$ID2) ):?> 
    ...
    <?endif?>
    или
    <?$uID = $USER->GetID();
    if( ($uID==$ID1) || ($uID==$ID2) ):?>
    ...
    <?endif?>
    Выводить информацию только группе с конкретным ID
    <?if(in_array($GROUP_ID, $USER->GetUserGroupArray())):?>  
    <?endif?> 

    Показываем 404 страницу

    bitrix/php_interface/init.php нужно написать следующий обработчик:

    <?
    AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);
    
    function _Check404Error(){
        if (defined('ERROR_404') && ERROR_404 == 'Y') {
            global $APPLICATION;
            $APPLICATION->RestartBuffer();
            include $_SERVER['DOCUMENT_ROOT'] . SITE_TEMPLATE_PATH . '/header.php';
            include $_SERVER['DOCUMENT_ROOT'] . '/404.php';
            include $_SERVER['DOCUMENT_ROOT'] . SITE_TEMPLATE_PATH . '/footer.php';
        }
    }
    ?>

    Форма попап Обратной связи

    Код у footer.php перед body

    <a href="#x" class="overlay" id="win1"></a> 
    <div class="popup"> 
        	<?$APPLICATION->IncludeComponent(
      			"bitrix:main.feedback",
      			"",
      				Array(
      				"EMAIL_TO" => "Ваш@меил",
      				"EVENT_MESSAGE_ID" => array(),
      				"OK_TEXT" => "Спасибо, ваше сообщение принято.",
      				"REQUIRED_FIELDS" => array("NAME", "EMAIL", "MESSAGE"),
      				"USE_CAPTCHA" => "N"
      			)
      		);?>
      	<a class="close" title="Закрыть" href="#close"></a> 
     </div>
    
    ссылка в любое место
    <a href="#win1" class="btn  btn-info" >ЗАКАЗАТЬ</a>
    стили сss
      .overlay { 
    background-color: rgba(0, 0, 0, 0.7); 
    bottom: 0; 
    cursor: default; 
    left: 0; 
    opacity: 0; 
    position: fixed; 
    right: 0; 
    top: 0; 
    visibility: hidden; 
    z-index: 1; 
    -webkit-transition: opacity .5s; 
    -moz-transition: opacity .5s; 
    -ms-transition: opacity .5s; 
    -o-transition: opacity .5s; 
    transition: opacity .5s; 
    } 
    .overlay:target { 
    visibility: visible; 
    opacity: 1; 
    } 
    .popup { 
    background-color: #fff; 
    border: 3px solid #fff; 
    display: inline-block; 
    left: 50%; 
    opacity: 0; 
    padding: 15px; 
    position: fixed; 
    text-align: justify; 
    font: 14px Helvetica, Arial, Sans-Serif; 
    top: 40%; 
    visibility: hidden; 
    z-index: 10; 
    
    -webkit-transform: translate(-50%, -50%); 
    -moz-transform: translate(-50%, -50%); 
    -ms-transform: translate(-50%, -50%); 
    -o-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 
    
    -webkit-border-radius: 10px; 
    -moz-border-radius: 10px; 
    -ms-border-radius: 10px; 
    -o-border-radius: 10px; 
    border-radius: 10px; 
    
    -webkit-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset; 
    -moz-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset; 
    -ms-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset; 
    -o-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset; 
    box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset; 
    
    -webkit-transition: opacity .5s, top .5s; 
    -moz-transition: opacity .5s, top .5s; 
    -ms-transition: opacity .5s, top .5s; 
    -o-transition: opacity .5s, top .5s; 
    transition: opacity .5s, top .5s; 
    } 
    .overlay:target+.popup { 
    top: 50%; 
    opacity: 1; 
    visibility: visible; 
    } 
    .close { 
    background-color: rgba(0, 0, 0, 0.8); 
    border: 2px solid #ccc; 
    height: 24px; 
    line-height: 24px; 
    position: absolute; 
    right: -13px; 
    font-weight: bold; 
    text-align: center; 
    text-decoration: none; 
    top: -15px; 
    width: 24px; 
    -webkit-border-radius: 15px; 
    -moz-border-radius: 15px; 
    -ms-border-radius: 15px; 
    -o-border-radius: 15px; 
    border-radius: 15px; 
    -moz-box-shadow: 1px 1px 3px #000; 
    -webkit-box-shadow: 1px 1px 3px #000; 
    box-shadow: 1px 1px 3px #000; 
    } 
    .close:before { 
    color: rgba(255, 255, 255, 0.9); 
    content: "X"; 
    font-size: 14px; 
    text-shadow: 0 -1px rgba(0, 0, 0, 0.9); 
    } 
    .close:hover { 
    background-color: rgba(64, 128, 128, 0.8); 
    }  
                     

    Автоматическая генерация символьного кода из названия элемента в Битрикс

    Добавим свой обработчик для событий в файл /bitrix/php_interface/init.php вашего сайта:

    <?function slugTranslit(&$arFields) {
    	// Если заполнено имя и не заполнен символьный код
        if (strlen($arFields["NAME"]) > 0 && strlen($arFields["CODE"]) <= 0) {
            $arParams = array(
                "max_len" => "100", // обрезаем символьный код до 100 символов
                "change_case" => "L", // приводим к нижнему регистру
                "replace_space" => "-", // меняем пробелы на тире
                "replace_other" => "-", // меняем плохие символы на тире
                "delete_repeat_replace" => "true", // удаляем повторяющиеся тире
                "use_google" => "false", // отключаем использование google
            );
            $arFields["CODE"] = Cutil::translit($arFields["NAME"], "ru", $arParams);
        }
    }
    AddEventHandler("iblock", "OnBeforeIBlockElementAdd", 'slugTranslit');
    AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", 'slugTranslit');?>

  • В шаблонах компонентов 12

    В шаблонах компонентов components/template.php

    <img src="<?=$arSection["PICTURE"]["SRC"]?>" title="<?=$arSection["NAME"]?>" border="0"/> - картинка раздела инфоблока.
    
    <?$APPLICATION->ShowTitle(false)?> заголовок в шаблоне
    
    <?=$arSection["DESCRIPTION"]?> - описание раздела инфоблока
    
    <? if ($arSection["PICTURE"]["SRC"]){?><img src="<?=$arSection["PICTURE"]["SRC"]?>" title="<?=$arSection["NAME"]?>" border="0"/><?}?>  изображения раздела
    
    <?=$arResult["NAME"]?> - название раздела
    
    <?echo $arItem["NAME"]?> - название (заголовок элемента)
    
    <?echo $arItem["DETAIL_PAGE_URL"]?> - ссылка на детальную новость (статью)
    
    <?echo $arItem["PREVIEW_TEXT"];?> - текст анонса
    
    <?echo $arResult["DETAIL_TEXT"];?> - детальный текст
    
    <?=$arItem["PREVIEW_PICTURE"]["SRC"]?> - изображение анонса
    
    <?=$arItem["DETAIL_PICTURE"]["SRC"]?> - изображение детальное
    
    <?=$arResult['DISPLAY_ACTIVE_FROM']?> - дата начала активности
    
    <?=$arItem['DATE_CREATE']?> - Дата создания элемента инфолока
    	
    <?=$arElement["TAGS"]?>        -  Теги
    
    <? echo $arResult['DISPLAY_PROPERTIES']['СВОЙСТВО']['DISPLAY_VALUE'];?> - Выводит определенное свойство в шаблона компонента 
    
    <?=$arItem["PROPERTIES"]["author"]["VALUE"]?> 
    
    или 
    
    <?=$arItem["DISPLAY_PROPERTIES"]["author"]["DISPLAY_VALUE"]?>

    Вывод названия рубрики элемента в шаблоне catalog.top

    <?
    $res = CIBlockSection::GetByID($arElement["IBLOCK_SECTION_ID"]);
    if($ar_res = $res->GetNext())
    echo $ar_res['NAME'];
    ?>

    Вывод описания и изображения раздела Битрикс

    Для того, чтобы вывести описание раздела (категории) в компоненте catalog.section, необходимо разместить код в шаблоне компонента:

    <?if($arResult['DESCRIPTION']):?><?=$arResult['DESCRIPTION']?><?endif;?>
    Также можно в компоненте вывести изображение раздела (категории) , необходимо добавить следующий код :
    <img src="<?=$arResult["PICTURE"]["SRC"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />

    Настройки инфоблока для новостей Bitrix:news

    URL страницы информационного блока:   #SITE_DIR#/blog/
    URL страницы раздела: #SITE_DIR#/blog/#SECTION_CODE#
    URL страницы детального просмотра: #SITE_DIR#/blog/#ELEMENT_CODE#
    чпу в настройке комплексного компонента bitrix:news
    Каталог ЧПУ (относительно корня сайта): /blog/
    Страница общего списка:
    Страница раздела:
    Страница детального просмотра: #ELEMENT_CODE#/
    
    Деталка в настройке компонента bitrix:news:list - #SITE_DIR#/blog/#ELEMENT_CODE#/

    Настройки инфоблока для новостей Bitrix:catalog

    URL страницы информационного блока: #SITE_DIR#/dovidnuk/index.php?ID=#IBLOCK_ID#
    URL страницы раздела: #SITE_DIR#/dovidnuk/list.php?SECTION_ID=#SECTION_ID#
    URL страницы детального просмотра: #SITE_DIR#/dovidnuk/detail.php?ID=#ELEMENT_ID#
    чпу в настройке комплексного компонента bitrix:catalog
    Каталог ЧПУ (относительно корня сайта): /dovidnuk/
    Список разделов:
    Pаздел: #SECTION_CODE#/
    Детальная информация: #SECTION_CODE#/#ELEMENT_CODE#/
    Таблица сравнения: compare.php?action=#ACTION_CODE#
    Url раздела для умного фильтра: #SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/

    Вывод в комплексном компоненте "Новости" нужный раздел по символьному коду

    Открыть файл \bitrix\templates\нужный шаблон сайта\components\bitrix\news\шаблон компонента\.parameters.php Вставить туда:

    "SECTION_CODE" => array( 
    "NAME" => GetMessage("IBLOCK_SECTION_CODE"), 
    "TYPE" => "STRING", 
    "DEFAULT" => '', 
    ),
    Дальше в этом же шаблоне открыть файл \lang\ru\.parameters.php и вставить туда
    $MESS ['IBLOCK_SECTION_CODE'] = "Код раздела";
    Дальше открыть файл в корне папки - news.php и добавить в том месте, где подключается bitrix:news.list строчку:
    "PARENT_SECTION_CODE" => $arParams["SECTION_CODE"],
    После этого в настройках компонента добавляется нужная строка!

    Простой ресайз изображений (News.list)

    <? 
    	 $renderImage = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"], Array("width" => НОВАЯ_ШИРИНА, "height" => НОВАЯ_ВЫСОТА), BX_RESIZE_IMAGE_EXACT, false); 
    	 echo '<img alt="'.$arItem["NAME"].'" src="'.$renderImage["src"].'" class="img-responsive" />'; 
    	 ?>
    BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize без сохранения пропорций;
    BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
    BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.

    Вывод доп изображений MORE_PHOTO (News.list)

    Отключите в настройках компонента вывод св-ва доп. картинок для списка. Пропишите в шаблоне

    <?
    foreach($arItem["PROPERTIES"]["MORE_PHOTO"]["VALUE"] as $key => $photo):
        $img = CFile::ResizeImageGet($photo, array("width"=>100, "height"=>100), BX_RESIZE_IMAGE_EXACT, true);
    ?>
    <img src="<?=$img["src"]?>" alt="" />
    <?endforeach?>

    При отсутствии фото товара показывать "нет фото"

    if (true == is_array($arElement["PREVIEW_PICTURE"]))
    {
    ?><img border="1" src="<?=$arElement["PREVIEW_PICTURE"]["SRC"]?>" width="<?=$arElement["PREVIEW_PICTURE"]["WIDTH"]?>" height="<?=$arElement["PREVIEW_PICTURE"]["HEIGHT"]?>" alt="<?=$arElement["NAME"]?>" title="<?=$arElement["NAME"]?>" /><?
    }
    else
    {
    // тут выводим картинку "нет изображения"
    }

    Ограничение количества символов в названии элемента

    Меняем

    <?=$arItem["NAME"];?> 
    на
    <?=TruncateText($arItem["NAME"], 100);?>

    Другой стиль для первого елемента News:list

    <?foreach($arResult["ITEMS"] as $key => $arItem):?>
                       
     <?if ($key==0):?>
      шаблон вывода для первого элемента
    <?else:?>
     шаблон вывода для остальных элементов
    <?endif?> 
                       
                        
    <?endforeach;?> 

    Пример шаблона компонента навигационной цепочки: template.php

    <?
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
    
    if(empty($arResult))
      return "";
    
    $strReturn = '<ul class="breadcrumb-navigation">';
    for($index = 0, $itemSize = count($arResult); $index < $itemSize; $index++)
    {
       if($index > 0)
              $strReturn .= '<li><span> > </span></li>';
       $title = htmlspecialcharsex($arResult[$index]["TITLE"]);
       if($arResult[$index]["LINK"] <> "")
              $strReturn .= '<li><a href="'.$arResult[$index]["LINK"].'" title="'.$title.'">'.$title.'</a></li>';
       else
              $strReturn .= '<li>'.$title.'</li>';
    }
    $strReturn .= '</ul>';
    return $strReturn;
    ?>