Only Show Link If div Exists

时间:2016-09-08 作者:crossbeats

我在我的产品页面上有一个锚定链接,链接到页面下方的一个div。div仅在有内容时显示。

是否可以基于div ID为链接编写if语句?是否存在#ID?

这是div:

<div class="upsells products" id="tab-accessories">
            <!--Change related products text-->
            <?php 
            global $post;
            //If Product Page is a Model page, display "Reccomended Accessories"
                if ( has_term( \'Models\', \'product_cat\', $post->ID ) ) {
        echo \'<h2>\' . \'Reccomended Accessories\' . \'</h2>\';
                }
            //If Product Page is an Accessories page, display "Customers Also Bought"
                if ( has_term( \'Accessories\', \'product_cat\', $post->ID ) ) {
        echo \'<h2>\' . \'Customers Also Bought\' . \'</h2>\';
                }
                ?>
        <?php woocommerce_product_loop_start(); ?>
            <?php while ( $products->have_posts() ) : $products->the_post(); ?>
                <?php wc_get_template_part( \'content\', \'product\' ); ?>
            <?php endwhile; // end of the loop. ?>
        <?php woocommerce_product_loop_end(); ?>
    </div>
这是链接:

        <li><a href="#tab-accessories">Accessories</a></li>

3 个回复
SO网友:rudtek

这是可以做到的,但我们需要看到div周围的if语句。现在,上面的代码仍然会显示div,只是不会显示div中的内容。您需要将链接代码包装在div所在的相同if语句中。

示例:如果div if语句为:

if ( has_term( \'Accessories\', \'product_cat\', $post->ID ) ) {
echo \'<div class="upsells products" id="tab-accessories">CONTENT OF DIV</div>\';
}
使用相同的if语句在代码前面包装链接:

if ( has_term( \'Accessories\', \'product_cat\', $post->ID ) ) {
echo \'<li><a href="#tab-accessories">Accessories</a></li>\';
}
无论发生在其中一个身上的是什么,都会和另一个一样。

SO网友:cjbj

我认为你的做法是错误的。即使在输出模板中的链接和div之前,也应该有一个条件来测试循环中是否有任何内容要显示。您现在正在div中运行该测试:$products->have_posts(). 不幸的是,由于该循环是针对WooCommerce的,我不知道该使用哪个测试。

如果没有要显示的内容,则模板不应包含link和div。这比之后尝试用css和/或javascript修复要好。

SO网友:Roshan Deshapriya

使用jquery方法。

     
    $(window).load(function(){
    if ($(\'your_div\').is(":empty")){
    $(\'your_div\').hide();
    } });