< Заур Магомедов />

профессиональный верстальщик и блоггер

Мое хобби - разработка сайтов, но со временем это переросло в постоянный и стабильный источник дохода.

Заур Магомедов
Главная » Joomla » Дополнительные поля в Joomla 3.7.+

Дополнительные поля в Joomla 3.7.+

Дополнительные поля в Joomla 3.7.+

Пост был обновлен: Окт 18, 2017

Доброго времени суток всем! В данном посте хочу рассмотреть некоторую особенность, которая появилась в Joomla, начиная с версии 3.7 — это дополнительные поля в материалах. Считаю это полезным дополнением к стандартному компоненту материалов com_content. Ранее приходилось из-за нескольких полей устанавливать тяжеловесные конструкторы контента (CCK) и все для того, чтобы пользователю было легче работать в админке. В данной статье как раз рассмотрим как создать дополнительные поля в материалах и как вывести их во внешнем сайте.

Также, как и материалы поля объединяются в группы, это своего рода категории. Для того,чтобы создать группу полей идем в админке Материалы -> Группы полей. Создаем группу. Далее, создаем сами поля. Здесь уже по более опций, пройдемся по основным.

Вкладка «Основное»

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

Тип — выбираем тип поля: Текст (text), Текстовое поле (textarea), Url, Календарь и т.д. Не буду здесь разбирать в подробностях, т.к. ничего сложного в них нет и настраиваются все по одному принципу.

Имя — вводим алиас поля латиницей. Это своего рода индефикатор поля и он должен быть уникальным.

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

Описание — вводим описание поля.

Обязательно — если данное поле будет обязательным при создании материала, то ставим переключатель «Да».

Значение по умолчанию — можете ввести то значение, которое должно быть подставлено по умолчанию в данное поле.

Читайте также:  Как установить Joomla на локальный сервер

Фильтр — здесь выбираем параметр фильтрации вводимых данных, например, вы хотите, чтобы данное поле принимало только целые числа. Данную фильтрацию можно определить и глобально в настройках плагина данного типа поля.

Максимальная длина — можете ограничить длину вводимых символов.

Категория — в правой части экрана выбираем категорию, для которых должно быть доступно создаваемое поле.

Настройка поля дополнительных полей Joomla

Вкладка «Параметры»

Placeholder — это подсказка для поля. Например, можете ввести подсказку для вашего контент менеджера.

CSS-класс для показа — можете ввести свой класс поля для переопределения стиля в css.

Заголовок поля — управляет выводом заголовка поля на сайте.

Автоматическое отображение — вот эта полезная опция на мой взгляд. Есть предустановленные настройки (на момент написания статьи значения не переведены на русский язык):

  • After Title — показать поле после заголовка;
  • Before Display — показать перед текстом;
  • After Display — показать после текста;
  • Do not automatically display — не показывать автоматически поле. Данная опция предусматривает вывод поля в шаблоне сайта посредством кода. Об этом поговорим ниже.

Настройка параметров дополнительных полей  Joomla

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

заполнение доп. полей в админке Joomla

А вот как данное поле выглядит на сайте.

вывод доп. поля Joomla на сайте

Название поля я сделал жирным через стили CSS. Сразу скажу, что через автоматический вывод у нас нет возможности кастомизировать шаблон вывода полей. Это возможно сделать без автоматического вывода.

Вывод дополнительных полей материалов в шаблоне Joomla — ручной режим

Итак, если вам не подходит предустановленные настройки вывода полей или вы хотите просто править html-шаблон полей, то есть возможность вывести поля в любом месте шаблона материала и обрамить их какими угодно тегами. Для вывода поля в ручном режиме необходимо сначала отключить автоматический показ поля в параметрах. Если этого не сделать, то поля у вас будут просто дублироваться.

Читайте также:  Как обновить Joomla 2.5 до Joomla 3.x.x?

запрет автоматического показа поля joomla

Далее создаем переопределение шаблона вывода материала для типа «Article«. Если у вас еще нет переопределения шаблона материалов com_content, то идем в админке Расширения -> Шаблоны — > В правой колонке «Шаблон» выбираем ваш шаблон -> Создать переопределение -> com_content -> article. 

переопределение com-content joomla

После этих действий в папке вашего шаблона должна появиться следующая директория с файлом Ваш шаблон -> html -> com_content -> article — default.php. Вот с данным файлом и будем работать. Открываем файл шаблона материала и в нужном месте вставляем код для вывода поля. Я вставил до кода вывода текста:

<?php echo $this->item->text; ?>

Код вывода поля

<?php 
// GET CUSTOM FIELDS
    $myCustomFields = array();
    foreach($this->item->jcfields as $field) {
        $myCustomFields[$field->name] = $field->value;
} 
// RECOVER CUSTOM FILED NAME
    if (isset($myCustomFields['field-1']) and !empty($myCustomFields['field-1'])) : ?>
        <div class="field">
            <div class="field__name">Название поля:</div>
            <div class="field__value"><?php echo $myCustomFields['field-1']; ?></div>
        </div>
<?php endif; ?>

Вместо «field-1» подставляете ваш псевдоним поля (первый скриншот настроек, поле «Имя»). Вот как это выглядит на примере — демо.

