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

Чтобы сделать свой макет редактирования материала в Joomla нужно:

1️⃣ переопределить файл макета формы редактирования administrator/components/com_content/tmpl/article/edit.php в свой шаблон

2️⃣ закомментировать строку

// echo LayoutHelper::render('joomla.edit.params', $this); 

Эта строка выводит поля материала дополнительными табами.

3️⃣ Переиначить вёрстку как надо, убрать лишние поля

4️⃣ Не потерять строку

echo $this->form->renderControlFields();

она нужна.

5️⃣ Получить поля в удобоваримом виде. Я предлагаю в массив.

$fields = [];
foreach ($this->form->getFieldsets() as $group => $fieldset) {
    foreach ($this->form->getFieldset($group) as $field) {
            $fields[$field->getAttribute('name')] = $field;
    }
}

мы получаем тут все филдсеты, для каждого филдсета - все поля. Собираем их в массив, где ключ - системное имя поля.

6️⃣ Рендерим нужное поле

 if($fields['coords'])  {
    echo $fields['coords']->renderField();
}

7️⃣ Если нужна совсем своя вёрстка - лейбл и инпут отдельно, то получаем их магическим методом __get().

echo $fields['pricelist']->__get('label'); // тут название свойства поля

8️⃣ Если нам нужно поле целиком, но со своими классами - устанавливаем свойства с помощью магического метода __set().

<?php
if($fields['pricelist']) :
    $fields['pricelist']->__set('labelclass','h3 mt-4');
    ?>
    <?php  echo $fields['pricelist']->renderField(); ?>
<?php endif; ?>

Что мы теряем? - Автоматический рендер полей, если они были добавлены в админке. Ну а получаем гибкость в формировании макета редактирования / создания материала с фронта.

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

94 Всего расширений
11 Категорий
458 Выпущено версий
481065 Всего скачиваний
Корзина
Корзина пуста