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

Vlad1

  • Захожу иногда
  • 61
  • 0 / 0
Всем привет!

Подскажите, пожалуйста, по следующему вопросу.

Есть список материалов, в каждом из которых имеется Дополнительное поле, например, с id=5.
Есть модуль в Сайдбаре, который отображается только на странице материала (не в списке материалов, но это не важно).
Задача, чтобы в модуле в сайдбаре отображалось значение Дополнительного поля для каждого конкретного материала.

Пробовал так:
<?php echo($this->item->jcfields[5]->value); ?>

Результат - белый экран.

В идеале задача шире: пытаюсь внедрить API парсер курсов. Хотел, чтобы бралось значение конкретного поля в текущем материале и подставлялся в запрос к массиву из API.
*

sivers

  • Завсегдатай
  • 1689
  • 232 / 0
Задача, чтобы в модуле в сайдбаре отображалось значение Дополнительного поля для каждого конкретного материала.
Предложу пару вариантов как делал бы сам:
1. В модуле читать ИД материала ($app->input->getInt('id');) и по нему из БД вытаскивать значение доп.поля (оно там как раз к ИД материала + ИД поля привязано).
2. Если не боитесь глобальных переменных, то в макете материала объявляете глобальную переменную и вписываете в нее весь материал или только ваше доп.поле. В модуле обращаетесь к этой глобальной переменной и читаете ее. Кто не любит глобальные переменные - можно использовать константу. В любом случае сперва желательно проверять существование константы (или гл.переменной), а потом уже к ней обращаться.

Кстати, не так давно (1-2 мес. назад) точно такой вопрос уже задавали и ответ был получен - поищите.
На связи в телеге @sivers
https://sivers.su/
*

Vlad1

  • Захожу иногда
  • 61
  • 0 / 0
Предложу пару вариантов как делал бы сам:
1. В модуле читать ИД материала ($app->input->getInt('id');) и по нему из БД вытаскивать значение доп.поля (оно там как раз к ИД материала + ИД поля привязано).

sivers, благодарю! Первую часть по Вашей наводке сделал и понял, куда копать.
Вторую часть (вывод поля по известному ID материала) нашел на англоязычном форуме Joomla!, где решение предложил effrit.

В итоге сделал так:
Код
<?php

// Получаем ID материала
$app  = JFactory::getApplication();
$id_article = $app->input->getInt('id');
echo $id_article;

// Получаем конкретное поле из этого материала
$db = JFactory::getDbo();
$query = 'select * from #__fields_values where item_id = "'.$id_article.'"';
$db->setQuery($query);
$fields = $db->loadObjectList();

foreach ($fields as $field) {
if ($field->field_id == 5) { // 5 - ID поля
echo $field->value;
}
}

?>

У меня работает. Не знаю, правда, насколько рационален код.
« Последнее редактирование: 01.06.2021, 00:18:16 от Vlad1 »
*

sivers

  • Завсегдатай
  • 1689
  • 232 / 0
У меня работает. Не знаю, правда, насколько рационален код.
Этот способ хорош тем, что не зависит от страницы (если только у вас есть ИД материала). Если же использовать передачу через глобальные переменные (или константы), то можно обойтись бэз запроса к БД. Хотя и запрос там не особо тяжелый, особенно если материалов не много.

Кстати, запрос, который вы нашли, читает все поля материала. Если в модуле надо выводить только одно поле (с ИД = 5), то лучше и тянуть из БД только его:
Код
$query = 'select value from #__fields_values where field_id = 5 AND item_id = "'.$id_article.'"';
$db->setQuery($query);
$fieldValue = $db->loadResult();
На связи в телеге @sivers
https://sivers.su/
*

Vlad1

  • Захожу иногда
  • 61
  • 0 / 0

Кстати, запрос, который вы нашли, читает все поля материала. Если в модуле надо выводить только одно поле (с ИД = 5), то лучше и тянуть из БД только его:
Код
$query = 'select value from #__fields_values where field_id = 5 AND item_id = "'.$id_article.'"';
$db->setQuery($query);
$fieldValue = $db->loadResult();

Принято к сведению, исправил, спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Кастомные поля в плагине. onBeforeCompileHead()

Автор bombapiter

Ответов: 0
Просмотров: 109
Последний ответ 07.05.2021, 17:52:12
от bombapiter
Ошибка сохранения доп. поля категории

Автор Damarkuzz

Ответов: 2
Просмотров: 168
Последний ответ 06.05.2021, 13:07:04
от Damarkuzz
Своя позиция и модуль как картинка

Автор cirip

Ответов: 2
Просмотров: 173
Последний ответ 03.04.2021, 14:15:18
от cirip
Вывод доп. полей в любом месте

Автор lgmax

Ответов: 4
Просмотров: 378
Последний ответ 01.04.2021, 11:55:05
от revil
Вывод файлов и папок на странице сайта

Автор diman_bush

Ответов: 0
Просмотров: 111
Последний ответ 26.03.2021, 14:08:17
от diman_bush