В этой статье мы рассмотрим все типы настраиваемых полей, доступных в Joomla, а также примеры их использования на сайте.
Joomla Custom Fields – настраиваемые поля в Joomla

Начиная с версии Joomla 3.7, в CMS добавлен функционал настраиваемые полей (Custom Fields). Это означает, что теперь вы можете добавить к материалам, категориям, пользователям (профилям пользователей) и контактам Joomla дополнительные поля разных типов. Эти поля можно будет заполнять при создании контента, и их значения будут отображаться как его часть.

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

Введение в управление настраиваемыми полями Joomla.

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

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

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

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

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

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)»

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

  • Значения Checkbox – Позволяет создать несколько чекбоксов, их названия и значения
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Цвет (Color)»

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

Нет

Вид при создании
Вид при отображении
Вид при заполнении

Поле «Редактор (Editor)»

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

  • Показать кнопки – показывать ли дополнительные кнопки-плагины под редактором
  • Скрыть кнопки – если кнопки показываются, какие из них требуется отключить
  • Ширина – ширина редактора. По умолчанию 100%.
  • Высота – высота редактора. По умолчанию 100%.
  • Фильтр – позволяет выбрать один из вариантов фильтрации данных от отсутствия фильтрации, до превращения данных в плоский текст.
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Целое (Integer)»

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

  • Мультивыбор – одно или несколько значений можно выбирать.
  • Первый – первое значение списка.
  • Последний – последнее значение списка.
  • Шаг – шаг значений списка.
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Список (List)»

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

  • Мультивыбор – Одно или несколько значений можно выбирать.
  • Значения списка – Названия значений списка и сами значения.
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Список изображений»

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

  • Директория – Путь к каталогу, из которого выбираются изображения
  • Мультивыбор – Одно или несколько значений можно выбирать.
  • Класс изображения – CSS-класс, который будет добавлен к изображению
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Медиа (Media)»

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

  • Директория – путь к каталогу, из которого выбираются изображения
  • Предварительный просмотр – будет ли при выборе изображения показываться его миниатюра и если да, то каким образом.
  • Класс изображения – CSS-класс, который будет добавлен к изображению
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Переключатель (Radio)»

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

  • Значения переключателя – Предопределенные значения, из которых можно делать выбор.
Вид при создании
Вид при отображении
Вид при заполнении

Поле «SQL»

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

SELECT id as value, title as text
				FROM #__usergroups

  • Запрос – SQL-запрос к базе данных
  • Мультивыбор – одно или несколько значений можно выбирать
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Текст (Text)»

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

  • Фильтр – Позволяет выбрать один из вариантов фильтрации данных от отсутствия фильтрации, до превращения данных в плоский текст
  • Максимальная длина – Максимальное количество символов, которое может быть введено
Вид при создании
Вид при отображении
Вид при заполнении

Поле «Текстовое поле (Textarea)»

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

  • Строки – Высота области текста в строках
  • Колонки – Ширина области текста в символах
  • Максимальная длина – Максимальное количество символов, которое может быть введено
  • Фильтр – Позволяет выбрать один из вариантов фильтрации данных от отсутствия фильтрации, до превращения данных в плоский текст
Вид при создании
Вид при отображении
Вид при заполнении

Поле «URL (Url)»

Текстовое поле для ввода 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 – для материала на странице материала

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

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

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

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

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

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

Заключение

Подводя итоги, хочется сказать следующее:

  1. Настраиваемые поля в Joomla, которые, помимо всего прочего, довольно легко интегрируются и в сторонние расширения, это, однозначно, очень хорошая и полезная функция. Теперь вы можете использовать ее на своем сайте, и при том совершенно бесплатно.
  2. В сложных проектах настраиваемые поля Joomla не заменят вам полноценную CCK (конструктор контента), вроде SEBLOD. Это нужно понимать. Не стоит надеяться решить сложные задачи с помощью настраиваемых полей Joomla. Лучше сразу использовать CCK, созданные специально для сложных задач.
  3. Если вы имеете некоторый опыт в разработке сайтов, знаете HTML, CSS и немного PHP, то настраиваемые поля Joomla станут вам хорошим подспорьем, позволяющим существенно расширить функционал сайта.

Понравилась статья? Сохраните себе на стену:

Ваша оценка материала очень важна для нас. Просим вас оценить статью или оставить отзыв в комментариях.

Комментарии  

