OsClass网站产品页多H1标签问题,如何仅显示单个H1?
解决OsClass产品页多个H1标签的问题
核心问题是当前代码同时输出了桌面端和移动端的两组包含<h1>的DOM结构,导致页面中存在两个H1标签。可以通过以下两种方式修复:
方法一:PHP判断设备类型,仅渲染对应设备的H1
利用OsClass内置的设备检测函数,只在对应设备下生成H1标签,从根源避免重复输出。
修改后的整合代码:
<?php if(osc_is_mobile()) { ?> <div class="basic isMobile"> <h1> <?php if(del_check_category_price(osc_item_category_id())) { ?> <div class="price mbCl3 p-<?php echo osc_item_price(); ?>x<?php if(osc_item_price() <= 0) { ?> isstring<?php } ?>"><?php echo osc_item_formated_price(); ?></div> <?php } ?> <?php echo osc_item_title(); ?> </h1> <?php if($make_offer_enabled) { ?> <a href="#" id="mk-offer" class="make-offer-link" data-item-id="<?php echo osc_item_id(); ?>" data-item-currency="<?php echo osc_item_currency(); ?>" data-ajax-url="<?php echo mo_ajax_url(); ?>&moAjaxOffer=1&itemId=<?php echo osc_item_id(); ?>"><?php _e('Submit your offer', 'delta'); ?></a> <?php } ?> </div> <?php } else { ?> <div class="basic isDesktop isTablet"> <h1> <?php if(del_check_category_price(osc_item_category_id())) { ?> <div class="price mbCl3 p-<?php echo osc_item_price(); ?>x<?php if(osc_item_price() <= 0) { ?> isstring<?php } ?>"><?php echo osc_item_formated_price(); ?></div> <?php } ?> <?php echo osc_item_title(); ?> </h1> <?php if($make_offer_enabled) { ?> <a href="#" id="mk-offer" class="make-offer-link" data-item-id="<?php echo osc_item_id(); ?>" data-item-currency="<?php echo osc_item_currency(); ?>" data-ajax-url="<?php echo mo_ajax_url(); ?>&moAjaxOffer=1&itemId=<?php echo osc_item_id(); ?>"><?php _e('Submit your offer', 'delta'); ?></a> <?php } ?> </div> <?php } ?>
解释:通过osc_is_mobile()函数判断当前访问设备是否为移动端,仅渲染对应设备的DOM结构,确保页面中只会存在一个H1标签。
方法二:CSS隐藏多余的H1(快速临时方案)
如果不想修改PHP逻辑,可通过CSS根据设备类隐藏其中一个H1,但这种方式DOM中仍会存在两个H1,仅视觉上隐藏,语义化表现不如方法一。
添加以下CSS到主题样式文件:
/* 移动端隐藏桌面端H1 */ .isMobile .isDesktop.isTablet h1 { display: none; } /* 桌面/平板端隐藏移动端H1 */ .isDesktop.isTablet .isMobile h1 { display: none; }
优先推荐方法一,更符合SEO语义化要求,彻底解决重复H1的问题。
内容的提问来源于stack exchange,提问作者mymobprice
相关产品推荐
相关产品推荐

