2013-07-10 63 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>