Prestashop cms页面json内容
问题描述:
我试图从api的朋友的wordpress中获取CMS页面内容。 这工作得很好,我可以用CSS自定义内容。Prestashop cms页面json内容
,但我知道你不应该插入内部控制HTML,有没有办法做到.tpl文件这里面,然后调用的标题和内容 OR 甚至更好,如果你能在某种程度上得到这个内容管理,以及,但我认为这是不可能的?
但是,其他cms页面应该正常工作。
我目前CmsController.php内部功能initContent:
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
答
是的,你可以设置智者变量并获得模板内容。
$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');
}
}
我曾文件CmsController.php覆盖/控制器/正面/与代码你的建议,'类CmsControllerCoreOverride扩展CmsControllerCore {'但somewhy它只是从控制器文件夹中加载原始CmsController.php刚刚工作正常...?我不确定这是否是覆盖更广泛的问题,但? – Diamonte
有错误PHP致命错误:没有找到'CmsControllerCore'类。 – Diamonte
另外,是否有任何其他“更静态”的方式来识别代码中的cmspage比'if($ this-> cms-> meta_title =='mycmspage') '。 meta_title可以被更改 – Diamonte