如何在CMS页面中包含钩子?

时间:2014-07-01 14:32:24

标签: smarty prestashop prestashop-1.6

我已经创建了一个自定义挂钩,因此我可以将任意.tpl文件中的自定义模块包含在一行中:{hook h='calcSubstrate'}

但是,我无法在CMS页面中使用它,至少不是通过使用管理面板 - 包括CMS页面中的智能代码不会渲染,代码将显示为原样,如文字:{hook h =' calcSubstrate'}。

或者,如果这更容易/更快 - 我如何选择我的模块将出现在哪些页面上?

1 个答案:

答案 0 :(得分:3)

CMS页面的编辑器无法识别任何Smarty代码。要在所选文章/页面中包含钩子,我可以考虑两个选项:

  • 在模板中包含挂钩(cms.tpl),并检查当前页面的ID以有条件地显示模块。页面ID列表可以作为模块的配置。
  • 构建一个模块,将类似于Wordpress短代码的功能添加到CMS内容中。我使用模块执行此操作而不是覆盖CmsController类,因此我必须使用{$cms->content|module}显示内容。您可以在此处查看简化代码以获取灵感:https://gist.github.com/tungd/cef0ca1ac1063c1ee90b。当然,你可以通过只有一个Smarty修饰符do_shortcode来完成所有事情(就像Wordpress's do_shortcode function一样),使它像Wordpress一样更通用。

上次我这样做是因为我的客户希望在某些CMS页面中放置幻灯片,我选择了第二种方法,因为它在显示模块的时间以及在内容之间显示的位置方面提供了很大的灵活性。对于其他东西,例如联系表格或地图,这将是过度的,第一种方法更好。

相关问题