Prestashop cms页面json内容

时间:2016-09-30 09:29:27

标签: json content-management-system prestashop

我试图通过api从我朋友的wordpress获取CMS页面内容。 这很好用,我可以用css自定义内容。

但我知道你不应该在控制器中插入html,有没有办法为此做.tpl文件然后调用标题和内容 要么 如果你能以某种方式将这些内容发送给管理员,那就更好了,但我认为目前还不可能?

但是,其他cms页面应该正常工作。

我目前在函数initContent中的CmsController.php:

        if($this->cms->meta_title == 'mycmspage')
        {
          $ch = curl_init();
          $timeout = 5;
          $url = 'http://friendurl.com/wp-json/wp/v2/pages/xxx';
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $data = curl_exec($ch);
            curl_close($ch);

          $obj = json_decode($data, TRUE);
          $this->cms->content = '<h2 class="myheader">'.$obj['title']['rendered'].'</h2><article class="myarticle">'. $obj['content']['rendered'].'</article>';
        }

使用prestashop 1.6.1

1 个答案:

答案 0 :(得分:1)

是的,您可以设置智能变量并获取模板内容。

$obj = json_decode($data, TRUE);
$this->context->smarty->assign(array(
    'mycms_title' => $obj['title']['rendered'],
    'mycms_content' => $obj['content']['rendered']
));
$this->cms->content = $this->context->smarty->fetch('path_to_your_tpl_file');

这样的事情也可以通过管理员控制器来实现。取决于您所在的管理页面类型(列表,查看,添加,编辑等),但默认情况下它是一种列表。因此,您可以覆盖renderList()方法来显示它。

AdminYourModController extends ModuleAdminController {
    public function renderList() {
        // your curl code
        $obj = json_decode($data, TRUE);
        $this->context->smarty->assign(array(
            'mycms_title' => $obj['title']['rendered'],
            'mycms_content' => $obj['content']['rendered']
        ));

        return $this->context->smarty->fetch('path_to_your_tpl_file');
    }
}