对于PHP中的每个循环来显示数据库中的某些项

时间:2013-07-01 12:33:28

标签: php concrete5

所以我想要从我的数据库中显示第二个最新的行。所以我的例子(为了更好地解释它)如果我有10行。我想只显示第二个最新的。不是最新的,而是紧随其后的那个。或者甚至可能是第三个。我有下面的工作代码,我看到每个循环。但我不知道如何只显示我想要显示的那个。我也不认为我如何设置它是实现这一目标的最有效方式。

我正在使用concrete5这个网站,主要的想法是作曲家,所以我可以发布一个新的帖子和拉最近的新闻提要,但显示第二个帖子。

这是我目前的代码:(这显示了第一篇文章)

    <?php 
    defined('C5_EXECUTE') or die("Access Denied.");
    ?>
    <div id="blog-index">
        <?php  
        $isFirst = true; //So first item in list can have a different css class (e.g. no top border)
        $excerptBlocks = ($controller->truncateSummaries ? 1 : null); //1 is the number of blocks to include in the excerpt
        $truncateChars = ($controller->truncateSummaries ? $controller->truncateChars : 255);
        $imgHelper = Loader::Helper('image');
        foreach ($cArray as $cobj):
            $title = $cobj->getCollectionName();
            $date = $cobj->getCollectionDatePublic(DATE_APP_GENERIC_MDY_FULL);
            $author = $cobj->getVersionObject()->getVersionAuthorUserName();
            $link = $nh->getLinkToCollection($cobj);
            $firstClass = $isFirst ? 'first-entry' : '';

            $entryController = Loader::controller($cobj);
            if(method_exists($entryController,'getCommentCountString')) {
                $comments = $entryController->getCommentCountString('%s '.t('Comment'), '%s '.t('Comments'));
            }
            $isFirst = false;
        ?>
        <div class="entry">
            <div class="title">
                <h3>
                    <a href="<?php  echo $link; ?>" class="text-error"><?php  echo $title; ?></a>
                </h3>
                <h6 class="post-date">
                    <?php  
                    echo t('Posted by %s on %s',$author,$date);
                    ?>
                </h6>
            </div>
            <div class="excerpt">
                <?php
                    $a = new Area('Main');
                    $a->disableControls();
                    if($truncateChars) {
                      $th = Loader::helper('text');
                      ob_start();
                        $a->display($cobj);
                      $excerpt = ob_get_clean();
                      echo $th->entities($th->shorten($excerpt,$truncateChars));
                    } else {
                      $a->display($cobj);
                    }
                  ?>
            </div>
            <div class="ccm-spacer"></div>
            <br />
            <div class="meta">
                <?php  echo $comments; ?> <a href="<?php  echo $link; ?>" class="btn btn-danger"><?php  echo t('Read the full post'); ?> <i class="icon-chevron-right"></i></a>
            </div>
        </div>
        <hr class="blog-entry-divider"/>
        <?php  endforeach; ?>
    </div>

1 个答案:

答案 0 :(得分:1)

以其他人写的评论为基础:

你粘贴的是具体的视图。您会注意到那里没有db查询或PageList构建。为此,您需要查看控制器。 (这看起来像一个页面列表块视图,因此控制器将位于/ concrete / core / controllers / blocks / page_list.php(在c5.6 +上)。

用于执行其他人建议的具体的5 api代码(让mysql处理跳过)是在->get()调用中完成的。所以,关于第135行:

$pl->get(1, 1);

请记住不要直接修改文件,而是以c5方式覆盖它们。 c5网站上有很多关于此的教程。