Документация Radical Multi Field

Как добавить свой шаблон

Для этого надо создать каталог plg_fields_radicalmultifield. Соответственно полный путь выглядеть так: <путь до сайта>/templates/<название вашей темы>/html/plg_fields_radicalmultifield

Названия шаблонов

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

Внутренности шаблона

Примеры всех начальных шаблонов вы можете просмотреть в этой папке: просмотреть

Рассмотрим стандартный шаблон "galleryforuikit3". Просмотреть файл

  1. defined('_JEXEC') or die;

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

  2. if (!$field->value) { return; }

    Если у нас значения поля пустое, то нет смысла далее его обрабатывать и мы завершаем выполнение нашего шаблона.

  3. $values = json_decode($field->value, JSON_OBJECT_AS_ARRAY);

    Сабформа джумлы сохраняет все значения в виде JSON, поэтому надо декодировать эту строку для дальнейшей работы. Примечание: "JSON_OBJECT_AS_ARRAY" - это константа php для работы функций, которые обрабатывают JSON. В данном случае эта константа говорит, чтобы распарсенный JSON вернуть в виде массива. Все константы вы можете просмотреть по этой ссылке: http://php.net/manual/ru/json.constants.php

  4. $listtype = $this->getListTypeFromField($field);
    В классе плагина поля заготовлен метод getListTypeFromField, который возвращает все заданные поля для сабформы. Вид массива, который возвращается:
    [ 
            [ 'title' => 'заданное имя в сабформе', 'type' => 'какое поле указано в сабформе' ],
            [ 'title' => 'заданное имя в сабформе', 'type' => 'какое поле указано в сабформе' ] 
    ]
  5. <div class="uk-child-width-1-5@m" uk-grid uk-height-match="img" uk-lightbox="animation: slide">
    <?php foreach ($values as $key => $row): ?>

    <div>
    <a class="uk-inline" href="<?= $row['image'] ?>" data-caption="<?= $row['alt'] ?>">
    <img src="<?= $row['image']?>" alt="<?= $row['alt'] ?>"/>
    </a>
    </div>

    <?php endforeach; ?>
    </div>

    Здесь указана сетка для front-framework uikit 3.x. Здесь проходится весь массив значений, внутри массива находятся ассоциативный массив, где ключ - это параметр "Имя поля для шаблона" из настроек поля.

После создания файла он отобразится в списке поля "Шаблон для сайта" при редактировании поля.


Настройки импорта файлов


API поля

Как подключить?

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

JLoader::import('radicalmultifieldhelper', JPATH_ROOT . '/plugins/fields/radicalmultifield');

Проверка

Проверку значений вы можете делать, например, в вашем шаблоне.

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

<?php
jimport('radicalmultifieldhelper', JPATH_ROOT . '/plugins/fields/radicalmultifield'); //подключаем хелпер
$user = JFactory::getUser(); //получаем текущего пользователя
$findMy = RadicalmultifieldHelper::check(119, $user->id, ['name' => $article->title], false);         

Разберем аргументы метода RadicalmultifieldHelper::check

  • Первый аргумент - это ID созданного поля
  • Второй аргумент - это ID записи, к чему привязано поле (пользваоель, материал или контакт)
  • Третий аргумент - это массив, в котором указывается что мы ищем.
  • Четвертый аргумент - булевское значение, если надо чтобы по всем совпало значениям в одной строке, то ставим true

Метод возвращает массив вида:

return [
            'find' => 'булевское значение, нашлось значение или нет',
            'count' => 'количество нахождений',
];

Добавление

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