2014-09-30 120 views
1

我試圖改變loadObjectList()的位置。但它不起作用。任何人都可以幫我解決這個問題嗎?如何更改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

用上面的代碼得到了什麼錯誤? – emmanuel 2014-09-30 08:26:36

+0

沒有錯誤。我不能訂購它。 @emmanuel你能幫我點這個清單嗎? – anuruddhika 2014-09-30 08:27:21

回答

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

一個更好的解決方案是將值存儲在一個新的數組中,然後顯示它們。

希望這會有幫助

+0

這個支架是否正確?無論如何謝謝@emmanuel我從這個想法。 – anuruddhika 2014-09-30 09:26:15

+0

它可以工作。爲了獲得更好的結果,您可以先將數值排序爲臨時數組,然後再顯示它們。 – emmanuel 2014-09-30 09:29:45

+0

我關閉了第一個foreach,然後開始休息一個。 – anuruddhika 2014-09-30 09:33:31

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