You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PrestaShop网店点击查看长描述后双H1的SEO问题

解决PrestaShop分类页点击「查看更多」后出现双H1的SEO问题

咱们先把问题根源理清楚:

  • 你当前的「查看更多」是直接跳转到当前分类页面的URL,页面刷新后,短描述和长描述容器可能同时被渲染(或者前端逻辑没处理刷新后的状态),再加上分类页本身的分类名称H1,就出现了双H1的情况。
  • 另一个常见原因是你在分类描述里手动添加了H1标签——这本身就违反SEO规范,分类页的核心H1必须是分类名称,描述里的标题应该用H2及以下层级的标签。

下面给你两个层面的解决方案,从根本上解决问题:

1. 把「查看更多」改成前端切换(不跳转页面)

现在的跳转逻辑完全没必要,用JS切换显示/隐藏既提升用户体验,又能避免页面刷新导致的重复渲染问题。修改你的category.tpl代码如下:

{if $category->description}
    <div class="cat_desc rte">
        {if Tools::strlen($category->description) > 350}
            <div id="category_description_short">{$description_short}</div>
            <div id="category_description_full" class="unvisible">{$category->description}</div>
            <a href="javascript:void(0)" class="lnk_more toggle-description">{l s='查看更多'}</a>
            <a href="javascript:void(0)" class="lnk_more toggle-description unvisible">{l s='收起'}</a>
        {else}
            <div>{$category->description}</div>
        {/if}
    </div>
{/if}

然后添加对应的JS逻辑(可以放在模板底部或者主题的自定义JS文件里):

document.addEventListener('DOMContentLoaded', function() {
    const toggleBtns = document.querySelectorAll('.toggle-description');
    const shortDesc = document.getElementById('category_description_short');
    const fullDesc = document.getElementById('category_description_full');

    toggleBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            shortDesc.classList.toggle('unvisible');
            fullDesc.classList.toggle('unvisible');
            toggleBtns.forEach(b => b.classList.toggle('unvisible'));
        });
    });
});

2. 强制替换描述中的H1标签(规范SEO结构)

即使解决了跳转问题,如果描述里本身有H1标签,还是会出现双H1。所以我们可以在模板里用Smarty的替换函数,自动把描述里的H1转换成H2:

修改后的完整代码如下(替换了H1标签):

{if $category->description}
    <div class="cat_desc rte">
        {if Tools::strlen($category->description) > 350}
            <div id="category_description_short">{$description_short|replace:'<h1>':'<h2>'|replace:'</h1>':'</h2>'}</div>
            <div id="category_description_full" class="unvisible">{$category->description|replace:'<h1>':'<h2>'|replace:'</h1>':'</h2>'}</div>
            <a href="javascript:void(0)" class="lnk_more toggle-description">{l s='查看更多'}</a>
            <a href="javascript:void(0)" class="lnk_more toggle-description unvisible">{l s='收起'}</a>
        {else}
            <div>{$category->description|replace:'<h1>':'<h2>'|replace:'</h1>':'</h2>'}</div>
        {/if}
    </div>
{/if}

额外注意事项

  • 确认你的分类页核心H1是分类名称(PrestaShop默认逻辑就是这样),不要在其他模块或自定义代码中重复添加H1。
  • 修改模板后记得清除PrestaShop的缓存和浏览器缓存,确保新代码生效。

内容的提问来源于stack exchange,提问作者Jauf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:17:16