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

Аня

  • Давно я тут
  • 744
  • 33 / 0
  • Копатыч нестабилен!
Привет, ребята!

Как у меня есть переменная, указывающая на id статьи, как мне вывести по ней заголовок?

Конструкция такая:
Код
$fieldValue1 = $this->item->jcfields[1]->rawvalue; 

Это дополнительное поле типа article, rawvalue у него id статьи
Я хочу вставить название этой статьи  в метатег, что-то типа:

Код
$dcauthor1  = '<meta name="DC.Creator" content="'.$fieldValue1->item->title.'">'  ;

только это не работает.
А как выводится title по конкретному id?
Fatal error - это не фатально!!! Я проверила.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
здра.
не совсем понятно, от какой статьи вы title хотите получить.
если это не текущая открытая статья, то нужно будет запрос в базу сделать.
ну или воспользоваться какой-то стандартной функцией, которая тоже будет в базу обращаться.
пример запроса к данным других статей, выбирающих нужную информацию. в качестве параметра выступает перечень id статей через запятую
Код
$query = 'select `id`,`title`,`introtext`,`catid`,`images` from #__content where id IN ('.$art_ids.')';
*

Аня

  • Давно я тут
  • 744
  • 33 / 0
  • Копатыч нестабилен!
В том и дело, что я хочу получить title не от текущей статьи, а от статьи, выбранной в дополнительном поле типа "статья" - есть такой плагин от regularlabs, он дает возможность использовать нестандартный тип custom fields "статья". Благодаря ему я увязываю на сайте издательства авторов и их книги.
А как я это на php впишу в шаблон? Вот что-то такое мне надо, по ходу:

Код
$query = 'select `title` from #__content where id IN ('.$fieldValue1.')';

У меня вывелось в коде статьи:
Код
<meta name="DC.Creator" content="select `title` from #__content where id IN (181) " >
Что делать???? Почему он мне title -то не выводит????

Не получается сделать запрос к БД нормально
« Последнее редактирование: 15.05.2021, 12:07:54 от Аня »
Fatal error - это не фатально!!! Я проверила.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну это не весь код был, в пример обращения в базу.

Код
	$db = JFactory::getDbo();
if($art_ids!=""){ // если есть список связанных статей, то делаем запрос в базу для получения данных
$query = 'select `id`,`title`,`introtext`,`catid`,`images` from #__content where id IN ('.$art_ids.')';
$db->setQuery($query);
//$arts = $db->loadObjectList(); // выбираем нужный тип выгрузки резуальтата
$arts = $db->loadAssocList('id'); // ассоциативный массив с ключами по ID статьи, удобно, если есть несколько привязанных статей, потом по ID статьи получаем данные $arts[$id]['title'];
}

к слову, стандартные кастомные поля позволяют цеплять список с выбором статей.
тип - sql запрос.
в поле запроса пишем

Код
SELECT `id` as value, `title` as text  FROM `#__content` WHERE `catid` NOT IN(2, 8, 10) AND `state`=1

в данном случае выбираем опубликованные статьи из категорий, чей ID не равен 2, 8, 10
*

v42bis

  • Захожу иногда
  • 133
  • 13 / 1
Код
// загружаем материал по его id
$loadArticle = JTable::getInstance("content");
$loadArticle->load($articleId);
$metaTitle = $loadArticle->get("title");

// выводим meta-тег
$doc = JFactory::getDocument();
$dcauthor1  = '<meta name="DC.Creator" content="'.$metaTitle.'">'  ;
$doc->addCustomTag($dcauthor1);
*

Аня

  • Давно я тут
  • 744
  • 33 / 0
  • Копатыч нестабилен!

Вообще я вывела этот тайтл, но когда несколько авторов в поле, идет-таки ошибка:
1054 - Unknown column 'Array' in 'where clause'

Вот это
Код
$query = 'select `title`from #__content where id IN ('.$fieldValue1.')';
не годится.

Я вот так написала:
Код
$db = JFactory::getDbo();

if($fieldValue1!=""){ // если есть список связанных статей, то делаем запрос в базу для получения данных
$query = 'select `title`from #__content where id IN ('.$fieldValue1.')';
$db->setQuery($query);

$result = $db->loadAssocList('id'); // ассоциативный массив с ключами по ID статьи, удобно, если есть несколько привязанных статей, потом по ID статьи получаем данные

$dcauthor1  = '<meta name="DC.Creator" content="'. $result[$id]['title'].'">'  ;

  }



Если проверить, что выводится в качестве rawvalue поля, когда несколько статей, то там не список id через запятую, как я наивно думала, а просто array
А если взять value - будет целый html текст, потому что у меня авторы со ссылками.

« Последнее редактирование: 17.05.2021, 15:58:39 от Аня »
Fatal error - это не фатально!!! Я проверила.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
все верно, если несколько статей, то будет массив. у меня же в коде не значение поля используется, а просто переменная
так что предварительно делаем проверку
Код
		if(is_array($fieldValue1)){	// если в поле несколько статей, то они в массиве -> переводим в строку
$ids=implode(',', $fieldValue1);
}
             else $ids=$fieldValue1;

а дальше уже используем в запросе $ids
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль Похожие метки – только более ранние статьи!

Автор Gerostrat

Ответов: 6
Просмотров: 455
Последний ответ 24.08.2023, 21:56:09
от sivers
Вывести поля профиля Joomla

Автор romagromov

Ответов: 9
Просмотров: 600
Последний ответ 09.12.2022, 08:43:08
от sivers
Как вывести в категории VirtueMart кастомное поле с редактором?

Автор dc_web

Ответов: 4
Просмотров: 374
Последний ответ 05.10.2022, 11:07:00
от sivers
Как в конце модуля mod_articles_news вывести ссылку на страницу с блогом?

Автор androv77

Ответов: 4
Просмотров: 406
Последний ответ 20.09.2022, 11:20:29
от androv77
Как убрать название только с главной страницы?

Автор Scaltro

Ответов: 6
Просмотров: 580
Последний ответ 14.08.2022, 21:14:20
от darkghost