Вывод дерева меню интернет-магазина (displayEshopTree)
Данная функция выводит меню интернет-магазина
Template::displayEshopTree($module_id, $treeoutputtype, $levellimit, $showroot, $classes=false, $show_images = false, $image_size = '78x48', $description = false, $title = false, $gridLayout = '')
Если не указывать module_id(или указывать 0 или false), то будет подхватываться первый попавшийся раздел нужного типа
Если не указывать module_id(или указывать 0 или false), то будет подхватываться первый попавшийся раздел нужного типа
- $module_id: ID модуля интернет-магазина из БД, смотри ссылку в редакторе
- $treeoutputtype: 1 - всегда полностью раскрыто 2 - раскрывается только активная ветка дерева. В этом случае третий параметр можно опустить
- $levellimit: уровень, до которого раскрывается. По умолчанию раскрывается полностью ($levellimit = -1). Может принимать значения -1, 1, 2, 3 и т.д.
- $showroot: показывать корневой каталог или нет (true, false)
- $classes - если true, то для каждого пункта меню выводит уникальный класс. для специфических задач верстки
- show_images - выводить картинки. true/false. По Умолчанию false.
- image_size - размер картинок в формате "{Ширина}x{Высота}". Либо "true" - и тогда берутся настройки из редактора
- description - вывод краткого описания рубрики. True/false. По Умолчанию false.
- $title: вывод заголовка блока. По умолчанию false. Можно указать либо фиксированное значение, либо true и тогда название возьмется из названия раздела
- $gridLayout - Режим вывода адаптивной плиткой.
Строка с указанием размеров блоков. Если параметр пустой, режим не используется.
- $gridLayout - Режим вывода адаптивной плиткой. Строка с указанием размеров блоков. Если параметр пустой, режим не используется. В этом режиме игнорируем параметр treeoutputtype и не выводим вложенные рубрики.
Значения: 'big', 'horizontal', 'vertical', 'normal'. На выводе блоки будут указанных размеров по порядку, начиная с первого. По окончанию заданных значений в строке, следующие элементы будут считаться, как normal. Если указать что угодно, не подходящее под перечисление размеров, то размеры всех элементов будут тоже normal
Можно указывать блоки с привязкой к количеству рубрик, чтобы задавать разные сетки вывода для разного количества блоков. Формат: [Рубрики через запятую]: [типы блоков через запятую]; [Рубрики через запятую]: [типы блоков через запятую]
Если номер не указан, то набор в перечислении подходит для любого количества. Такие наборы стоит писать в конце списка, если хочется задать общее правило для всех количеств рубрик, не указанных точечно. Ну или не писать, если устраивает дефолтное значение normal.
Примеры: big, horizontal 7,8: vertical, horizontal; horizontal 1,2,3,4: normal; 5,7: vertical; 6:big, horizontal; 8: vertical, horizontal, big; vertical
***Обязательно надо из шаблона убирать классы flex и всякие x3-x4-x5. Они лишние для этого вывода и будут создавать проблемыОбязательно надо из шаблона убирать классы flex и всякие x3-x4-x5. Они лишние для этого вывода и будут создавать проблемы Иногда придется какие-то еще стили из css убирать, тк всякие изменения ширины и отступов для блоков рубрик в сумме с дефолтными стилями для grid могут давать неадекватный вывод. *** На общую обертку меню добавлен класс, по которому видно, сколько внутри рубрик. Чтобы не считать это через js, если нужно будет на верстке как-то вручную специфично стили задавать в зависимости от количества рубрик.
*** Если включен режим плиткой, то его детальная настройка происходит через css. Вот такие стили достаточно в шаблоне указать, перебив дефолтные значения из системного файла стилей
.gridOverflow { --itemMinWidth: 250px; --itemAspectRatio: 1; --gridGap: 20px; }
- itemMinWidth: минимальная ширина блока - itemAspectRatio: пропорция блока. 1 - квадрат. От 0 до 1 - горизонтальный прямоугольник, больше единицы - вертикальный прямоугольник. - gridGap: отступ между блоками
*** При использовании этого режиме, нужно указывать параметр размера картинок с достаточным запасом, тк не известно наверняка, сколько вернется элементов и какой максимальной ширины они будут. Подбирать в зависимости от itemMinWidth и предположительного общего количества рубрик. Например, треть от максимальной ширины контейнера, если в ряд у нас три обычных элемента. Или две трети, если три в ряд, но один из них горизонтального размера.
*** Скриптов в выводе нет, так что всё что хочется с блоком сделать, можно сделать стилями. В тч налету. Например задавать отдельные правила для адаптива, переназначать классы размера скриптами, итд итп по ситуации.
Варианты вывода:
