Загрузка...

В Joomla нам доступно два новых менеджера, связанных с управлением настраиваемыми полями. Это Поля (Fields) и Группы полей (Field Groups). Данные менеджеры для материалов, пользователей и контактов является разными. Это означает, что для материалов есть свои менеджер полей и групп полей, для пользователей свои, и для контактов также свои. Между собой они не пересекаются.

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

Рассмотрим доступы к различным менеджерам:

  1. Поля/Группы полей для материалов: Материалы -> Менеджер материалов -> Поля/ Группы полей  в левом сайтбаре.
  2. Поля/Группы полей для категорий: Категории -> Менеджер Категорий -> Поля/ Группы полей  в левом сайтбаре.
  3. Поля/Группы полей для пользователей: Пользователи -> Менеджер Пользователей -> Поля/ Группы полей  в левом сайтбаре.
  4. Поля/Группы полей для контактов: Компоненты -> Контакты -> Поля/ Группы полей  в левом сайтбаре –> Выбран фильтр Контакт
  5. Поля/Группы полей для формы обратной связи: Компоненты -> Контакты -> Поля/ Группы полей  в левом сайтбаре –> Выбран фильтр Почта
  6. Поля/Группы полей для формы категорий контактов: Компоненты -> Контакты -> Поля/ Группы полей  в левом сайтбаре –> Выбран фильтр Категория

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

1 1

И еще пара дополнительных замечаний:

  1. На дополнительные поля не распространяется система контроля версий (во всяком случае, пока)
  2. Если вы создали дополнительные поля для материалов, но не видите их в форме добавления материала, перейдите в Система –> Общие настройки –> Материалы  –> Вкладка «Форма редактирования». Опция «Показывать параметры материала» должна быть включена.

Группы полей и их использование

Ничего особенно интересного в группах полей нет. Это что-то аналогичное категориям материалов для материалов, только проще. Группы позволяют более удобно разделять поля на группы, уж простите за тавтологию. Каждая группа полей, при создании материала, будет показываться отдельной вкладкой. Это может быть удобно, если полей много и нужно их как-то классифицировать:

2

Типы полей и их отображение на сайте

В настоящее время нам доступно 15 различных типов дополнительных полей. Это:

  • Календарь (calendar)
  • Флажки (Checkboxes)
  • Цвет (Color)
  • Редактор (Editor)
  • Целое (Integer)
  • Список (List)
  • Список изображений
  • Медиа (Media)
  • Переключатель (Radio)
  • SQL
  • Текст (Text)
  • Текстовое поле (Textarea)
  • URL (Url)
  • Пользователь (User)
  • Группы пользователей (Usergrouplist)

Каждый тип поля имеет как общие опции, так и свои уникальные.

Для начала рассмотрим общие опции, которые повторяются для всех типов полей:

  • Заголовок – заголовок поля. Показывается в менеджере поле, но не на сайте. Не путайте с названием поля (которое Label).
  • Тип  – позволяет выбрать тип поля (текст, чекбокс, изображение и т.д.)
  • Имя – имя используется для идентификации поля. Это что-то вроде алиасов для материалов, но только для дополнительных полей. Если не заполнить эту опцию, Joomla создаст имя автоматически, также, как это происходит с алиасом.
  • Название (Label) – Заголовок, который будет показываться рядом с полем. Именно эта опция является, фактически, лейблом поля на сайте. Если ваш сайт многоязычный, то в этом поле вы должны задавать не значение на определенном языке, а языковую константу, которой, в дальнейшем, можно будет задать различные значения для различных языков. Если язык на сайте у вас только один и других добавлять не планируется, можно заполнять эту опцию простым текстом. Если оставить ее пустой, текст будет взят из поля Заголовок.
  • Описание – Всплывающая подсказка, которая появляется при наведении курсора на название поля. Это работает только для поля в виде формы, т.е. еще не заполненного поля. Работает по аналогии с тем, как вы видите подсказки в самой Joomla. Здесь требуется соблюдать те же правила для многоязычности, что и в опции Название (Label).
  • Обязательно для заполнения – Опция устанавливает, является ли поле обязательным для заполнения.
  • Значение по умолчанию – Опция устанавливает значение поля по умолчанию. На него распространяются правила для многоязычности, описанные в опции Название (Label). В зависимости от типа поля значение по умолчанию может быть как текстом, так и индексом.
  • Группа поля – Здесь вы можете указать принадлежность данного поля к ранее созданной группе полей.
  • Категория – Здесь вы можете привязать поле к определенной категории материалов. Это удобно, если для материалов разных категорий требуется разные наборы полей.
  • Уровень доступа – Здесь, по аналогии с модулями, вы можете задать уровень доступа групп пользователей, которые смогут видеть данное поле.  С помощью этой опции вы можете, например, показывать поле только зарегистрированным пользователям или только администратору.
  • Placeholder – Здесь можно задать подсказку для ввода, которая будет отображаться внутри поля.
  • CSS-класс для показа – HTML-атрибут «class» для выведенного значения поля. Может быть задано несколько классов, перечисленных через пробел.
  • Редактировать класс – HTML-атрибут «class» для поля ввода значения. Может быть задано несколько классов, перечисленных через пробел.
  • Показывать заголовок поля – Эта опция устанавливает показывать или скрывать заголовок поля (Label) на сайте.
  • Показать в – Эта опция позволяет указать область отображения поля (фронтенд/бэкэнд/везде).
  • Автоматическое отображение – позволяет указать место, где по умолчанию будет отображаться значение поля в материале: перед заголовком материала / Перед текстом материала / После текста материала / Не показывать по умолчанию (актуально для переопределенных макетов, в которых вы сами вставляете место вывода поля).

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