Если вы хотите вывести более одного поля, то нет необходимости заново копировать цикл «foreach». Данный цикл необходимо объявить выше вывода полей. А второе поле вывести, например, так:

// RECOVER CUSTOM FILED NAME
    if (isset($myCustomFields['field-2']) and !empty($myCustomFields['field-2'])) : ?>
        <div class="field">
            <div class="field__name">Название поля:</div>
            <div class="field__value"><?php echo $myCustomFields['field-2']; ?></div>
        </div>
<?php endif; ?>

Вместо «field-2» — название вашего поля.

На этом завершу. Всем удачи, всем пока!

Пост был обновлен: Окт 18, 2017

Заур Магомедов
Заур Магомедов

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

У меня вы можете:

Оцените пост:

1 балл2 балла3 балла4 балла5 баллов (4 оценок, среднее: 5,00 из 5)
Загрузка...

Проверка орфографии

Система Orphus

18 комментариев к статье "Дополнительные поля в Joomla 3.7.+"

  • Елена Elena Апр 10, 2018 в 1:04

    Здравствуйте.
    А есть возможность добраться до значения поля jcFields текущей отображаемой статьи из файла index.php шаблона сайта? Оно нужно в head, поэтому шаблоны статей или категорий совсем не подходят.

    • Заур Магомедов
      Заур Магомедов Апр 10, 2018 в 1:07

      Если трюк с кодом как в шаблоне статей не проходит в index.php шаблона, то можно написать дополнительный запрос в Бд и сделать выборку нужных полей.

      • Елена Elena Апр 10, 2018 в 8:02

        Нет, если совсем как в шаблоне статьи +- получается совсем по нулям. А с «бубном» максимум, что получилось — полный список параметров самого поля, включая его имя (все то, что видим и вводим в редакторе полей в админке), а вот значения нет. О БД сразу подумала, но это уже край 🙂

        • Заур Магомедов
          Заур Магомедов Апр 10, 2018 в 15:48

          Почему край? Если не знаете API Joomla то только так.

  • Василий Колодин Дек 19, 2017 в 0:34

    А как вывести доп.поле в модуле?
    Допустим, я кастомизирую дефолтный модуль для вывода последних/популярных/избранных материалов. У материала есть набор своих полей. Мне нужно часть из этих полей вывести в модуле. Как их вызвать?
    Спасибо!

    • Заур Магомедов
      Заур Магомедов Дек 19, 2017 в 0:47

      Вы родной модуль Joomla используете или сторонний какой-то?

      • Василий Колодин Дек 19, 2017 в 0:55

        Родной.
        В частности: mod_articles_category

        • Заур Магомедов
          Заур Магомедов Дек 19, 2017 в 1:12

          В модулях вывести не так просто, как оказалось. Нужно править файл helper.php, но он при первом же обновлении затрется. Сейчас сразу я не могу вам сказать, нужно попробовать сделать, протестировать, а потом уже дополнить статью.

          • Дмитрий Бабкин мая 04, 2018 в 11:33

            Добрый день. Подскажите пожалуйста, вопрос с выводом дополнительных полей в модуле не решён? Очень бы хотелось вывести в mod_articles_news.

            • Заур Магомедов
              Заур Магомедов мая 04, 2018 в 12:32

              Добрый день. Поля в модулях можно вывести, но нужно править ядро модуля, что является не совсем логичным, при обновлении все затрется. Еще ни в одном модуле материалов (в том числе и сторонних) не видел поддержку доп. полей материалов Joomla.

  • Леон Еремян Дек 17, 2017 в 0:40

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

    • Заур Магомедов
      Заур Магомедов Дек 17, 2017 в 1:45

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

  • Максим Дек 13, 2017 в 20:10

    Спасибо за материал. Можно ли новые поля, добавленные к профилю, вывести в сообщение о регистрации пользователя?

    • Заур Магомедов
      Заур Магомедов Дек 13, 2017 в 20:12

      Насколько я знаю эти поля можно вывести в категориях, материалах, контактах, метках. В форме регистрации, не уверен, но вроде нет. По крайней мере я пробовал.

  • Дмитрий Дек 06, 2017 в 9:42

    Возник один вопрос. как очистить значение поля от лишних тегов? например поле media выводится:

    <img src="/images/img.jpg">

    а как сделать, чтобы осталось только

    /images/img.jpg

    ?

    • Заур Магомедов
      Заур Магомедов Дек 06, 2017 в 15:18

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

  • Vadim Окт 29, 2017 в 3:41

    Здравствуйте! Если я правильно понял, в Joomla поля можно вывести только в конкретно той статье где они же и прописаны. А как вывести поле из другой статьи? К примеру прайс цен.

    • Заур Магомедов
      Заур Магомедов Окт 29, 2017 в 10:07

      Здравствуйте. Можно попробовать вывести в ручном режиме поле, указав в коде индефикатор поля.

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

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Если вы хотите вставить в текст комментария код HTML, CSS, PHP, JavaScript, то обрамите код в соответствии необходимыми тегами:

  • Код HTML - тегами [html] ваш код... [/html]
  • Код CSS - тегами [css] ваш код... [/css]
  • Код PHP - тегами [php] ваш код... [/php]
  • Код JavaScript - тегами [code lang="js"] ваш код... [/code]