如何在Bolt CMS中运行自定义PHP代码?

如何在Bolt CMS中运行自定义PHP代码?

问题描述:

我想要做的是有一页列出我的数据库中的一些数据(数据与Bolt分开)。如何在Bolt CMS中运行自定义PHP代码?

我已经看过扩展,但我没有看到任何方式来制作一个“页面”,只创建“片段”。但片段实际上不会显示在内容区域中,您只能在<body>标签后面或在<head>之后添加它们。此外,它看起来像他们出现在每一页,而不是在页面上。

是否可以在页面上运行一些自定义PHP代码以从数据库中获取一些数据并显示它?有没有人有一个赤裸裸的例子?

这是扩展的用途,但片段不是你想要的。

博尔特是Silex的应用,并带有一个学说DBAL供应商,所以你可以只使用$app['db']给你访问到\Doctrine\DBAL\Connection对象,你可以用它来查询您的表格,例如

$resultArray = $this->app['db']->createQueryBuilder() 
     ->select('*') 
     ->from($tableName) 
     ->where('my_column_1 = :my_column_value_1') 
     ->andWhere('my_column_2 = :my_column_value_2') 
     ->orderBy('my_column_3', 'DESC') 
     ->setParameter(':my_column_value_1', $value1) 
     ->setParameter(':my_column_value_1', $value2) 
     ->execute() 
     ->fetch(\PDO::FETCH_ASSOC); 

然后,你可以做你想要的数据,并在你认为合适的时候在Twig中渲染它。

有文档上creating extensions with Twig functions一吨,你可以把一个模板{{ my_twig_function() }}

+0

好吧,我明白了数据库的东西,使树枝的功能,但我仍然失踪这一切是如何结合在一起的。我从哪里调用Twig函数?我是否需要在我的page.twig中执行类似'{%if page =='mypage'%} {{my_twig_function()}} {%endif%}'的操作?看起来有点哈克让我乱扔模板。 – DisgruntledGoat

+0

在您使用的ContentType中,您可以指定一个'templateselect'字段类型,它将为您提供一个选择框来选择您想要的记录模板。你只有一个Twig文件,它可以继承另一个模板中的块,但具有你的Twig函数。 – Gawain

+0

谢谢!这也意味着我只能使用Twig函数来检索数据,并将实际的HTML输出保留在模板中。 – DisgruntledGoat