我在我的网站的客户服务中使用了第三方模块。 在此模块中,有一个专用页面来创建故障单。
我尝试在此页面的左侧添加一个cms页面(已经在Prestashop的Pages中创建)。
为此,我在modules / {THEmodule} /controllers/front/function.php
中创建一个函数 public function getFAQ($id_cms, $id_lang = null, $id_shop = null){
if (is_null($id_lang)) {
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
}
if (is_null($id_shop)) {
$id_shop = (int)Configuration::get('PS_SHOP_DEFAULT');
}
$sql = new DbFAQ();
$sql->select('content');
$sql->from('cms_lang');
$sql->where('id_cms = .(int)$id_cms.' AND 'id_lang = .(int)$id_lang.' AND 'id_shop = .(int)$id_shop');
return Db::getInstance()->executeS($sql);
}
然后我在.tpl中调用该函数
<div id="support-getFAQ">
{$getFAQ=12} {* 12 is the id of the cms page that I want display *}
</div>
但是当我检查页面时,什么都没有显示,所以我猜这不是好方法。
有人可以帮我吗?
答案 0 :(得分:1)
感谢@ marcin-jaworski给我个方法。
解决方案很简单。 无需添加功能,只需在tpl中编写:
{assign var=new_smarty_var value=CMS::getCMSContent(12)}
{$new_smarty_var.content nofilter}
别忘了使用“ nofilter”来打印html。
答案 1 :(得分:0)
由于良好的做法,您应该在模块控制器或显示函数中为钩子分配smarty变量。
Displaying content on the front office
您可以通过使用CMS类(/classes/CMS.php)中已提供的功能来获取CMS内容:
public static function getCMSContent($id_cms, $id_lang = null, $id_shop = null)
public static function getCMSPages($id_lang = null, $id_cms_category = null, $active = true, $id_shop = null)
我还可以在.tpl中使用小技巧女巫
{assign var=new_smarty_var value=(CMS::getOneCMS(11, $language.id)}
{$new_smarty_var.content}