40  /  382
Справочник

Примеры работы и решения проблем

Просмотров: 50391
Дата последнего изменения: 22.01.2024
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет
Цитатник веб-разработчиков.

Алексей Майдокин: Моё мнение - вёрстке и другим сложным штукам место в шаблонах, компонентах и тому подобном, короче там, куда простым смертным просто так не добраться. Сложная вёрстка в области контента - это как двигатель в салоне легковушки.

Подробную информацию об условиях применения шаблонов можно посмотреть в следующих уроках:


  • Простые примеры применения шаблонов в зависимости от различных условий
  • Подключение favicon.ico для разных шаблонов
  • Отдельный шаблон для главной страницы сайта
  • Изменение шаблона сайта, в зависимости от временного параметра
  • Применение шаблона сразу по двум условиям
  • Применение шаблона только к файлам с определённым расширением
  • Изменение дизайна «шапки» сайта для разных разделов
  • Особенности работы с ajax
  • Простые примеры применения шаблонов в зависимости от различных условий

    Если свойство раздела phone равно Y

    $APPLICATION->GetDirProperty("phone")=="Y"

    Если текущий раздел равен /ru/catalog/phone/

    $APPLICATION->GetCurDir()=="/ru/catalog/phone/"

    Если текущий пользователь - администратор

    $USER->IsAdmin()

    Если нужно привязать шаблон к динамической странице (в примере - к детальной странице(карточке) товара.)

    preg_match("#/catalog/\?SECTION_ID=\d+&ELEMENT_ID=\d+#i",$_SERVER['REQUEST_URI']);

    Подключение favicon.ico для разных шаблонов

    Для того чтобы в разных шаблонах сайтов были разные значки, надо в шаблоне в header.php добавить вызов значка из шаблона:

    <link rel="icon" type="image/x-icon"
    href="<?=SITE_TEMPLATE_PATH;?>/images/favicon.ico" />
    

    Отдельный шаблон для главной страницы сайта

    Цитата: По умолчанию ставлю шаблон, который рассчитан для внутренних страниц сайта. На главной странице будет свой шаблон. Подскажите, как составить условие для отображения нужного шаблона на главной странице сайта?

    Вдобавок к основному шаблону для всех страниц сайта необходимо подключить требуемый шаблон через условие Для папки или файла, в котором указать /index.php с учетом индекса сортировки применения шаблона.


    Изменение шаблона сайта, в зависимости от временного параметра

    Цитата: Как реализовать изменение шаблона сайта, в зависимости от временного параметра (Всего два шаблона, но они должны меняться каждый час)?

    Для этого необходимо сделать изменение текущего шаблона по условию Выражение PHP.

    Первый вариант

    По нечетным часам: ((date("H")+6)%2) == 1
    По четным часам: ((date("H")+6)%2) == 0

    где +6 - указывает временную зону.

    Второй вариант

    date("H")%2
    или
    !date("H")%2



    Применение шаблона сразу по двум условиям

    Цитата: Подскажите, как задать шаблон одновременно по 2 условиям (для группы пользователей и для папки и файла) в настройках БУС.

    Для этого необходимо использовать изменение текущего шаблона по условию Выражение PHP:

    in_array($groupID, $USER->GetUserGroupArray()) || strpos($APPLICATION->GetCurDir(), "/dir/")!==false || $APPLICATION->GetCurPage()=="/dir/file.php"
    


    Применение шаблона только к файлам с определённым расширением

    Цитата: Подскажите, пожалуйста, выражение PHP, чтобы шаблон действовал на все страницы, заканчивающиеся на .php, а .html не трогал.

    Решение: изменение шаблона по условию Выражение PHP:

    substr($APPLICATION->GetCurPage(true), -4) == ".php" 
    

    Аналогично для файлов с расширением html:

    substr($APPLICATION->GetCurPage(true), -5) == ".html"

    Изменение дизайна «шапки» сайта для разных разделов

    Задача: Сайт разделен на несколько разделов. По замыслу у каждого раздела должна быть своя «шапка» в дизайне. Более в дизайне ничего не меняется. Как лучше реализовать смену «шапок» разделов?

    Решение: В шаблон подключается компонент Включаемая область (для раздела):

    <div id="header">
    <?$APPLICATION->IncludeComponent("bitrix:main.include", ".default", array(
    	"AREA_FILE_SHOW" => "sect",
    	"AREA_FILE_SUFFIX" => "headerinc",
    	"AREA_FILE_RECURSIVE" => "Y",
    	"EDIT_TEMPLATE" => "sect_headerinc.php"
    	),
    	false
    );?>
    </div>
    

    Код шапки каждого из разделов будет храниться в файле sect_headerinc.php. Параметр "AREA_FILE_RECURSIVE" => "Y" означает, что такая же "шапка" появится у всех подразделов данного раздела, если родительский sect_headerinc.php не будет специально перекрыт у кого-то из нижележащих разделов.


    Особенности работы с ajax

    Использование режима ajax имеет свои особенности. Чтобы строка навигации в открываемой по ajax странице имела в цепочке навигации своё название, необходимо, чтобы в шаблоне обязательно присутствовал элемент с id="navigation". Это необязательно должен быть div, это может быть span, h1, p и так далее.

    Аналогично, для заголовка обязательно наличие элемента с id="pagetitle".



    67
    Курсы разработаны в компании «1С-Битрикс»

    Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
    Развернуть комментарии