2012-02-10 7 views
6

こんにちは私は自分のウェブサイトとブログを持っています。WordPress RSSを表示するにはどうすればいいですか?

  1. 私のウェブサイトには3つのポストしか表示しません。
  2. ウェブサイトをリロードするたびに自動的に新しい投稿があるかどうかをチェックして、最近の3つが表示されるようにします。
  3. 私は自分のwordpress blogpostの完全なタイトルを表示したいが、説明の特定の文字を表示したい。
  4. も説明が言葉ではない
これを行うことができますどのように

「...」で終わる非辞書の単語のいくつかの作品で終わる必要があり、私はそれがRSSを介して行うことができると聞いたことがあります。 誰かが私を助けることができますか?

答えて

5

これを達成するには、説明とタイトルをすべて読んだ後に、必要な文字数になるようにRSSを読んで、タイトルと説明を読む必要があるRSSからブログのRSSを読む必要があります。その後、最後の単語の記述が完了したかどうかを確認し、完了していない場合は最後の単語を削除し、「...」を入れる必要があります。

まず、説明をトリミングすると入れてスクリプトを作成します「...」最後に: -

<?php 
global $text, $maxchar, $end; 
function substrwords($text, $maxchar, $end='...') { 
    if (strlen($text) > $maxchar || $text == '') { 
     $words = preg_split('/\s/', $text);  
     $output = ''; 
     $i  = 0; 
     while (1) { 
      $length = strlen($output)+strlen($words[$i]); 
      if ($length > $maxchar) { 
       break; 
      } 
      else { 
       $output .= " " . $words[$i]; 
       ++$i; 
      } 
     } 
     $output .= $end; 
    } 
    else { 
     $output = $text; 
    } 
    return $output; 
} 

今、我々は値を格納する変数を定義します: -

$xml=("http://your-blog-path/rss/"); 
global $item_title, $item_link, $item_description; 

$xmlDoc = new DOMDocument(); 

$xmlDoc->load($xml); 

$x=$xmlDoc->getElementsByTagName('item'); 

ここでは、配列を作成してその中に値を格納します。あなたはそれを尋ねたので私は3つしか取っていません。あなたは今、すべてのこれらの値をエコー

for ($i=0; $i<3; $i++) 

{ 

$item_title[$i] = $x->item($i)->getElementsByTagName('title')->item(0)->childNodes->item(0)->nodeValue; 

$item_link[$i] = $x->item($i)->getElementsByTagName('link')->item(0)->childNodes->item(0)->nodeValue; 

$item_description[$i] = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue; 

} 

?> 

(表示したいポストの数は、ループ内であること置く)何も変更することができ、リンクは、ユーザーがクリックします値であり、彼はに取られますブログ: -

FIRST最近POST:

<a href="<?php echo $item_link[0]; ?>"><?php echo $item_title[0]; ?></a> 
<?php echo substrwords($item_description[0],70); ?> 

SECOND最近POST:

<a href="<?php echo $item_link[1]; ?>"><?php echo $item_title[1]; ?></a> 
<?php echo substrwords($item_description[1],70); ?> 

第3の最近のPOST:

<a href="<?php echo $item_link[2]; ?>"><?php echo $item_title[2]; ?></a> 
<?php echo substrwords($item_description[2],70); ?> 

これがあなたの問題を解決できることを願っています。ところで、ニースの質問。

+0

これは私があなたが質問を再度開くべきだと思う... –

+0

私はこのコードを使用しましたが、私は次のエラーを受け取ります: "PHP致命的なエラー:非オブジェクトのgetElementsByTagName()メンバ関数を呼び出します。問題の行はforループの最初の行です: $ item_title [$ i] = $ x-> item($ i) - > getElementsByTagName( 'title') - > item(0) - > childNodes-> item (0) - > nodeValue; – fullerm

3

​​- 単純にこのプラグインを使用しますPHPでRSSフィードを表示する方法。

ジャンゴ匿名のsubstrwords機能は、説明をトリミングすると、それは$maxchar値を渡した場合の説明の最後に...を挿入するために使用されています。


全コード:

blog.php

<?php 
    global $text, $maxchar, $end; 
    function substrwords($text, $maxchar, $end='...') { 
     if (strlen($text) > $maxchar || $text == '') { 
      $words = preg_split('/\s/', $text);  
      $output = ''; 
      $i  = 0; 
      while (1) { 
       $length = strlen($output)+strlen($words[$i]); 
       if ($length > $maxchar) { 
        break; 
       } else { 
        $output .= " " . $words[$i]; 
        ++$i; 
       } 
      } 
      $output .= $end; 
     } else { 
      $output = $text; 
     } 
     return $output; 
    } 

    $rss = new DOMDocument(); 
    $rss->load('http://wordpress.org/news/feed/'); // <-- Change feed to your site 
    $feed = array(); 
    foreach ($rss->getElementsByTagName('item') as $node) { 
     $item = array ( 
      'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
      'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
      'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
     ); 
     array_push($feed, $item); 
    } 

    $limit = 3; // <-- Change the number of posts shown 
    for ($x=0; $x<$limit; $x++) { 
     $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
     $link = $feed[$x]['link']; 
     $description = $feed[$x]['desc']; 
     $description = substrwords($description, 100); 
     $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
     echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />'; 
     echo '<small><em>Posted on '.$date.'</em></small></p>'; 
     echo '<p>'.$description.'</p>'; 
    } 
?> 

あなたは簡単に別のPHPファイル(blog.php)でこれを入れて、あなたの実際の内部でそれを呼び出すことができますページ。

例:

<h3>Latest blog post:</h3> 
<?php require 'blog.php' ?> 

social.php

また、このコードは、プラグアンドプレイ優しいです。

関連する問題