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

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

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

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

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

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

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

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

Вкладка “Основное”

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

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

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

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

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

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

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

Читайте также:  Бесплатный видеокурс «Создаем сайт на Joomla 3.2»

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

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

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

Настройка поля дополнительных полей 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”. Данный цикл необходимо объявить выше вывода полей. А второе поле вывести, например, так:

<?php // 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 – название вашего поля.

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

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

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

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

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

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

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

Система Orphus

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

  • Алексей Ноя 26, 2018 в 10:33

    Добрый день! Спасибо за статью!
    Но к сожалению у меня шаблон Yootheme Pro и данная схема не работает…
    Не знаете как это решить в моем случае?

    • Заур Магомедов
      Заур Магомедов Ноя 26, 2018 в 18:40

      Добрый… Не могу сказать, смотреть надо…

  • Вадим Окт 26, 2018 в 22:36

    Здравствуйте, Заур. Ваш метод действительно работает. все делается за пол часа. Подскажите пожалуйста: я вывожу несколько своих допполей в макете блога (где превью материалов), тут у меня выводятся текстовое поле и изображение. Так вот, можно ли как-то сделать эти поля урлами на материал? Клик по изображению – попадаешь на статью, клик по названию – попадаешь на статью….аналогично дефолтному превью изображения и названию материала.

    • Заур Магомедов
      Заур Магомедов Ноя 01, 2018 в 22:10

      А чем вас дефолтные поля не устраивают?

  • Руслан Окт 16, 2018 в 12:07

    А можно добавить в список материалов категории дополнительные поля?

    • Заур Магомедов
      Заур Магомедов Окт 16, 2018 в 14:28

      В сам материал? Можно…

  • Алекс Июл 24, 2018 в 4:50

    Здравствуйте, а к какому пункту нужно создавать предопределение в случае когда нужно вывести доп поле в краткой новости?

    • Заур Магомедов
      Заур Магомедов Июл 24, 2018 в 7:12

      Вы имеете ввиду в каком шаблоне вывода материала?

      • Алекс Июл 27, 2018 в 16:07

        Есть страница блога(то есть список материалов) в которой нужно выводить созданное поле, какой файл нужно подредактировать, чтобы была такая возможность?!

        • Заур Магомедов
          Заур Магомедов Июл 27, 2018 в 16:15

          Создаете переопределение материалов com_content в своем шаблоне. Далее идете в /свой шаблон/html/com_content/category/blog_item.php и вносите туда изменения.

          • Алекс Июл 28, 2018 в 3:44

            Отлично, спасибо, чёто сам протупил! Подскажите как сделать отдельный макет?

  • Елена 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.

              • Алексей мая 25, 2018 в 13:24

                Поля в модуле выводятся стандартными средствами. Если в настройках модуля включен “Триггер события плагина”. За это в файле _item.php отвечает строчка

                <?php echo $item->beforeDisplayContent; ?>

                Вот только таким образом они выводятся все сразу. Разделить бы их 🙂

              • Евгений Сен 26, 2018 в 18:37

                Скажите, что нужно поправить в ядре? Чтобы вывести поля в модуле

  • Леон Еремян Дек 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]