October/Winter CMS Static Pages的调用
function onStart() { $this['pages'] = \Rainlab\Pages\Classes\Page::sortBy('title')->lists('viewBag'); }
在模板中使用{% for page in pages %}
来读取
{% for page in pages if page.parent is empty %} <p> <h1>{{ page.title }}</h1> <h3>{{ page.url }}</h3> </p> {% for subpage in page.children %} <li class="c-overview__item"> <a href="{{ subpage.url | app }}"> <figure style="background-image:url({{ subpage.conver_image }})"></figure> <span class="c-overview__item-title">1.{{ subpage.title }}</span> </a> </li> {% endfor %} {% endfor %}
使用PageList
来调用
$staticPages = new \RainLab\Pages\Classes\PageList('myThemeName'); $items = $staticPages->listPages(); dd($items); foreach ($items as $item) { $pageUrl = $item->viewBag['url']; // url страницы $pageTitle = $item->viewBag['title']; // Заголовок страницы $pageMurkup = $item->attributes['markup']; // Контент страницы }
或者
$theme = \Cms\Classes\Theme::getActiveTheme(); $pages = \RainLab\Pages\Classes\Page::listInTheme($theme, true);
实战案例
根据URL获取该页面下面的所有子页面(包含二级页面),并且调用viewBag中的自定义字段的值
$theme = \Cms\Classes\Theme::getActiveTheme(); $router =new \RainLab\Pages\Classes\Router($theme); $this->pageObject = $router->findByUrl($this->page->url); $childs = $this->pageObject->getChildren(); $pageChilds = []; foreach ($childs as $child) { $items = array(); if(count($child->getChildren())){ foreach($child->getChildren() as $item){ $items[] = array( "title" => $item->title, "url" => $item->url, "icon" => isset($item->viewBag['icon']) ? $item->viewBag['icon'] : "", "headline" => isset($item->viewBag['headline']) ? $item->viewBag['headline'] : "" ); } } $pageChilds[] = array( "title" => $child->title, "url" => $child->url, "content" => $child->getProcessedMarkup(), "icon" => isset($child->viewBag['icon']) ? $child->viewBag['icon'] : "", "headline" => isset($child->viewBag['headline']) ? $child->viewBag['headline'] : "", "items" => $items ); } $this['childs'] = $pageChilds;