0

我想在帖子标题正下方设置一个 div,它浮动到左侧并包含一个 adsense 300x250 块,然后帖子内容在右侧环绕它。在查看单个帖子时,所有这些都可以正常工作......但是当我转到显示所有帖子摘录的博客主页时,它会在其中显示我不想要的 div。

我尝试使用 CSS 更正此问题,只是尝试专门针对主页上的 div 并将其设置为不显示(即 .post_content.myAd{display:none;...}),然后通过定位使其可见具体的(即 .single.myAd{display:inline;...} 因为我的广告 div 'myAd' 位于主页上的 .post_content 内,但在单个博客文章的 .single 内)。

这是我的完整CSS:

.single.aboveVideoAd{
position: relative;
display:inline;
float: left;
width: 300px;  
height: 250px; 
margin-right: 15px; 
margin-bottom: 15px;
}

.post_content.aboveVideoAd{
display:none;
}

根据要求,这是我的 index.php 循环的 html(显示摘录)和单个帖子的 single.php:

index.php: http: //pastebin.com/62gQfh2h

单.php:http : //pastebin.com/x18G56CA

有任何想法吗?我已经看到大量的网站在帖子下有广告块并且没有这个问题,所以我觉得应该有一个更简单的解决方法,而不是必须弄乱css。

谢谢!

4

1 回答 1

0

这是一个从文本中去除标签及其内容的函数:http: //se2.php.net/manual/en/function.strip-tags.php#86964

为了使事情更容易,我将重现它:

<?php 
function strip_tags_content($text, $tags = '', $invert = FALSE) { 

  preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); 
  $tags = array_unique($tags[1]); 

  if(is_array($tags) AND count($tags) > 0) { 
    if($invert == FALSE) { 
      return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); 
    } 
    else { 
      return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); 
    } 
  } 
  elseif($invert == FALSE) { 
    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); 
  } 
  return $text; 
} 
?>

这可以绑定到 get_excerpt,

add_filter( 'get_the_excerpt', function( $content ) {
    return strip_tags_content( $content, '<div>', TRUE );
});

我没有测试过这段代码。

于 2012-10-21T16:34:08.247 回答