如何解决PrestaShop WYSIWYG编辑器清除Microdata的问题?
PrestaShop CMS页面添加Schema.org结构化数据的解决办法
- 修改WYSIWYG编辑器的允许属性配置
PrestaShop默认使用TinyMCE编辑器,它会过滤非标准HTML属性。找到编辑器配置文件(比如config/tinymce/tinymce.config.js),修改extended_valid_elements项,把需要的Microdata属性加入白名单:
extended_valid_elements: 'div[itemscope|itemtype|itemprop],span[itemprop],meta[itemprop|content]'
保存配置后刷新后台,再粘贴带Microdata的HTML代码,属性就不会被清除了。
- 直接修改CMS页面模板文件
绕开WYSIWYG编辑器,直接在主题模板中插入结构化数据。找到主题的CMS页面模板themes/你的主题/templates/cms/page.tpl,在合适位置添加带Microdata的标签,比如:
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> {$cms.content nofilter} </div>
如果只想给特定CMS页面添加,还可以通过页面ID判断:
{if $cms.id == 5} <div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> {$cms.content nofilter} </div> {else} {$cms.content} {/if}
nofilter修饰符能确保内容里的HTML不被模板引擎过滤。
- 用自定义模块注入结构化数据
写一个简单的PrestaShop模块,通过钩子在CMS页面加载时插入Microdata。比如在模块的主文件里添加钩子函数:
public function hookDisplayCMSContent($params) { // 替换成目标CMS页面的ID if ($params['cms']->id == 5) { return '<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">' . $params['cms']->content . '</div>'; } return ''; }
安装模块后,指定的CMS页面就会自动带上对应的结构化数据。
内容的提问来源于stack exchange,提问作者Maxence Boudaud
相关产品推荐
相关产品推荐

