PHP和Concrete 5计数子页面

时间:2014-01-28 07:16:39

标签: php concrete5

使用Concrete5制作移动网站,并使用带有自定义模板的网页列表块。我正在尝试使用PHP计算子页面。

<?php  foreach ($pages as $page):

// Prepare data for each page being listed...
$title = $th->entities($page->getCollectionName());
$url = $nh->getLinkToCollection($page);
$target = ($page->getCollectionPointerExternalLink() != '' && $page->openCollectionPointerExternalLinkInNewWindow()) ? '_blank' : $page->getAttribute('nav_target');
$target = empty($target) ? '_self' : $target;
$description = $page->getCollectionDescription();
$description = $controller->truncateSummaries ? $th->shorten($description, $controller->truncateChars) : $description;
$description = $th->entities($description);
$mies = 0;
?>
<li class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-c" data-theme="c"><div aria-hidden="true" class="ui-btn-inner ui-li"><div class="ui-btn-text"><a target="<?php  echo $target ?>" class="ui-link-inherit" href="<?php  echo $url ?>">
<h2 class="ui-li-heading"><?php  echo $title ?></h2>
<p class="ui-li-desc"><?php  echo $description ?></p>
</a>
</div><span class="ui-icon ui-icon-arrow-r ui-icon-shadow"></span><span class="ul-li-count ui-btn-corner-all ul-count-second"><?php echo count($mies) ?></span></div></li>

<?php  endforeach; ?>

那么,可能需要使用Count函数(或长度?),我不知道。如果我编辑错误的地方,请告知您是否有任何Concrete5 cms的经验。

3 个答案:

答案 0 :(得分:0)

如果您想在代码中的span元素中显示相应的页码:

<span class="ul-li-count ui-btn-corner-all ul-count-second"><?php echo $mies; ?></span>

如果您想显示剩余的子页面,请在上面的html代码段中将$mies替换为count($pages) - $mies,如:

<span class="ul-li-count ui-btn-corner-all ul-count-second"><?php echo count($pages) -$mies; ?></span>

在开始$mies循环之前,首先必须初始化for,因此它应该是以下形式:

<?php  
   $mies = 0;
   foreach ($pages as $page):
   //Rest of your code and increment $mies with every iteration
   $mies ++; //This ensures that you are counting the corresponding pages

?>

如果你想获得子页面总数的计数,你只需要在for块之外回显$mies就像:

<?php  
   endforeach; 
   echo $mies; //Shows you the total number of pages processed inside the for loop.
   //or Just find the length of pages array
   echo count($pages);
?>

就获取数组的长度而言,您可以使用countsizeof。我偶然发现SO question使用countsizeof方法来查找数组的长度。

这应该让你开始朝着正确的方向前进。

答案 1 :(得分:0)

您需要父ID;

$parentId = Page::getCollectionParentId();

请注意Page::getCollectionParentId()获取当前页面的父ID,因此您可能想尝试一下;

$parentId = $page->getCollectionParentID();

然后创建一个新的PageList来过滤和使用parentId过滤;

Loader::model('page_list');
$pl = new PageList();
$pl->filter(false, '(p1.cParentID IN ' . $parentId . ')');

// Get the total
var_dump($pl->getTotal());

这是未经测试的,但理论是有道理的。

答案 2 :(得分:0)

这可能有点简单。

$pl->getTotal()

$pl是控制器中设置的PageList对象。

此外,现在您可以使用h()方法而不是写出$th->entities()

编辑:我应该澄清您不需要执行$pl = new PageList()因为$pl已经设置为控制器中的PageList对象并传递给视图。