如何将sql查询添加到自定义PHP页面


How to add sql query to custom PHP page?

我一直在为我的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');
}

但最好使用模块的创建来做您想要的事情。