2011-08-18 51 views
0

我目前正在研究一個基本的,但是定製的CMS,我們將在我們的幾個網站上使用它。在任何人點燃我之前,我很清楚其他選擇,但是我們所嘗試的任何東西對於我們的數據都非常靈活。PHP重新創建Wordpress the_loop

因爲這樣,我就開始了。

我從Wordpress中喜歡的功能之一就是The Loop。

while(have_posts()) : the_content(); 
    the_content(); 
endwhile; 

我研究的代碼,並拿出一個類似的類,你可以看到here

從查看代碼,我發現,has_posts()似乎正在返回一個布爾值,如果仍有數組中的帖子。

the_article表示我們仍在循環中,因此請爲我們需要的數據設置文章(帖子)的變量。

我已經種了這個工作,但是我只似乎能夠從數組中得到一個信息:

while (have_articles()): the_article(); 
    echo "<h1 class='title'>" . the_title() . "</h1>"; 
endwhile; 

其中the_title是:

function the_title() { 
    global $AC; 

    return $AC->p_title; 
} 

感謝幫助!

+0

對不起,但恕我直言,模板中的PHP是有史以來最糟糕的!你應該使用像http://www.smarty.net/或更好https://github.com/bobthecow/mustache.php –

+0

Smarty並不好多了。 – James

回答

0

我改變current_articlepublic而不是static值,這幫助。它也證明我的功能,the_title訪問錯誤的字段名稱。

此問題已解決。

@回答的每個人;您的意見受到了重視,我同意,循環帶有其問題和內容,但它也提供了一種輕鬆(如果您掌控的話)讓內容輕鬆實現您想要的方式。 請參閱WordPress的主題。

1

有趣的是,我將循環看作是Wordpress最糟糕的部分。沒有什麼魔法太多。

總之,要實現循環,它是這樣的:

function the_title() { 
    global $articles; 
    static $position; 

    return $articles[$position++]->title; 
} 

見,每次調用the_title()時間等,你必須增加一個指針。如果你想在the_post()之類的其他功能中使用它,那麼你也可能需要在全球範圍內製作$position

4

可能沒有任何東西可以從wordpress中借用概念和實現。

當試圖瞭解系統部件如何協同工作時,The Loop是最糟糕的事情。循環引入了大量全局變量,它們僅在循環內有效,但仍可從循環外部訪問。沒有人知道這些變量是否有效以及在哪裏有效。

以OOP方式實現您自己的「循環」。永遠不要試圖理解和複製wordpress代碼。這不好。

我將如何預期在後一個迭代的樣子:

$iterator = new PostIterator($category, $page); 
while ($iterator->hasNext()) { 
    $post = $iterator->next(); 
    echo $post->title . ' ' . $post->getFormattedDate() . '<br />'; 
}