Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 1021 Просмотров
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Кто то делал дополнительное поле в описании категории товара


подскажите как добавить такое поле или ссылку на материал подкиньте
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #1 : 09.02.2016, 11:39:50 »
если нужно описание разбить на два (например, до списка товаров и после), то используй разделитель (например тэг <hr>). перед выводом делай разбор строки
Код
$desc = explode('<hr>', $this->category->category_description);

получишь два блока
$desc[0]
$desc[1]
вывести которые можно в разных местах
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #2 : 09.02.2016, 11:49:40 »
То есть в /html/com_virtuemart/category/default.php пишу так
Код
<div class="category_description">
<?php
//echo $this->category->category_description;
$desc = explode('<hr>', $this->category->category_description);
echo $desc[0];
?>
</div>
и ниже товаров
Код
<div class="category_description">
<?php
echo $desc[1];
?>
</div>
так
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #3 : 09.02.2016, 11:59:29 »
именно
только <hr> нужно будет проставить в описании всех категорий, даже там, где дробить описание не нужно

описание 1 <hr> описание 2
описание 1 <hr>
<hr> описание 2

ну и само собой перед выводом делать проверку
Код
if (!empty($desc[0])){
echo $desc[0]
}

Код
if (!empty($desc[1])){
echo $desc[1]
}
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #4 : 09.02.2016, 12:10:09 »
То есть в старых где сейчас есть описание надо будет в конец добавлять <hr>
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #5 : 09.02.2016, 13:20:26 »
Таким способом не помогло
Код
<div class="category_description">
<?php
echo $this->category->category_description;
// $desc = explode('<hr>', $this->category->category_description);
//    if (!empty($desc[0])){
//     echo $desc[0]
//          }
?>
</div>
_____________________________________________________
<div class="category_description">
<?php
//if (!empty($desc[1])){
//echo $desc[1]
//}
?>
</div>
Просто пустую страницу показал.
Текст я хочу поделить на этой странице можно было бы его просто под товары но вот как с другими категориями тут вот баннер есть и получается что он также сползет в низ.
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #6 : 09.02.2016, 13:28:24 »
пустая страница из-за ошибки синтаксиса, что-то не то пишешь
покажи код шаблона полностью
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #7 : 09.02.2016, 13:34:45 »
Спойлер
[свернуть]
*

fsv

  • Moderator
  • 2781
  • 410 / 2
Re: доп поле в категории товара
« Ответ #8 : 09.02.2016, 13:39:59 »
В старых не надо в описание добавлять. Если в тексте нет вашего разделителя, весь текст будет в первом элементе получаемого массива.
В качестве разделителя не используйте тег, используйте символ, который вы в описании точно не будете использовать. Например, | .
P.S. код под спойлером не смотрел, способ рабочий, учите азы.
Веб-разработка: заказ. Только новая разработка.
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #9 : 09.02.2016, 13:44:39 »
Код
<div class="category_description">
  <?php
    if (!empty($this->category->category_description)) {
      $desc = explode('<hr>', $this->category->category_description);
      if (!empty($desc[0])){
        echo $desc[0];
      }
    }
  ?>
</div>
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #10 : 09.02.2016, 13:49:35 »
А вторую часть так и оставляю
Код
<div class="category_description">
<?php
if (!empty($desc[1])){
echo $desc[1]
}
?>
</div>
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #11 : 09.02.2016, 13:51:08 »
В старых не надо в описание добавлять. Если в тексте нет вашего разделителя, весь текст будет в первом элементе получаемого массива.
думаю, в этом будет и проблема. верху должен быть баннер на некоторых страницах, а основной текст - внизу - на всех страницах
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #12 : 09.02.2016, 13:52:15 »
А вторую часть так и оставляю

нет, так же как верхнюю только с $desc[1]
*

fsv

  • Moderator
  • 2781
  • 410 / 2
Re: доп поле в категории товара
« Ответ #13 : 09.02.2016, 13:55:48 »
Код
if (!empty($desc[1])){
Если не будет 2-го элемента в массиве, то получите как минимум notice.
Код
if ( isset($desc[1]) && !empty($desc[1]) ){

Цитировать
думаю, в этом будет и проблема. верху должен быть баннер на некоторых страницах, а основной текст - внизу - на всех страницах
Естественно, ЕСЛИ не надо, ТО не будет. А что там на конкретном сайте надо/не надо, не смотрел.
Веб-разработка: заказ. Только новая разработка.
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #14 : 09.02.2016, 14:17:38 »
Все отлично все заработало.
Вот такой еще вопрос если понадобится делить на 3 части таким же путем идти
Код
<div class="category_description">
<?php
//echo $this->category->category_description;
  if (!empty($this->category->category_description)) {
      $desc = explode('|', $this->category->category_description);
      if (!empty($desc[2])){
        echo $desc[2];
      }
    }
?>
</div>
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #15 : 09.02.2016, 14:19:27 »
да, только разделитель в описании ставить уже 2 раза
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: доп поле в категории товара
« Ответ #16 : 09.02.2016, 14:21:32 »
Все спасибо понял
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Re: доп поле в категории товара
« Ответ #17 : 09.02.2016, 14:25:15 »
и к совету FSV прислушайся, вторую (и далее) часть описания сделай так
Код
<div class="category_description">
  <?php
    if (!empty($this->category->category_description)) {
      $desc = explode('|', $this->category->category_description);
      if (isset($desc[1]) && !empty($desc[1])){
        echo $desc[1];
      }
    }
  ?>
</div>

т.е. используй команду isset в проверке, она определяет, задана ли переменная (!empty определяет только то, что переменная не пустая, но она может быть вовсе не задана)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расчёт стоимости товара в VirtueMart за периметр

Автор NIKOLY

Ответов: 0
Просмотров: 86
Последний ответ 04.07.2025, 09:18:31
от NIKOLY
Не отображаются товары в категории

Автор iZacNT

Ответов: 0
Просмотров: 1939
Последний ответ 23.06.2023, 12:20:49
от iZacNT
Как вывести ID товара в описании товара?

Автор Stasweb

Ответов: 8
Просмотров: 3923
Последний ответ 28.11.2022, 23:22:27
от Evgen Kulibin
Joomla 3 + VM + Universal AJAX Live Search - как вывести картики товара в поиске?

Автор PSN

Ответов: 10
Просмотров: 9436
Последний ответ 27.03.2022, 17:29:00
от Evgen Kulibin
Как сделать - Вывод модуля на всех страницах - Кроме в карточке товара?

Автор artem_wrong

Ответов: 15
Просмотров: 3054
Последний ответ 15.02.2022, 15:07:34
от beliyadm