我试图改变loadObjectList()的位置。但它不起作用。任何人都可以帮我解决这个问题吗?
这是我使用的代码。
$catID = 8;
//echo $catID;
$doc = JFactory::getDocument();
$page_title = $doc->getTitle();
$db = JFactory::getDBO();
$db->setQuery("SELECT title,alias FROM #__content WHERE catid = ".$catID);
$articles = $db->loadObjectList(); ?>
<div>
<?php foreach($articles as $article){
$title = $article->title;
if($title == $page_title){?>
<h4><?php echo $article->title; ?></h4>
<?php
}else{ ?>
<a href="<?php echo $article->alias;?>"><h4><?php echo $article->title; ?></h4></a>
<?php }
}
?>
</div>
我想要做的是,我想将页面标题显示为列表的第一个元素。这意味着条件的项目应该首先显示。
任何人都可以帮助我吗?
答案 0 :(得分:2)
快干解决方案是添加2个foreach循环,并在条件匹配时和剩余值之后首先显示值。
<?php
foreach($articles as $article){
$title = $article->title;
if($title == $page_title){
echo '<h4>'. $article->title .'</h4>';
}
}
foreach($articles as $rest_articles){
$title = $rest_articles->title;
if($title != $page_title){
echo '<a href="'. $rest_articles->alias. '"><h4>'. $rest_articles->title .'</h4></a>';
}
}
?>
更好的解决方案是将值存储在新数组中并在之后显示它们。
希望这有帮助
答案 1 :(得分:0)
这里只是双重拍摄。可以使用多个foreach
循环,但不是必需的。请尝试以下方法:
<?php
foreach($articles as $article) {
$title = $article->title;
$alias = $article->alias;
if($title == $page_title) {
echo '<h4>'. $title .'</h4>';
}
else {
echo '<a href="'. $alias. '"><h4>'. $title .'</h4></a>';
}
}
?>