Использование трейтов в PHP. Секции для контента в HTML5 — div или section или article? Заметки о природе

Использование трейтов в PHP. Секции для контента в HTML5 — div или section или article? Заметки о природе

Данный материал является вольным переводом статьи:
Ire Aderinokun SECTIONING CONTENT IN HTML5 - DIV OR SECTION OR ARTICLE?

HTML5 стал важной ступенькой для концепции семантического кода. Он отстаивает идею, что документ должен быть структурирован и используемые вами теги должны передавать смысл.

Помимо прочего, теги

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

Обзор элементов

DIV

Элемент

является элементом общего назначения. Но это не имеет особого смысла. Его цель заключается в группировке контента, который семантически не связан между собой. По сути, это совершенно бессмысленно для скрин ридеров, поэтому пользоваться данным методом нужно с осторожностью.

Элемент

в основном используется для группировки контента и и позиционирования при помощи CSS. Например, как контейнер для других элементов.

SECTION

Элемент

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

Главное правило заключается в том, что элемент section уместно использовать только тогда, когда его содержимое может быть явно сгруппировано.

Поскольку содержимое тега

имеет смысл только когда сгруппировано вместе, оно должно иметь «тему». «Тема» должна быть определена путем включения заголовка в содержимое, часто сразу после открывающего тега.

Subscribe to the Newsletter


ARTICLE

Тег

является даже более конкретным, чем тег
. Он так же применяется к семантически связанному разделу контента и должен иметь заголовок. Тем не менее его содержимое должно быть самодостаточным. Это означает что будучи изолированным от остальной части страницы оно по прежнему должно иметь смысл.

Цель тега

в маркировке контента, например, в разметке блога.


Article Title



Quae similitudo in genere etiam humano apparet. Est, ut dicis, inquam...


DIV или SECTION или ARTICLE?

Так какой из тегов когда нужно использовать?

Если содержимое не является семантически связанным, стоит использовать

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

Комбинирование элементов

Попытаемся объединить различные элементы вместе.

Article в article

Элементы article можно вкладывать друг в друга. И хотя они по прежнему являются самодостаточными, предполагается, что содержимое внутреннего

связано с внешним.

Article Title

John Smith

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Another Article

Jane Doe

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.


Article в section

Мы можем так же несколько тегов

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

Latest Blog Posts

Blog Post Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Blog Post Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit.


Section в article

Каждый индивидуальный тег

может содержать в себе раздел section. Например, данный пост мог бы быть размечен следующим образом


Sectioning Content in HTML5 - div or section or article?


Overview of the Elements



div


The div element is the most general purpose element.




Из данной статьи вы узнаете как можно построить навигационную цепочку зная один лишь символьный код раздела.

Как по символьному коду раздела построить хлебные крошки в Битриксе

Перед прочтением данной статьи советую почитать Как добавить в хлебные крошки название . Прочитали? Тогда идем дальше.

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

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

$rsSect = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "=CODE" => $arResult["VARIABLES"]["SECTION_CODE"]), false, array("ID", "NAME", "UF_TEXT_TOP", "DEPTH_LEVEL", "SECTION_PAGE_URL")); if ($arSect = $rsSect->GetNext()) { $SEC_LVL = $arSect["DEPTH_LEVEL"]; $SEC_NAME = $arSect["NAME"]; $SEC_URL = $arSect["SECTION_PAGE_URL"]; }

Обратите внимание на строчку ‘=CODE’ => $arResult[‘VARIABLES’][‘SECTION_CODE’] . Также, мы используем if , вместо привычного цикла while, т.к. нам нужны данные только по одному разделу.

Записываем 3 переменные, которые нам понадобятся:
— уровень вложенности, DEPTH_LEVEL
— имя, NAME
— ссылка на раздел, SECTION_PAGE_URL

ВАЖНО . Перед следующим этапом отключите в своем компоненте настройку «добавлять раздел\инфоблок в цепочку навигации»

В самом конце файла section.php добавляем код:

= 2) { $rsSect = CIBlockSection::GetList(array(), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "=CODE" => $arResult["VARIABLES"]["SECTION_CODE"]), false, array("ID", "NAME", "SECTION_PAGE_URL")); while ($arSect2 = $rsSect->GetNext()) { if (strstr($curSectionURL, $arSect2["SECTION_PAGE_URL"])) { $SEC_NAME = $arSect2["NAME"]; $SEC_URL = $arSect2["SECTION_PAGE_URL"]; break; } } $result = array(); $ibsTreeResource = CIBlockSection::GetNavChain(false, $arSect2["ID"], array("ID", "NAME")); $c = 0; while($sectionItem = $ibsTreeResource->Fetch()){ $result[$c]["NAME"] = $sectionItem["NAME"]; $res = CIBlockSection::GetByID($sectionItem["ID"]); if($ar_res = $res->GetNext()) { $url = $ar_res["SECTION_PAGE_URL"]; } $result[$c]["URL"] = $url; $c++; } foreach ($result as $arItem) { $APPLICATION->AddChainItem($arItem["NAME"], $arItem["URL"]); } } else { $APPLICATION->AddChainItem($SEC_NAME, $SEC_URL); } ?>

При помощи CIBlockSection::GetNavChain выстраиваем полный путь до родительского раздела (если это подраздел), и добавляем через цикл в цепочку навигации Название и Ссылку . Если эже это раздел 1-го уровня, то просто добавляем его Название и Ссылку .

Например, наш код равен armstrong . Полученный результат выглядит приблизительно следующим образом:
Каталог / Офисные светодиодные светильники / Светильники Армстронг

URL при этом имеет вид:

/catalog/ofisnye-svetilniki/armstrong/

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

Вот и всё, надеюсь у вас всё получилось:). ПС код не идеален и применялся для старых проектов, его можно улучшить.

Семантические элементы HTML5 доступно описывают свой смысл или назначение как для браузеров, так и для веб-разработчиков.
До появления стандарта HTML5 вся разметка страниц осуществлялась преимущественно с помощью элементов

, которым присваивали классы class или идентификаторы id для наглядности разметки (например,