Martin's kleine Welt - TYPO3, Linux und mehr

25.01.2009
21:30

News-Feed abonieren - pro Kategorie

Bei gewählter Kategorie den RSS Feed entsprechend anpassen

Wenn ich eine bestimmte Kategorie gewählt habe, dann möchte ich auch die Möglichkeit haben, nur die Kategorie als RSS-Feed zu bekommen. Allerdings ist das derzeit mit dem T3Blog ohne Eingriff nicht möglich.


Daher habe ich ein paar Zeilen in

t3blog/pi1/widget/rss/class.rss.php

eingefügt.

t3blog/pi1/widget/rss/class.rss.php

  /**
   * Gets content of requested table
   *
   * @param string  $table: Name of the table
   * @param string  $rssversion: Version of the rss-feed
   * @return  xml-rss feed
   */
  function getContentResult($table,$rssversion) {
   
    global $TCA;
   
    if ($TCA[$table]) {
   
      $select = $table.'.* ';
     
      if ($this->conf['postItemOrderBy'] == '') {
        $orderBy = '';
      } else {
        $orderBy = ' ORDER BY '.$table.'.'.$this->conf['postItemOrderBy'];
      }
     
      // only 15 items in RSS 0.91
      $limit = $this->conf['postItemCount'];

      if ($this->conf['postItemCount'] == '') { 
        $limit = '';
      }
      else {
       
        if ($limit > '15' and $rssversion=='0.91'){
          $limit = '15';
        }
       
        $limit   = ' LIMIT 0,'.$limit;
      }
     
      if ($limit == '' && $rssversion=='0.91'){
        $limit   = ' LIMIT 0,15';
      }
     
      $groupBy   = '';
      $orderBy_limit  = '  '.$orderBy.$limit;
     
      $where = ' WHERE '.$table.'.deleted = 0 AND '.$table.'.hidden = 0';
       
      // checks for posts only available on specific fe-users
      $fe_groupCheck  = $GLOBALS['TSFE']->fe_user->groupData[uid];
     
      if(empty($fe_groupCheck)) {
       
        $where.= ' AND '.$table.'.fe_group = "0"';
      } else {
        $where.= ' AND ('.$table.'.fe_group = 0 OR '.$table.'.fe_group = '.$fe_groupCheck['1'].')';
      }
     
           
      if($table == 'tx_t3blog_com') {
        $where .= ' AND '.$table.'.spam = 0 AND '.$table.'.approved = 1 ';
      }
     
      if($table == 'tx_t3blog_post'){
        $select   .= ', CONCAT(tt_content.header, \' \', tt_content.bodytext) AS text ';
        $table   .= ' JOIN tt_content ON ( tt_content.irre_parentid = tx_t3blog_post.uid AND tt_content.irre_parenttable = \'tx_t3blog_post\' )';
        $where   .= ' AND tt_content.hidden = 0 AND tt_content.deleted = 0';
        $groupBy  .= ' GROUP BY tx_t3blog_post.uid ';
      }

      if (isset($this->conf['feedAddWhere']) || isset($this->conf['feedAddWhere.'])) {
        $where .= ' AND '.$this->cObj->stdWrap($this->conf['feedAddWhere'], $this->conf['feedAddWhere.']).' ';
       
      }
      if (isset($this->conf['feedAddTable']) || isset($this->conf['feedAddTable.'])) {
        $table .= ' '.$this->cObj->stdWrap($this->conf['feedAddTable'], $this->conf['feedAddTable.']).' ';
      }
      $query  = 'SELECT '.$select.' FROM '.$table.$where.$groupBy.$orderBy_limit;         

      $res  = mysql(TYPO3_db,$query);
      return $res;
    }
  }
  

TypoScript

# Da die Parameter die per TypoScript übergeben werden, nicht
# noch extra geprüft werden, müssen wir selber dafür sorgen, dass
# keine SQL-Injections vorgenommen werden können.
# Daher lade ich zu Beginn den entsprechenden Get/Post Wert für
# die Kategorie in einen Register und sichere mit "intval" ab, dass
# es sich um eine Zahl handelt.
page.1 = LOAD_REGISTER
page.1.category.data = GPvar:tx_t3blog_pi1|blogList|category
page.1.category.intval = 1