0 # несколько значенийАлексей 22.06.2017 15:42
Спасибо за статью!
А как сделать несколько значений в одном поле?
Допустим если я хочу добавить сайты к статье, но сайтов может быть от 1 до 5 и не известно сколько
Ответить | Ответить с цитатой | Цитировать
+1 # RE: несколько значенийWedal 23.06.2017 05:03
Алексей, если у вас заранее предопределенный набор сайтов, то вы можете использовать поле типа List с включенной опцией Мультивыбор.
Интереснее дело обстоит, когда вводимые значения заранее неизвестны. Здесь, по умолчанию, Joomla пока не может предложить готового решения. В SEBLOD такое поле называется FieldX - поле, в котором вы можете добавлять и удалять опции. Нечто подобное виду при создании поля List, но только такой вид там при заполнении.
Здесь же, в Joomla, мы можем применить такую хитрость: используем поле Textarea. В нем будем вводить URL-лы, по одному в каждой строке. Далее, в макете статьи получим значение этого поля в виде текста и разобьем его на массив условно считая, что каждый элемент массива - это запись в новой строке. Ну а далее выводите элементы массива списком.
Правда в этом способе есть минус - так будут показаны только URL, но не полноценные анкорные ссылки.
Ответить | Ответить с цитатой | Цитировать
0 # Спасибо, и продолжайте обзорыAlex Teplo 11.06.2017 02:12
Большое спасибо за обзоры. Пожалуйста, продолжайте вентилировать джумловские темы как можно дольше, и да пребудет с вами сила! ) Спасибо ещё раз, очень полезно!
Ответить | Ответить с цитатой | Цитировать
0 # RE: Joomla Custom Fields – настраиваемые поля в JoomlaKjuby 08.06.2017 20:20
Спасибо за свежий обзор. А не могли бы ли Вы по подробнее раскрыть п. 2 заключения: очень интересно что можно сделать с помощью полей Joomla, а что нельзя?
Ответить | Ответить с цитатой | Цитировать
0 # RE: Joomla Custom Fields – настраиваемые поля в JoomlaWedal 09.06.2017 05:44
Kjuby, на данный момент, основными ограничениями дополнительных полей Joomla по сравнению с полноценной CCK является:
1) Отсутствие возможности создавать произвольные типы контента
2) Отсутствие поиска/фильтрации по дополнительным полям

Из этого нужно исходить при выборе инструмента.
Если вам нужно просто добавить несколько полей к статьям. Например, ярлыки, цены, дополнительные изображения и всё в этом духе, и вы не нуждаетесь в фильтрации статей по этим полям, то можете смело использовать Joomla Custom Fields. Если же вы хотите создать полноценный тип контента, к примеру каталог книг с возможностью фильтрации по автору, году, и др. параметрам, то вам нужно использовать CCK, например, SEBLOD.
Ответить | Ответить с цитатой | Цитировать
0 # Joomla Custom Fields – настраиваемые поля в JoomlaVal 08.06.2017 13:52
Без конкретных примеров непонятно для чего это все нужно...
Ответить | Ответить с цитатой | Цитировать
0 # RE: Joomla Custom Fields – настраиваемые поля в JoomlaWedal 09.06.2017 05:51
Val, под каждый тип поля придумать пример нужно еще постараться.
Попробую привести вам простой общий пример:
Видите после этой статье, перед комментариями, есть три блока: Социальные кнопки, рейтинг и другие статьи серии? Предположим, вы хотите сделать нечто подобное у себя на сайте, но вам нужно, чтобы эти блоки выводились не у всех статей, а только у тех, которые вы укажите. Раньше это было сделать довольно сложно. Теперь же очень просто:
1) Создаете 3 дополнительных поля типа "Переключатель". В каждом добавляете по 2 опции: Да и Нет.
2) Вносите в макет материала после текста статьи 3 дополнительных условия: "Если опция 1 (2 или 3) равна Да, то показываем блок 1 (2 или 3)".

После этих действий, при создании статьи, у вас появятся три дополнительные опции, которыми вы легко сможете регулировать вывод соответствующих блоков. Разве это не прекрасно? :-)
Ответить | Ответить с цитатой | Цитировать
0 # Joomla Custom Fields – настраиваемые поля в JoomlaVal 09.06.2017 11:44
Спасибо за интересную статью и за быстрый ответ. Надо попробовать.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Joomla Custom Fields – настраиваемые поля в JoomlaALEHAN 05.06.2017 17:23
Спасибо за статью!!! Очень рассчитываю что Вы не остановитесь, и напишите еще пару тройку статей, раскрывающих потенциал этого компонента на конкретных рабочих примерах.
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий

Для отправки комментария введите код с картинки:
Защитный код
Обновить

Вверх