2011-08-18 83 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 />'; 
}