如何更改loadObjectList()项位置?

时间:2014-09-30 08:14:28

标签: php joomla

我试图改变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>

我想要做的是,我想将页面标题显示为列表的第一个元素。这意味着条件的项目应该首先显示。

任何人都可以帮助我吗?

2 个答案:

答案 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>';
        }
    }
?>