# An dieser Stelle lade ich den Kategorienamen ebenfalls in einen
# Register, damit ich diesen später via {register:category_name}
# ausgeben kann. Nötig ist das nicht - aber vermutlich hilfreich:)
page.1.category_name.cObject = RECORDS
page.1.category_name.cObject {
  source.data = register:category
  tables = tx_t3blog_cat
  conf.tx_t3blog_cat = TEXT
  conf.tx_t3blog_cat.field = catname
}



# Diese Änderungen sollen nur greifen,
# falls der RSS-Link aufgerufen wurde und
# eine Kategorie gewählt ist:
[globalVar = GP:tx_t3blog_pi1|rss|value = Comments]&&[globalVar = GP:tx_t3blog_pi1|blogList|category > 0]
  xmlnews.10.widget.rss.feedAddWhere  >
  xmlnews.10.widget.rss.feedAddTable >
 
  # Durch die hinzugefügten TypoScript Eigenschaften "feedAddTable"
  # und "FeedAddWhere" können wir ganz einfach die entsprechenden
  # SQL-Querys anpassen:
  xmlnews.10.widget.rss.feedAddWhere = tx_t3blog_post_cat_mm.uid_foreign = {register:category}
  xmlnews.10.widget.rss.feedAddWhere.insertData = 1
  xmlnews.10.widget.rss.feedAddTable = LEFT JOIN tx_t3blog_post_cat_mm ON (tx_t3blog_post_cat_mm.uid_local = tx_t3blog_com.fk_post )

[end]

 

forge.typo3.org

Schade, dass die Extension nicht bei forge.typo3.org entwickelt wird. Es wäre schön solche kleinen Änderungen einfach und unkompliziert zurückgeben zu können.

  •  
  • 0 Kommentare
  •  

Mein Kommentar

Benachrichtige mich, wenn jemand einen Kommentar zu dieser Nachricht schreibt.

Zurück

TYPO3 Certified Integrator
« Januar 2009 »
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Ähnliche Beiträge:

was ganz anders:


Falls ich Dir was Gutes getan haben sollte - und Du es mir zurückzahlen möchtest, ist das jetzt via Paypal einfach möglich.

Kategorien

Letzte Kommentare

Hey
01.11.2011 09:57
UPDATE Query für dt. Stopwörter
16.11.2009 11:18
via Extension?
05.10.2009 09:09
Stopwords global filtern?
04.10.2009 12:20

Archiv

  • [-]2010(8)
    • [-]Oktober(1)
    • [-]Mai(1)
    • [-]April(1)
    • [-]März(4)
    • [-]Februar(1)
  • [-]2009(30)
    • [-]November(1)
    • [-]Oktober(4)
    • [-]August(3)
    • [-]Juli(4)
    • [-]Juni(1)
    • [-]Mai(3)
    • [-]März(1)
    • [-]Februar(3)
    • [-]Januar(10)
  • [-]2008(2)
    • [-]Dezember(1)
    • [-]November(1)

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten
Bookmark bei: Mr. Wong Bookmark bei: Webnews Bookmark bei: Icio Bookmark bei: Oneview Bookmark bei: Linkarena Bookmark bei: Favoriten Bookmark bei: Seekxl Bookmark bei: Favit Bookmark bei: Social Bookmarking Tool Bookmark bei: Power Oldie Bookmark bei: Bookmarks.cc Bookmark bei: Newskick Bookmark bei: Newsider Bookmark bei: Linksilo Bookmark bei: Readster Bookmark bei: Folkd Bookmark bei: Yigg Bookmark bei: Digg Bookmark bei: Del.icio.us Bookmark bei: Reddit Bookmark bei: Simpy Bookmark bei: StumbleUpon Bookmark bei: Slashdot Bookmark bei: Netscape Bookmark bei: Furl Bookmark bei: Yahoo Bookmark bei: Spurl Bookmark bei: Google Bookmark bei: Blinklist Bookmark bei: Blogmarks Bookmark bei: Diigo Bookmark bei: Technorati Bookmark bei: Newsvine Bookmark bei: Blinkbits Bookmark bei: Ma.Gnolia Bookmark bei: Smarking Bookmark bei: Netvouz Information

Meist gelesene Posts

indexed_search Performance Probleme
1861 times viewed
03.10.2009 17:36
Timestamp umwandeln
1171 times viewed
21.03.2010 13:34
example.com - Beispiel gefällig?
560 times viewed
09.10.2009 13:08
Session verwenden mit TypoScript
532 times viewed
25.01.2009 22:27