2013-07-10 64 views
-2

我有一个WordPress页脚文件,根据主题选项面板中的输入显示3个社交网络图标作为<li>隐藏空divs

所有工作正常,如果有一个或多个链接/图像,但如果没有,在呈现的源代码中,我剩下开放/关闭<div><li>,其中没有数据。就游客而言,他们不会更聪明,但如果没有数据,有没有办法隐藏这些标签。

这是我正在使用的代码;

<div class="eight columns"> 
<div class="social"> 
    <ul> 
    <?php 
    foreach (array("twitter","facebook","linkedin") as $option) 
     ($tmp=of_get_option('fab_social_'.$option.'_url')) && (print('<li><a href="'.$tmp.'"><img src="'.of_get_option('fab_social_'.$option.'_icon').'" alt="Follow us on '.ucfirst($option).'"></a></li>')); 
    ?> 
    </ul> 
</div> 
</div> 
+0

你已经这个问题的答案对你的另一个问题http://stackoverflow.com/questions/17381219/make-multiple-php-if-statements-more-efficient看到最后的答案展示了如何检查如果一个项目是空的,从那里进行检查。 – Prix

+0

@Prix,这是一个不同的问题/答案。这是关于如何在没有要显示的信息时完全隐藏标签。 – Naz

+1

纳兹如果你对你发布的问题有最小的理解,那么上面的链接应该回答你自己的问题。正如你可以在最后一个答案中看到的那样,他使用'if(!emtpy($ social1))'来验证社会选项是否存在。如果你在所有社交网络的div之前做了这些,会发生什么? if(!empty($ social1)&&!empty($ social2)&&!empty($ social3)){'? **但是不要担心,总有一个人会溺爱那些不喜欢学习的人。** – Prix

回答

0

如果是我,我会先设置选项,然后评估以查看是否显示。

<?php 
// Get all stored options 
$socials = array(); 
foreach (array('twitter', 'facebook', 'linkedin') as $option){ 
    $setting = of_get_option('fab_social_'.$option.'_url'); 
    if ($setting != '') $socials[ $option ] = $setting; 
} 


?> 
<div class="eight columns"> 
<?php if (count($socials) > 0) { /* check are any social options set, don't display unless >0 */ ?> 
<div class="social"> 
<ul> 
<?php 
// Loop through options 
foreach ($socials as $option=>$setting){ 
    print('<li><a href="'.$setting.'"><img src="'.of_get_option('fab_social_'.$option.'_icon').'" alt="Follow us on '.ucfirst($option).'"></a></li>')); 
} 
?> 
</ul> 
</div> 
<?php } /* Close initial count() comparison */ ?> 
</div>