我试图通过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
答案 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');
}
}