3

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

但是,我不能在 CMS 页面中使用它,至少不能通过使用管理面板 - 在 CMS 页面中包含 smarty 代码不会呈现,代码将按原样显示为文本:{hook h= 'calcSubstrate'}。

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

4

1 回答 1

3

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

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

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

于 2014-07-02T13:47:55.280 回答