ПОЛЕ «КАЛЕНДАРЬ (CALENDAR)»

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

ПОЛЕ «ФЛАЖКИ (CHECKBOXES)»

Позволяет добавить один или несколько чекбоксов, задав их названия и значения.

ПОЛЕ «ЦВЕТ (COLOR)»

Позволяет указать код цвета, либо выбрать цвет из палитры.

ПОЛЕ «РЕДАКТОР (EDITOR)»

Позволяет вводить текст через WYSIWYG-редактор.

ПОЛЕ «ЦЕЛОЕ (INTEGER)»

Позволяет выбрать одно или несколько значений из выпадающего списка целых чисел.

ПОЛЕ «СПИСОК (LIST)»

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

ПОЛЕ «СПИСОК ИЗОБРАЖЕНИЙ»

Позволяет выбрать из списка одно или несколько изображений.

ПОЛЕ «МЕДИА (MEDIA)»

Позволяет выбрать или загрузить изображение с помощью медиа-менеджера.

ПОЛЕ «ПЕРЕКЛЮЧАТЕЛЬ (RADIO)»

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

ПОЛЕ «SQL»

Позволяет выбрать значение из предопределенного списка значений, полученных с помощью пользовательского SQL-запроса. Запрос должен быть сформирован таким образом, чтобы он возвращал название предопределенного значения, как text и значение предопределенного значения, как value. Пример:

1
2
SELECT id as value, title as text
                FROM #__usergroups

ПОЛЕ «ТЕКСТ (TEXT)»

Обычное поле для ввода текста

ПОЛЕ «ТЕКСТОВОЕ ПОЛЕ (TEXTAREA)»

Поля для ввода текста размеров в несколько строк.

ПОЛЕ «URL (URL)»

Текстовое поле для ввода URL.

ПОЛЕ «ПОЛЬЗОВАТЕЛЬ (USER)»

Выбор одного из зарегистрированных пользователей из всплывающего окна. Сохраняться будет его ID

ПОЛЕ «ГРУППЫ ПОЛЬЗОВАТЕЛЕЙ (USERGROUPLIST)»

Позволяет выбрать одну или несколько групп пользователей из выпадающего списка.

Варианты вывода полей в разных местах страницы сайта

Наибольший интерес настраиваемые поля Joomla будут представлять для вас, если вы можете самостоятельно переопределить и отредактировать макет. Выводить поля так, как показано в примерах выше, скучно и некрасиво. Мы все понимаем, что если выводится дата, то она должна быть оформлена, например, с иконкой календаря, если это изображение, то оно тоже должно выглядеть соответствующе. Иными словами, разным поля присуща разная верстка и разное оформление.

Добиться этого просто, если вы немножко знаете PHP. Первым делом, переопределяем макет (в нашем примере – материала) в используемый шаблон Joomla. Для этого копируем файл:

components/com_content/views/article/tmpl/default.php

в директорию:

templates/ВАШ_ШАБЛОН/html/com_content/article/

и вносим дальнейшие изменения в уже переопределенных макет.

Важно знать, что все данные настраиваемых полей хранятся в:

  • $item->jcfields – для материала в списке материалов категории (на странице материалов категории)
  • $this->item->jcfields – для материала на странице материала

Подставив конструкцию в переопределенный макет (в нашем примере – материала):

1
<pre><?php print_r($this->item->jcfields); ?></pre>

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

Фильтрация материалов по настраиваемым полям

В вопросе фильтрации материалов, пользователей и др., разработчики Joomla пока, к сожалению, ничего не предлагают. Почитать обсуждение по этому вопросу можно здесь (англ.) . В двух словах: в ближайшее время стандартный фильтр по настраиваемым полям ждать не стоит. Может быть в Joomla 4, но и то далеко не факт.

Но есть и хорошие новости: когда есть спрос, быстро появляются сторонние расширения. Так уже есть сторонний фильтр, умеющий производить фильтрацию по настраиваемым полям Joomla. Посмотреть можно здесь. Думаю, в ближайшее время появятся и другие расширения фильтрации по настраиваемым полям Joomla, т.к. тема крайне актуальная.

{

}