Новости Joomla

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

Vlad1

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

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

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

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

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

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

sivers

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

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

Vlad1

  • Захожу иногда
  • 99
  • 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

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

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

Vlad1

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

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

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

Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 3777
Последний ответ 21.02.2024, 11:03:08
от saynez
Закрепить сайдбар

Автор Grigorii

Ответов: 2
Просмотров: 383
Последний ответ 15.12.2023, 16:29:51
от Grigorii
Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 876
Последний ответ 09.11.2023, 16:33:08
от denxio
Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 708
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 1481
Последний ответ 06.10.2023, 14:02:24
от Mitriy