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

Аня

  • Давно я тут
  • 702
  • 32 / 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

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

Аня

  • Давно я тут
  • 702
  • 32 / 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

  • Легенда
  • 9982
  • 1099 / 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

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

Аня

  • Давно я тут
  • 702
  • 32 / 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

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

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

Вывести страницу регистрации

Автор olderman

Ответов: 1
Просмотров: 361
Последний ответ 24.05.2021, 21:36:49
от R31rus
Вывести определенный ТЕГ

Автор lgmax

Ответов: 2
Просмотров: 161
Последний ответ 30.04.2021, 12:53:05
от lgmax
Как вывести потоковое видео на сайт через api?

Автор V1RTUS

Ответов: 0
Просмотров: 104
Последний ответ 22.04.2021, 02:05:39
от V1RTUS
Как в компоненте RsSeo обнулить счетчик просмотров статьи?

Автор web1

Ответов: 0
Просмотров: 83
Последний ответ 14.02.2021, 18:24:01
от web1
Как вывести заголовок страницы браузера в произвольном месте через php?

Автор kiev

Ответов: 4
Просмотров: 122
Последний ответ 12.02.2021, 16:50:57
от kiev