Поля

Введения в поля в 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",
"isHeaderOverflow":false,
"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",
"sort": ["subj_top", "rating", "childrens", "title"]
"catalogTheme":"auto"
}

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

У field_config есть значения по умолчанию. Пользовательское значение любой опции field_config переопределяет значение по умолчанию.

Если field_config для текущей ноды найти через наследование не удалось, field_config будет взять из ноды корня каталога (имеет синоним “catalog” и отображается на https://elis.example.com/catalog). Если и у ноды корня каталога field_config не существует, будут использоваться значения по умолчанию.

Т.о. для переопределения настроек по умолчанию для всего сайта задайте field_config у корневой ноды каталога (что по пути https://elis.example.com/catalog).

Темизация

Возможные параметры field_config:

chromeColor - основной цвет сайта в шестнадцатеричном виде #FFFFFF. По умолчанию берется из настроек темы сайта.

textColor - цвет текста в шестнадцатеричном виде #FFFFFF. По умолчанию берется из настроек темы сайта.

headerUrl - URL-ссылка на веб-контент, рисунок или видео, которые будут заниматься всю шапку и иметь высоту 144 пикселя с адаптивной шириной. При использовании изображений или веб-контента следует обеспечить работоспособность при низких разрешениях при помощи медиа-запросов. Если в веб-содержимом есть гиперссылки, они должны иметь атрибут target=”_blank” для открытия всех ссылок в новом окне браузера.

isHeaderOverflow - может ли контент перекрывать шапку сайта. Булевое значение (true или false без кавычек). По умолчанию - true.

logoPrimaryUrl - URL-ссылка на изображение логотипа, размещенного в шапке слева. Изображение должно иметь высоту 144 пикселя и может иметь произвольную ширину. Формат изображения - png, jpg, svg. По умолчанию не задано.

logoPrimaryHref - Ссылка, на которую при клике по левому логотипу перейдет пользователь. По умолчанию - не задано.

logoSecondaryUrl - URL-ссылка на изображение логотипа, размещенного в шапке справа. Изображение должно иметь высоту 144 пикселя и может иметь произвольную ширину. Формат изображения - png, jpg, svg. По умолчанию не задано.

logoSecondaryHref - Ссылка, на которую при клике по правому логотипу перейдет пользователь. По умолчанию - не задано.

catalogTheme - Тема для папок в каталоге. Может принимать одно из значений “auto”, “minimal”, “tile”, гду “auto” - автоматический выбор темы, “minimal” - минималистичная тема, “tile” - плиточный интерфейс.

Сортировка

sort - Массив строковых обозначений правил сортировки. По умолчанию: [“rating_desc”, “childrens”, “title_asc”]

Синтаксис:

{
"sort": ["sort_name_1", "sort_name_2", "sort_name_3", "sort_name_4", ...]
}

Пример:

{
"sort": ["subj_top", "rating_desc", "childrens", "title_asc"]
}

Допустимые правила сортировки, которые можно указать в массиве “sort”:

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 - сортировка серии по году издания, тому, выпуску, дате издания (валидной) по убыванию (вначале новые).

serial_asc - сортировка серии по году издания, тому, выпуску, дате издания (валидной) по возсрастанию (вначале старые).

Обратите внимание: при сортировке сравниваются два любых элемента и если при сравнении правило не может явно отдать предпочтение одному из сравниваемых элементов (например под правило сортировки ‘subj_top’ попали не папки, то будет применяться следующее правило из массива sort, если и оно не выберет какой элемент надо отсортировать в начало списка, будет применено следующее правило сортировки и т.д. по рекурсии, пока есть хоть одно правило.

Т.о. если вы хотите поднять папки, упорядочить папки по заглавию и отдельно ресурсы по заглавию, то правильно применять такой массив правил сортировки: [“subj_top”, “title”]. По нему вначале все будет разделено на папки и не папки (два списка) и список папок будет перед списком остальных ресурсов. Затем папки будут упорядочены по заглавию и остальные ресурсы упорядочены по заглавию.

Еще пример массива правил сортировок: [“subj_top”,”childrens”,”title”]. Здесь все папки окажутся выше остальных ресурсов (“subj_top”), дальше сортировка “childrens” отсортирует папки так, что в каких число вложенных ресурсов больше, те будут в списке раньше, затем у тех папок, у которых число вложенных ресурсов одинаково будут упорядочены по заглавию, а все не папки также упорядочены по заглавию.

Пример единственной сортировки по заглавию: [“title”].

При составлении правил сортировки учитывайте, что при сбросе кеша число вложенных ресурсов и рейтинг может быть не посчитан до следующего запуска перерасчета по CRON, поэтому всегда после сортировок “rating”, “rating_asc”, “childrens”, “childrens_asc” следует разместить правило, которое будет срабатывать всегда, например “title”.