Magento产品标题允许HTML显示:查找模板文件移除转义函数
Magento产品标题保留原始HTML的解决方案
1. 定位标题渲染的核心模板文件
控制器里的setPageTitle()仅负责设置标题值,实际的HTML转义逻辑在模板渲染层处理,你需要重点查找以下几类文件:
- 全局页面头部模板:
app/design/frontend/[你的主题包]/[主题]/Magento_Page/templates/html/head.phtml - 产品页专属头部模板:
app/design/frontend/[你的主题包]/[主题]/Magento_Catalog/templates/product/view/head.phtml - 第三方主题(Alothemes)自定义模板:检查
app/design/frontend/Magiccart/alotheme/下的Magento_Page或Magento_Catalog模板目录,这类主题通常会重写核心模板逻辑。
2. 找到并移除HTML转义逻辑
Magento默认通过两种方式转义标题,对应修改方式如下:
方式1:模板中直接调用escapeHtml()
如果模板里有这类代码:
<?php echo $block->escapeHtml($block->getPageTitle()) ?>
直接修改为:
<?php echo $block->getPageTitle() ?>
方式2:方法内部自带转义+注释标记
部分模板会用注释提示,但实际转义逻辑在getPageTitle()方法内部:
<?php /* @escapeNotVerified */ echo $block->getPageTitle() ?>
若标题仍被转义,需要重写Magento\Page\Block\Html\Head类的getPageTitle()方法,移除其中的escapeHtml()调用。
3. 排查第三方主题的额外处理
你使用的Alothemes可能在自定义Block中做了额外转义,可同步检查app/code/Magiccart/Alothemes/Block/下的头部相关文件,确认是否在获取标题时添加了转义逻辑。
4. 风险提示与缓存清理
- 移除转义后,必须确保产品标题的HTML仅由可信的后台管理员编辑,避免XSS攻击风险。
- 修改完成后执行缓存清理命令使变更生效:
bin/magento cache:clean
内容的提问来源于stack exchange,提问作者Desper
相关产品推荐
相关产品推荐

