我一直在为我的Prestashop网站创建一个简单的博客页面。到目前为止,我已经能够创建以下文件,并且模板显示正确。
BlogController.php(位于/controllers/front目录)
<?php
class BlogControllerCore extends FrontController
{
public $php_self = 'blog.php';
public function setMedia()
{
parent::setMedia();
Tools::addCSS(_THEME_CSS_DIR_.'blog.css');
Tools::addJS(_THEME_JS_DIR_.'blog.js');
}
public function displayContent()
{
parent::displayContent();
self::$smarty->display(_PS_THEME_DIR_.'blog.tpl');
}
}
?>
blog.php(位于根目录)
<?php
require(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');
ControllerFactory::getController('BlogController')->run();
include(dirname(__FILE__).'/footer.php');
?>
blog.tpl(位于主题目录)
{capture name=path}{l s='Blog'}{/capture}
<h1>{l s='Blog posts'}</h1>
我的问题是,如何在页面中添加一些mysql查询(select,show),并在博客页面中显示我的博客文章(可能使用while循环?)?
编辑:
我尝试将sql查询添加到blog.php
,但结果不会显示在模板页面上。
当blog.php说时,我遇到了一个错误
Notice: Array to string conversion in /home/ystaajux/public_html/blog.php on line 15
Array
Warning: require_once(/home/ystaajux/public_html/controllers/BlogController.php): failed to open stream: No such file or directory in /home/ystaajux/public_html/classes/ControllerFactory.php on line 43
当我尝试在blog.php 中运行以下内容时
$results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT `id_order`
FROM `ps_orders`');
$orders = array();
foreach($results as $result) {
$orders[] = $result['id_order'];
}
echo $orders;
如果您使用Prestashop 1.6,我认为您必须在BlogController.php中使用initContent()而不是displayContent(),如:
public function initContent()
{
// you can put your sql queries here and uses smarty to send variables to your view blog.tpl
parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'blog.tpl');
}
但最好使用模块的创建来做您想要的事情。