【问题标题】:how to dynamically generate page links in october cms如何在十月cms中动态生成页面链接
【发布时间】:2020-06-07 19:10:39
【问题描述】:

我正在尝试基于在后端创建的页面创建动态生成的导航菜单您可以使用 { '' |page } 和 { '' |app } 给出相同的值,即http://website/,但希望获得所有页面的列表,如 wordpress 中的 walker 文件,不知道如何实现这一点。

==
<?php
use Cms\Classes\Theme;
use Cms\Classes\Page;

function onStart() {
   $currentTheme = Theme::getActiveTheme();
   $allPages = Page::listInTheme($currentTheme, true);
   $this['allPage'] = $allPages;
}
?>
==
<div class="lt-navbar navbar-fixed">
  <nav class="lt-no-background">
    <div class="nav-wrapper">
      <div class="lt-container container">
        <a href="{{ 'home'|page }}" class="brand-logo white-text"><img src="{{ 'assets/img/pages/all/logo.png'|theme }}" width="177" height="55" title="Logo" alt="Logo"></a>
        <a href="#" data-activates="mobile-menu" class="lt-mobile-toggle button-collapse"><i class="material-icons">menu</i></a>
        <ul>
            {% for page in pages %}
            <li><a href="{{ page.baseFileName|page}}">{{page.title}}</a></li>
            {% endfor %}
</div>
    </div>
  </nav>
</div>
        </ul>

【问题讨论】:

    标签: octobercms


    【解决方案1】:

    是的,你可以。您可以为此使用内置系统类

    use Cms\Classes\Theme;
    use Cms\Classes\Page;
    

    然后获取当前主题内的所有页面

    $currentTheme = Theme::getActiveTheme();
    $allPages = Page::listInTheme($currentTheme, true);
    

    在代码部分

    use Cms\Classes\Theme;
    use Cms\Classes\Page;
    
    function onStart() {
       $currentTheme = Theme::getActiveTheme();
       $allPages = Page::listInTheme($currentTheme, true);
       $this['allPage'] = $allPages;
    }
    

    在模板中

    <ul>
    {% for page in allPage %}
        <li>< a href="{{ page.baseFileName|page}}">{{page.title}}</a></li>
    {% endfor %}
    </ul>
    

    如有任何疑问,请发表评论。

    【讨论】:

    • 感谢 Hardik 的建议我已经尝试过了,我使用的是 Octaskin 主题,所以我将代码放在布局文件中,然后我还将代码放在 partial/pages-all/navigation.htm 文件中但仍然无法获取任何要解析的值
    • 哎呀,我这边有错字.. {% for page in pages %} 需要 -> {% for page in allPage %}。对此感到抱歉。我们需要使用allPage 变量。我检查了它的工作正常
    • 感谢 Hardik,我认为这可能是因为起初我复制并粘贴了您的代码,但现在它可以正常工作了,再次感谢您
    猜你喜欢
    • 2011-08-30
    • 2011-10-14
    • 1970-01-01
    • 2022-01-13
    • 2015-11-08
    • 2019-09-06
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多