Поля¶
Введения в поля в Drupal¶
Поля в Drupal могут быть созданы или назначены сущностями. Сущностями в Drupal являются ноды, термины таксономии, пользователи, комментарии.
Одна сущность может иметь несколько полей.
Все поля имеют машинные имена, обычно начинающиеся с префикса “field_”, например field_title, field_parent_catalog, field_tags, field_classification
Поля имеют различные типы, могут быть строками, числами, логическими значениями, датами и ссылками на другие сущности.
При помощи полей разные сущности могут быть связаны между собой, так ноды документов могут быть вложены в ноды каталога с помощью ссылки в поле field_parent_catalog.
ELiS при включении модулей создает необходимые поля и добавляет их к необходимым сущностям. Но также вы можете сами добавлять необходимые поля к собственным типам нод или иным сущностям.
Некоторые из полей ELiS можно удалять (например field_open_access), ручное удаление других полей (например field_parent_catalog) приветед к неработоспособности ELiS (будут ошибки при обращении к каталогу).
Перед изменением любых полей полезно сделать резервную копию, в то же время добавление новых полей считается безопасным.
field_config¶
Поле field_config включает в себя конфигурацию в формате JSON.
Конфигурация должна быть валидным JSON (должны использоваться двойные кавычки), в случае синтаксической ошибки конфигурация может быть проигнорирована.
Поле field_config создается у нод каталога, наследуется вниз по каталогу и может быть переопределно на более низком уровне.
Поле содержит машиночитаемую конфигурацию для ELiS, описанную ниже. Редактировать поле могут только пользователи с правами на редактирование поля (роль пользователя имеет право “Edit field config” в настройках модуля ELiS).
Синтаксис поля:
{
"option1": "value1",
"option2": "value2",
"option3": "value3"
}
Пример:
{
"chromeColor":"#51255C",
"textColor":"#FFFFFF",
"headerUrl":"https://elis.example.com/epub/12345/fs/index.html",
"headerHeight":"144px",
"isHeaderOverflow":false,
"isHeaderVisible":true,
"logoPrimaryUrl":"https://elis.example.com/logo-right-144h.png",
"logoPrimaryHref":"https://elis.example.com",
"logoSecondaryUrl":"https://elis.example.com/logo-left-144h.png",
"logoSecondaryHref":"https://example.com",
"pageBackgroundUrl":["https://example.com/sites/default/files/background.jpg","https://example.com/sites/default/files/background2.jpg"],
"sidebarPrimaryChromeColor":"#095599",
"sidebarPrimaryTextColor":"#FFFFFF",
"sidebarPrimaryVisibility":"visible",
"sidebarSecondaryChromeColor":"#CCCCCC",
"sidebarSecondaryTextColor":"#323232",
"sidebarSecondaryVisibility":"invisible",
"contentChromeColor":"#EEEEEE",
"contentTextColor":"#323232",
"sort": ["manual_top","serial","subj_top", "rating", "childrens", "title"],
"catalogTheme":"auto",
"coverFit":"contain"
}
В качестве значений могут быть не только строки, но и для некоторых опций массивы, логические и целые значения.
У field_config есть значения по умолчанию. Пользовательское значение любой опции field_config переопределяет значение по умолчанию.
Если field_config для текущей ноды найти через наследование не удалось, field_config будет взят из настроек сайта (admin/config/content/elis). Если field_config у сайта не существует и не удалось унаследоваться, будут использоваться значения по умолчанию.
Темизация¶
Возможные параметры field_config:
chromeColor - основной цвет сайта в шестнадцатеричном виде #FFFFFF. По умолчанию берется из настроек темы сайта.
textColor - цвет текста в шестнадцатеричном виде #FFFFFF. По умолчанию берется из настроек темы сайта.
headerUrl - URL-ссылка на веб-контент, рисунок или видео, которые будут заниматься всю шапку и иметь высоту 144 пикселя с адаптивной шириной. При использовании изображений или веб-контента следует обеспечить работоспособность при низких разрешениях при помощи медиа-запросов. Если в веб-содержимом есть гиперссылки, они должны иметь атрибут target=”_blank” для открытия всех ссылок в новом окне браузера.
isHeaderOverflow - может ли контент перекрывать шапку сайта. Булевое значение (true или false без кавычек). По умолчанию - true. Устаревшее, в теме ELiS больше не используется.
isHeaderVisible - не выводит шапку сайта для некоторых тем. Булевое значение (true или false без кавычек). По умолчанию - true.
headerHeight - задает высоту шапки сайта, если она выводится. Строка в виде CSS-значения с указанием единицы измерения. По умолчанию - “144px”.
logoPrimaryUrl - URL-ссылка на изображение логотипа, размещенного в шапке слева. Изображение должно иметь высоту 144 пикселя и может иметь произвольную ширину. Формат изображения - png, jpg, svg. По умолчанию не задано.
logoPrimaryHref - Ссылка, на которую при клике по левому логотипу перейдет пользователь. По умолчанию - не задано.
logoSecondaryUrl - URL-ссылка на изображение логотипа, размещенного в шапке справа. Изображение должно иметь высоту 144 пикселя и может иметь произвольную ширину. Формат изображения - png, jpg, svg. По умолчанию не задано.
logoSecondaryHref - Ссылка, на которую при клике по правому логотипу перейдет пользователь. По умолчанию - не задано.
pageBackgroundUrl - Ссылка фонового изображения или массив ссылок фоновых изображений со случайным отображением одного из массива. По умолчанию - не задано (null).
sidebarPrimaryChromeColor - Цвет фона левой боковой панели в шестнадцатеричном виде #FFFFFF. Если на задано, может быть взято из chromeColor. По умолчанию - “#095599”.
sidebarPrimaryTextColor - Цвет текста левой боковой панели в шестнадцатеричном виде #FFFFFF. Если не задано, может быть взято из textColor. По умолчанию - “#323232”.
sidebarPrimaryVisibility - Отображается или нет левая боковая панель. Может принимать значения “visible” и “invisible”. Незаданное значение эквивалентно “visible”. По умолчанию - не задано. Применимо только для темы ‘elis’. “visible” - отображает боковую панель, “hidden” - скрывает с возможностью ручного отображения, “invisible” - скрывает без возможности ручного отображения.
sidebarSecondaryChromeColor - Цвет фона правой боковой панели в шестнадцатеричном виде #FFFFFF. По умолчанию - “#CCCCCC”.
sidebarSecondaryTextColor - Цвет текста правой боковой панели в шестнадцатеричном виде #FFFFFF. По умолчанию - “#323232”.
sidebarSecondaryVisibility - Отображается или нет правая боковая панель. Может принимать значения “visible”, “invisible”, “hidden”. Незаданное значение эквивалентно “visible”. По умолчанию - не задано. Применимо только для темы ‘elis’. “visible” - отображает боковую панель, “hidden” - скрывает с возможностью ручного отображения, “invisible” - скрывает без возможности ручного отображения.
contentChromeColor - Цвет фона плееров в шестнадцатеричном виде #FFFFFF. По умолчанию - “#EEEEEE”.
contentTextColor - Цвет фона плееров на странице в шестнадцатеричном виде #FFFFFF. По умолчанию - “#323232”.
catalogTheme - Тема для папок в каталоге. Может принимать одно из значений “auto”, “minimal”, “tile”, “catalogTile”, “column” гдe “auto” - автоматический выбор темы, “minimal” - минималистичная тема, “tile” - плиточный интерфейс, “catalogTile” - содержимое подпапок в виде плитки, “column” - одноколоночный с крупными обложками.
coverFit - Как будет вписано изображение обложки в каталоге. Может принимать одно из значений: ‘fill’, ‘contain’, ‘cover’, ‘scale-down’. Что означают значения можно посмотреть: https://developer.mozilla.org/ru/docs/Web/CSS/object-fit
Сортировка¶
sort - Массив строковых обозначений правил сортировки. По умолчанию: [“rating_desc”, “childrens”, “title_asc”]
Синтаксис:
{
"sort": ["sort_name_1", "sort_name_2", "sort_name_3", "sort_name_4", ...]
}
Пример:
{
"sort": ["manual_top", "serial", "subj_top", "rating_desc", "childrens", "title_asc"]
}
Допустимые правила сортировки, которые можно указать в массиве “sort”:
manual - сортировка в ручном режиме указанием порядка ресурсов в поле field_sort_manual (“ручная сортировка”). Правило при сортировке двух ресурсов срабатывает только если оба ресурса находятся в field_sort_manual. Типы ресурсов, разрешенных для ручной сортировки следует отметить на сайте в настройках поля field_sort_manual admin/structure/types/manage/subj/fields/field_sort_manual (см. https://elibsystem.ru/node/497).
manual_top - то же, что и manual, но при сравнении ресурсов если один указан в правилах сортировки, а второй нет, указанный в правилах поднимается вверх (т.е. все отсортированные ресурсы поднимаются вверх).
subj_top - все папки поднимаются вверх, не папки не трогаются. Т.к. папок обычно много, а на не папки сортировка не действует, после subj_top надо разместить еще правила сортировки.
rating или rating_desc - сортировка по рейтингу по убыванию (вначале с большим рейтингом).
rating_asc - сортировка по рейтингу по возрастанию (вначале с малым рейтингом).
childrens или childrens_desc - сортировка по числу вложенных (в папку) ресурсов по убыванию (вначале папки с большим числом вложенных ресурсов). Т.к. эта сортировка действует только на папки, после должно быть еще одно правило сортировки.
childrens_asc - сортировка по числу вложенных (в папку) ресурсов по возрастанию (вначале папки с малым числом вложенных ресурсов). Т.к. эта сортировка действует только на папки, после должно быть еще одно правило сортировки.
title или title_asc - сортировка по заглавию по возрастанию (a-z).
title_desc - сортировка по заглавию по убыванию (z-a).
serial или serial_desc - сортировка серии по году издания, тому, выпуску, дате издания (валидной) по убыванию (вначале новые). Работает только в папке с заданной серией (field_serial).
serial_asc - сортировка серии по году издания, тому, выпуску, дате издания (валидной) по возсрастанию (вначале старые). Работает только в папке с заданной серией (field_serial).
random - случайная сортировка.
Обратите внимание: при сортировке сравниваются два любых элемента и если при сравнении правило не может явно отдать предпочтение одному из сравниваемых элементов (например под правило сортировки ‘subj_top’ попали не папки, то будет применяться следующее правило из массива sort, если и оно не выберет какой элемент надо отсортировать в начало списка, будет применено следующее правило сортировки и т.д. по рекурсии, пока есть хоть одно правило.
Т.о. если вы хотите поднять папки, упорядочить папки по заглавию и отдельно ресурсы по заглавию, то правильно применять такой массив правил сортировки: [“subj_top”, “title”]. По нему вначале все будет разделено на папки и не папки (два списка) и список папок будет перед списком остальных ресурсов. Затем папки будут упорядочены по заглавию и остальные ресурсы упорядочены по заглавию.
Еще пример массива правил сортировок: [“subj_top”,”childrens”,”title”]. Здесь все папки окажутся выше остальных ресурсов (“subj_top”), дальше сортировка “childrens” отсортирует папки так, что в каких число вложенных ресурсов больше, те будут в списке раньше, затем у тех папок, у которых число вложенных ресурсов одинаково будут упорядочены по заглавию, а все не папки также упорядочены по заглавию.
Пример единственной сортировки по заглавию: [“title”].
При составлении правил сортировки учитывайте, что при сбросе кеша число вложенных ресурсов и рейтинг может быть не посчитан до следующего запуска перерасчета по CRON, поэтому всегда после сортировок “rating”, “rating_asc”, “childrens”, “childrens_asc” следует разместить правило, которое будет срабатывать всегда, например “title”.