2012-04-08 4 views
0

Ich habe vor kurzem begonnen, eine Portfolio-Website zu entwickeln, die ich mit meinem Simplepie-Blog verlinken möchte. Bisher war es ein recht reibungsloser Prozess - das Laden von Namen und Beschreibungen von Beiträgen und deren Verknüpfung mit dem vollständigen Beitrag war ziemlich einfach. Allerdings hätte ich gerne die Möglichkeit, die Beiträge auch auf meiner eigenen Website zu rendern. Den vollständigen Inhalt eines gegebenen Posts zu erhalten ist einfach, aber ich möchte eine Liste der letzten Posts bereitstellen, die auf eine PHP-Seite meiner Portfolio-Website verweisen, die eine GET-Variable irgendeiner Art verwendet, um den Post zu identifizieren Ich kann dort den gesamten Inhalt rendern.Wie kann ich eine ID von einem SimplePie-Post bekommen, die später verwendet werden kann?

Das ist, wo ich auf Probleme gestoßen bin - es scheint keine Möglichkeit zu geben, einen Beitrag nach einer bestimmten ID oder einem Namen oder ähnlichem zu suchen. Gibt es eine Möglichkeit, wie ich einen eindeutigen Bezeichner von einem Post-Objekt auf einer Seite ziehen kann, dann den Bezeichner an eine andere Seite weiterleiten und den spezifischen Post dort nachschlagen kann? Wenn das unmöglich ist, gibt es irgendeine Möglichkeit für mich, das gesamte Post-Objekt einfach zu übergeben oder es vorübergehend irgendwo zu speichern, damit es von der anderen Seite verwendet werden kann?

Vielen Dank für Ihre Zeit.

Antwort

0

Ich bin über deine Frage gestolpert, um etwas anderes über Simplepie zu suchen. Aber ich arbeite mit einem Identifikator, während ich simplepie benutze. So scheint dies die Antwort auf Ihre Frage zu sein:

Meine getFeedPosts-Funktion in PHP wie folgt aussieht:

public function getFeedPosts($numberPosts = null) { 
    $feed = new SimplePie(); // default options 
    $feed->set_feed_url('http://yourname.blogspot.com'); // Set the feed 
    $feed->enable_cache(true); /* Enable caching */ 
    $feed->set_cache_duration(1800); /* seconds to cache the feed */   
    $feed->init(); // Run SimplePie. 
    $feed->handle_content_type(); 
    $allFeeds = array(); 
    $number = $numberPosts>0 ? $numberPosts : 0; 
    foreach ($feed->get_items(0, $number) as $item) { 
     $singleFeed = array(
      'author'=>$item->get_author(), 
      'categories'=>$item->get_categories(), 
      'copyright'=>$item->get_copyright(), 
      'content'=>$item->get_content(), 
      'date'=>$item->get_date("d.m.Y H:i"), 
      'description'=>$item->get_description(), 
      'id'=>$item->get_id(), 
      'latitude'=>$item->get_latitude(), 
      'longitude'=>$item->get_longitude(), 
      'permalink'=>$item->get_permalink(), 
      'title'=>$item->get_title() 
     ); 
     array_push($allFeeds, $singleFeed); 
    } 
    $feed = null; 
    return json_encode($allFeeds); 
} 

Wie Sie sehen können, baue ich ein assoziatives Array aus und senden es als JSON, was es macht wirklich einfach mit jQuery und ajax (in meinem Fall) auf der Client-Seite.

Die 'ID' ist eine eindeutige Kennung für jeden Beitrag in meinem Blog. Das ist also der Schlüssel, um denselben Beitrag auch in einer anderen Funktion/auf einer anderen Seite zu identifizieren. Sie müssen nur die Beiträge iterieren und diese ID vergleichen. Soweit ich sehen kann, gibt es keine get_item ($ ID) -Funktion. Es gibt eine get_item ($ key) -Funktion, aber es wird auch nur eine bestimmte Post aus der Liste aller Posts durch die Array-Position herausgenommen (was fast genauso ist, wie ich es vorschlage).

+0

Heh, ich hatte in der Zwischenzeit einen ziemlich hässlichen Hack zusammengeworfen, aber das scheint eine viel bessere Lösung zu sein. Schade, es gibt keine Funktion, um sie nach ID zu bekommen. Vielen Dank! –

Verwandte Themen