@neoneel

Как вывести все статьи автора?

суть вот в чем: имеется профиль пользователя, необходимо вывести на странице профиля все статьи этого пользователя, пробовал обойтись костылем:
<?php
if(!class_exists('ContentModelArticle')) require_once JPATH_ROOT.'/components/com_content/models/article.php';
$article = new ContentModelArticle;
$articleId=70;
while($articleId<400){
$youArticle = $article->getItem($articleId);

 if($youArticle->created_by==JUserHelper::getProfile()->id){
echo $youArticle->title;
  echo $youArticle->hits;
echo $youArticle->created;
  echo $youArticle->introtext;
  echo "<p class='readmore'><a href='index.php?option=com_content&view=article&id=".$youArticle->id."'> Подробнее... </a></p>";
 }else{
 echo "У вас пока нет ни одной статьи ";
    echo "  <a href='index.php/submit-an-article'> Написать </a></p>";
 }
 $articleId++; 
}
?>

но выдает 404 ошибку, хотя если вместо $articleId в строке $youArticle = $article->getItem($articleId); поставить реальное значение, то выдает статью которую надо
  • Вопрос задан
  • 657 просмотров
Решения вопроса 1
BOOMER_74
@BOOMER_74
Full-Stack разработчик
Примерно так:
$articles = JModelLegacy::getInstance("Articles", "ContentModel", array("ignore_request" => true));

$articles->setState("params", JFactory::getApplication()->getParams());

$articles->setState("filter.published", 1); // Только опубликованные

$articles->setState("filter.category_id", $this->category->id); // Фильтруем по определенной категории (если надо)
$articles->setState("filter.subcategories", true); // и всем подкатегориям

foreach ($articles->getItems() as $item) { // Получаем все материалы
	if ($item->created_by == $user_id) { // Если это нужный автор, то
		echo $item->title; // выводим все что нужно
	}
}

Корректно для Joomla 3.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Silent_Breeze
<?php
		$articles = JModelLegacy::getInstance("Articles", "ContentModel", array("ignore_request" => true));
		$articles->setState("params", JFactory::getApplication()->getParams());
		$articles->setState("filter.published", 1);
	?>				
		<ul>
			<?php foreach ($articles->getItems() as $item) : ?>
				<?php if ($item->created_by == $this->data->id) : ?>
					<li>
						<a href="index.php?option=com_content&view=article&id=<?php echo $item->id;?>&Itemid=135"><?php echo $item->title;?></a>
					</li>
				<?php endif; ?>
			<?php endforeach; ?>
		</ul>


Делал для вывода статей автора на странице его профиля в Joomla 4.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы