Nasıl doğru bir Zend Akışını oluşturabilirim?

1 Cevap php

Ben başarılı bir basit bir RSS beslemesi oluşturduk, ancak girdiler olarak okunmamış ve güncel geri gelmesini, ve her seferinde yeniden istemci silinen kayıtlar ben beslemesini güncellemek posta isteyin.

Ben yanlış ne yapıyorum?

Ben bir rss feed oluşturmak için bu basit işlevi kullanın:

public static function getFeed($db)
{
    $title = 'Latest feeds';
    $feedUri = '/rss/';

    //link from which feed is available
    $link = 'http://' . $_SERVER['HTTP_HOST'] . $feedUri;

    //create array according to structure defined in Zend_Feed documentation
    $feedArr = array('title' => $title,
                     'link'  => $link,
                     'description' => $title,
                     'language' => 'en-us',
                     'charset' => 'utf-8',
                   //'published' => 1237281011,
                     'generator' => 'Zend Framework Zend_Feed',
                     'entries' => array()
              );
    $itemObjs = array();
    $select = $db->select('id')->from('things')
                               ->order('createddate desc')
                               ->limit(10);
    $results = $db->fetchAll($select->__toString());
    $count = count($results);
    for($i=0;$i<$count;$i++) {
        $itemObjs[] = SiteUtil::getItemObjectInstance($db, $results[$i]['id']);
    }
    $count = count($itemObjs);
    for($i=0;$i<$count;$i++) {
        $obj = & $itemObjs[$i];
        $feedArr['entries'][] = array('title' => $obj->getSummary(),
                                      'link'    => 'http://' . $_SERVER['HTTP_HOST'] . $obj->getDetailUri(),
                                      'description' => $obj->description,
                                      'publishdate' => $obj->publishedDate,
                                      'guid' => 'http://' . $_SERVER['HTTP_HOST'] . $obj->getDetailUri()
                                      );
    }
    $feed = Zend_Feed::importArray($feedArr, 'rss');
    return $feed;
}

Kontrolör sınıfta eylemdir:

public function rssAction()
{
    $feed = FeedUtil::getFeed($this->db);
    $feed->send();
}

So to access the feed, I point the client to: http://mysite.com/rss

Ben test etmek için mac mail'in rss istemcisi kullanıyorum. Ben test amaçlı veritabanındaki tüm 5 öğe gösteren gayet yem indirme,. Aşağıdaki gibi problemler aşağıdaki gibidir:

Ben 'okumak' ve ardından beslemesini güncellemek için mail söylemek gibi bir veya daha fazla öğe işaretlerseniz ben ilk etapta onları indirilen hiç sanki 1), yine tüm öğeleri çeker.

Ben bir veya daha fazla öğe silerseniz 2) onlar ben akışına abone ilk kez vardı yine sanki, okunmamış, tekrar geri gelmek.

3) Yemler güncellenen gibi always işaretlenmiş. Bu durum olması gerekiyordu?

Ben kuruyorum parametreleri ile yapmak bir şeydir, ben bir şey ihmal ediyorum, ya da çözüm HTTP içerik başlıklarını ayarlama gibi daha ince bir şey (örneğin '304 'Modifiye değil) olabilir?

Rss Benim anlayış okumak veya istemci silinmiş olarak bir öğe işaretli edildikten sonra, ben sonra kulüpler davranış olduğu, geri gelmek asla gerektiğidir.

Sadece dikkat, 'bağlantı' ve 'guid' parametreler her zaman benzersiz ve ben 'yayınlanan' ve 'PublishDate' (isteğe bağlı her ikisi de), sadece aynı sonucu elde nitelikleri ile deney denedim. Yukarıdaki kod sadece ilgili bitleri gösteren ne var basitleştirilmiş versiyonu, ve nihayet, evet, ben rss specification okudum.

Şimdiden teşekkürler, burada sunulan herhangi bir yardım için, herhangi bir noktayı açıklığa kavuşturmak için mutluluk duyarız.

1 Cevap

Zend Framework Doc göre, bir girdinin son değişiklik tarihini ayarlamak için lastUpdate parametresini kullanmanız gerekir.

 'entries'     => array(
                         array(
                               [...]
                               'lastUpdate'   => 'timestamp of the publication date', // optional
                               [...]

Yani published yem için, ve lastUpdate girişler için.