【问题标题】:How get modular page processed content如何获取模块化页面处理的内容
【发布时间】:2022-01-30 06:27:03
【问题描述】:

我用 createIndexData 函数创建了一个插件:

public static function createIndexData($file): bool
{
    $pages = self::getPages();
    $grav = Grav::instance();
    if($pages !== null){
        $locator = $grav['locator'];
        $grav['twig']->twig_paths[]= array_merge(Grav::instance()['twig']->twig_paths, $locator->findResources('theme://templates'));
        $grav->fireEvent('onTwigTemplatePaths');

        $page = $pages->find('/austria/_price-list');
        /*dump($page);*/
        dump($page->content());
        exit();
    }
    return false;
}

插件在 onPagesInitialized 中被调用。我只需要从模块化页面获取处理后的内容。在模块化页面中,我包含来自另一个页面的内容:(/pages/austria/_price-list)

{% set moduleName= 'price-list' %} 
{% set pageUrl = page.find(uri.path).rawRoute[1:] %} 
{% set pageUrl = '/global-variables-and-templates/price-list/data/_austria' %} 
{% set page = page.find(pageUrl) %} 
{% if not page %} 
   PAGE NOT EXIST!!!!<br />url: {{pageUrl}}<br />modul-name: {{moduleName}} 
{% else %}
    {% include page.template~'.html.twig' with {'content' : page.content} %} 
{% endif %}

插件返回错误:未定义模板“modular/price-list-global.html.twig”。怎么了?或者自定义插件中如何从grav中的模块化页面获取处理后的内容?

【问题讨论】:

  • 我不清楚您想要实现的目标,您可能会走错方向。您可能需要考虑编辑您的问题以增加清晰度。
  • 我需要获取模块化页面的内容。我需要获取已处理的模块化页面的内容(树枝)。当我调用 $page->content() 时,在处理“包含页面”期间显示错误:未定义模板“xyz”
  • 一句话重复问题并没有说得更清楚... 1)你在哪里需要模块的内容?在 PHP 或 Twig 中?关于 PHP sn-p: 2) 你想用函数'createIndexData($file)'来实现什么? 3)代码看起来很乱,请只显示正确的代码。 4) 在哪里创建所需的模板?在主题或当前插件中? 5)为什么会触发事件?关于 Twig sn-p: 6)您正在遮蔽变量“页面”,这被认为未完成.. 7)您为什么要包含要包含的页面的模板? 8) ...

标签: php twig grav


【解决方案1】:

插件错误的解决方案:模板“modular/some-template.html.twig”未定义 添加到功能:

$grav = Grav::instance();
$grav['twig']->twig_paths[]= __DIR__ .'/../../../themes/yourtheme/templates';

【讨论】:

  • 如果主题中定义了模板,则无需将其添加到 Twig 的路径中。如果你需要一个硬编码的路径,你需要挠头……
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 2019-08-27
  • 2013-08-15
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多