0

左に浮かび、AdSense 300x250ブロックを含む投稿タイトルのすぐ下にdivを設定したいのですが、その後、投稿コンテンツが右側で折り返されます。個々の投稿を表示する場合、これはすべて正常に機能します...しかし、ブログのメインページに移動すると、投稿の抜粋がすべて表示され、不要なdivが表示されます。

CSSを使用してこれを修正し、メインページのdivを具体的にターゲットにして、何も表示しないように設定し(つまり、.post_content.myAd {display:none; ...})、ターゲットを設定して表示できるようにしました。特定のもの(つまり、私の広告div'myAd'はメインページの.post_content内にありますが、個々のブログ投稿の.single内にあるため.single.myAd {display:inline; ...})。

これは私の完全な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(抜粋を表示)のループと単一の投稿のsingle.phpのHTMLを次に示します。

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

single.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 に答える