19 juin 2009 ~ 16 Commentaires

Créer plusieurs flux RSS pour tt_news

Pour créer des flux RSS pour tt_news, il y a plusieurs règles à respecter.

1 => Il y a une configuration TYPOSCRIPT pour l’extension à faire. Cette configuration permet de paramétrer le format XML pour tt_news :

plugin.tt_news {
  displayXML {
    rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = Blog de Thomas LEROY
    xmlLink = http://www.tleroy.fr/
    xmlDesc = Liste des flux
    xmlLang = fr
    title_stdWrap.htmlSpecialChars = 1
    title_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.stripHtml = 1
    subheader_stdWrap.htmlSpecialChars = 1
    subheader_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.crop = 100 | ... | 1
    subheader_stdWrap.ifEmpty.field = bodytext
    xmlLastBuildDate = 1
  }
}

2 => Ensuite, nous allons créer plusieurs types de page, autant que le nombre de flux RSS.

### CONFIGURATION GLOBALE
xmlevenements = PAGE
xmlevenements {
  10 >
  10 < plugin.tt_news
  10 {
    pid_list >
    ### Page de la vue Détaillée
    singlePid = 10
    defaultCode = XML
    categoryMode = 1
    catImageMode = 0
    catTextMode = 0
  }
  config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
  }
}
### FLUX RSS 1
xmlevenement1 < xmlevenements
xmlevenement1 {
  typeNum = 100
  10.displayXML.xmlDesc = RSS TYPO3

  ### ID de la catégorie de la news
  # 10.categorySelection = 9

  ### PID du dossier où sont stockées les news
  10.pid_list = 53
}
### FLUX RSS 2
xmlevenement2 < xmlevenements
xmlevenement2 {
  typeNum = 101
  10.displayXML.xmlDesc = RSS TYPOSCRIPT

  ### ID de la catégorie de la news
  # 10.categorySelection = 10

  ### PID du dossier où sont stockées les news
  10.pid_list = 54
}
### FLUX RSS 3
xmlevenement3 < xmlevenements
xmlevenement3 {
  typeNum = 102
  10.displayXML.xmlDesc = RSS PHP

  ### ID de la catégorie de la news
  # 10.categorySelection = 11

  ### PID du dossier où sont stockées les news
  10.pid_list = 55
}

Il peut y avoir 2 façons différentes de configurer comment seront exportées les news. Il est possible de selectionner les news par le dossier où elles sont stockées ou bien par leur catégorie.

3 => Pour ajouter la possibilité aux internautes de s’abonner aux flux RSS depuis leur navigateur, il faut aussi créer le TYPOSCRIPT suivant :

page.headerData.105 >
page.headerData.105 = HTML
page.headerData.105.value (
  <link rel="alternate" type="application/rss+xml" title="RSS TYPO3" href="?type=100" />
  <link rel="alternate" type="application/rss+xml" title="RSS TYPOSCRIPT" href="?type=101" />
  <link rel="alternate" type="application/rss+xml" title="RSS PHP" href="?type=102" />
)

Pour plus de détails, je vous conseille de lire la documentation tt_news.

16 commentaires pour “Créer plusieurs flux RSS pour tt_news”

  1. liyarthan 25 juin 2009 at 10:17 Permalink

    Bonjour monsieur, j’ai un problème avec avec mon RSS.
    J’ai suivi le code que vous avez rajouté en modifiant les informations en ce qui concerne mon site.
    Sur ma page d’accueil j’ai une liste de news voici le TS:

    lib.newsLatest
    code = LATEST
    latestLimit = 5
    pid_list >
    pid_list = 78
    templateFile = fileadmin/templates/templatesPlugins/tt_news.html
    singlePid=81
    archiveTypoLink.parameter = 82

    }

    comme vous pouvez le constatez, j’ai une page qui affiche les archives, voici le TS

    lib.newsArchives
    code = LIST
    pid_list = 78
    singlePid=81
    limit=3
    }

    mon TS de la page où les news sont affichées de maniere unique

    lib.newsArchives
    code = SINGLE
    pid_list = 78
    templateFile = fileadmin/templates/templatesPlugins/tt_news.html
    archiveTypoLink.parameter = 82
    }

    Enfin une page pour le RSS des news.
    pour cela j’ai pris en compte votre code et j’ai modifié les champs avec les miens:
    Voici mon TS de la page RSS, bien sur il y a pas bcp de changement avec le votre:

    plugin.tt_news {
    displayXML {
    rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = Essai avec un RSS
    xmlLink = http://www.tleroy.fr/
    xmlDesc = Liste des flux
    xmlLang = fr
    title_stdWrap.htmlSpecialChars = 1
    title_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.stripHtml = 1
    subheader_stdWrap.htmlSpecialChars = 1
    subheader_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.crop = 100 | … | 1
    subheader_stdWrap.ifEmpty.field = bodytext
    xmlLastBuildDate = 1
    }
    }
    ### CONFIGURATION GLOBALE
    xmlevenements = PAGE
    xmlevenements {
    10 >
    10
    ### Page de la vue Détaillée
    singlePid = 81
    defaultCode = XML

    }
    config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
    }
    }

    ### FLUX RSS 1
    xmlevenement2 < xmlevenements
    xmlevenement2 {
    typeNum = 100
    10.displayXML.xmlDesc = RSS TYPO3

    ### ID de la catégorie de la news
    #10.categorySelection = 1

    ### PID du dossier où sont stockées les news
    10.pid_list = 78
    }

    ### FLUX RSS 2
    xmlevenement2 < xmlevenements
    xmlevenement2 {
    typeNum = 101
    10.displayXML.xmlDesc = RSS TYPOSCRIPT

    ### ID de la catégorie de la news
    #10.categorySelection = 1

    ### PID du dossier où sont stockées les news
    10.pid_list = 78
    }

    ### FLUX RSS 3
    xmlevenement3 < xmlevenements
    xmlevenement3 {
    typeNum = 102
    10.displayXML.xmlDesc = RSS PHP

    ### ID de la catégorie de la news
    #10.categorySelection = 1

    ### PID du dossier où sont stockées les news
    10.pid_list = 78
    }

    Lorsque je clique sur l’icone voir, j’arrive à avoir une page en xml, avec l’icone du RSS et la listebox.
    Par contre mes news ne s’affiche pas.

    Avez vous une idée?

    j’utilise typo3 4.2
    j’ai inclus les extensions
    css_styled_content
    News_feed(RSS,RDf,ATOM) tt_news
    CSS_based tmpl (tt_news)
    News_Feed(chnewsfeeds)
    et table-based tmpl(tt_news).

    Pour chacune des pages que j’ai cité, elles ont toutes leurs propre template.

  2. liyarthan 25 juin 2009 at 10:20 Permalink

    il m’a oublié de rajouter ceci:
    ### CONFIGURATION GLOBALE
    xmlevenements = PAGE
    xmlevenements {
    10 >
    10
    ### Page de la vue Détaillée
    singlePid = 81
    defaultCode = XML

    }

  3. liyarthan 25 juin 2009 at 11:54 Permalink

    c’est bon ca marche j’ai fait une bourde (pid_list), je me suis trompé d’id.
    En tous cas merci pour votre code

  4. Typo3user 6 novembre 2009 at 13:10 Permalink

    Bonjour,

    Je viens d’installer votre typoscript mais quand il me mets le lien pour le 1er flux RSS, il n’affiche aucune news. Pourtant si je mets la même config dans RSS2 il affiche tout. Que faire ? Merci

  5. Thomas Leroy 8 novembre 2009 at 22:21 Permalink

    Pouvez-vous me montrer le Typoscript que vous essayez ?
    C’est assez difficile de vous aider sans cela :)

  6. Typo3user 9 novembre 2009 at 09:04 Permalink

    Voici mon typoscript :

    ### CONFIGURATION DES FLUx RSS

    plugin.tt_news {
    displayXML {
    rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = Test de flux RSS
    xmlLink = http://didier.hemmer.ch/
    xmlDesc = Liste des flux RSS de didier.hemmer.ch
    xmlLang = fr
    title_stdWrap.htmlSpecialChars = 1
    title_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.stripHtml = 1
    subheader_stdWrap.htmlSpecialChars = 1
    subheader_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.crop = 100 | … | 1
    subheader_stdWrap.ifEmpty.field = bodytext
    xmlLastBuildDate = 1
    }
    }

    xmlnews = PAGE

    xmlnews {
    typeNum = 100
    10 >
    10
    10.pid_list = {$plugin.tt_news.pid_list}
    10.singlePid = {$plugin.tt_news.singlePid}
    10.defaultCode = XML
    config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
    }
    }

    ### CONFIGURATION GLOBALE
    xmlevenements = PAGE
    xmlevenements {
    10 >
    10
    ### Page de la vue Détaillée
    singlePid = 78
    defaultCode = XML
    categoryMode = 1
    catImageMode = 0
    catTextMode = 0
    }
    config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
    }
    }

    ### FLUX RSS 1
    xmlevenement2 < xmlevenements
    xmlevenement2 {
    typeNum = 100
    10.displayXML.xmlDesc = RSS Admin

    ### ID de la catégorie de la news
    # 10.categorySelection = 5

    ### PID du dossier où sont stockées les news
    10.pid_list = 77
    }

    ### FLUX RSS 2
    xmlevenement2 < xmlevenements
    xmlevenement2 {
    typeNum = 101
    10.displayXML.xmlDesc = RSS Technique

    ### ID de la catégorie de la news
    10.categorySelection = 6

    ### PID du dossier où sont stockées les news
    10.pid_list = 77
    }

    ### FLUX RSS 3
    xmlevenement3
    page.headerData.105 = HTML
    page.headerData.105.value (

    )

    un grand merci

  7. Thomas Leroy 9 novembre 2009 at 09:33 Permalink

    Bonjour,

    Je pense avoir fait une erreur dans mon code exemple, pour le Flux 1 :

    Je pense qu’il faut remplacer :
    ### FLUX RSS 1
    xmlevenement2 < xmlevenements
    xmlevenement2 {

    par :
    ### FLUX RSS 1
    xmlevenement1 < xmlevenements
    xmlevenement1 {

    Pouvez-vous me dire si c'est bon après cette modification ?

  8. Typo3user 9 novembre 2009 at 10:28 Permalink

    Un grand Merci, tout fonctionne correctement

  9. TYPO3_user 9 mars 2010 at 16:46 Permalink

    Bonjour,

    Comment faire pour un tt_news qui en 2 langues FR/DE ? J’ai installé en français selon votre tuto c’est OK.

    Auriez-vous la solution?

    Merci

  10. Merimac 21 décembre 2010 at 16:24 Permalink

    @TYPO3_user il faut que tu fasses une traduction de ta page.

  11. pdo 11 février 2011 at 14:30 Permalink

    Bonjour,

    Je cherche à implémenter sur un site TYPO3 plusieurs flux RSS et j’ai donc repris votre script moyennant quelques changements (id pour coller sur mon site).

    J’ai actuellement 2 flux RSS:
    - Flux 1: pid_list = 122 (type=100)
    - Flux 2: pid_list = 122,119 (type=106)

    Actuellement, dans mes deux flux, j’ai bien une liste de nouvelle mais lorsque je tente d’accèder aux nouvelles, le lien est faux (et du coup, on ne peut pas accéder à la nouvelle à partir du flux). Je m’explique:
    - Lien obtenu: https://xxxxx/portail//?no_cache=1&tx_ttnews%5Btt_news%5D=376
    - Pour les nouvelles de type 122 le lien devrait être : https://xxxxx/portail/support-info/detail-support-info/?no_cache=1&tx_ttnews%5Btt_news%5D=376
    - Pour les nouvelles de type 119 le lien devrait être : https://xxxxx/portail/astuce-du-jour/detail-astuce/?no_cache=1&tx_ttnews%5Btt_news%5D=376

    Avez vous une idée?
    D’avance merci.

    Voici mon setup:
    ===============

    # Configuration générale

    page = PAGE
    page.typeNum = 0
    page.config.index_enable = 1
    page.config.index_externals = 1
    #page.config.admPanel =1
    plugin.tt_news.allowCaching = 0

    includeLibs.tets = EXT:cyo_fil_ariane_communautes/pi1/class.tx_cyofilarianecommunautes_pi1.php
    page.1 = USER
    page.1.userFunc = tx_cyofilarianecommunautes_pi1->main_page

    # Configuration spécifique

    plugin.tx_indexedsearch._CSS_DEFAULT_STYLE >
    plugin.tx_indexedsearch {
    templateFile = fileadmin/templates/t3xtemplates/indexed_search/indexed_search.tmpl
    search.rootPidList = 17
    show.resultNumber = 1

    show {
    rules = 0
    parsetimes = 0
    L2sections = 0
    L1sections = 1
    LxALLtypes = 0
    clearSearchBox = 0
    clearSearchBox.enableSubSearchCheckBox = 0
    forbiddenRecords = 0
    alwaysShowPageLinks = 0
    advancedSearchLink = 0
    resultNumber = 0
    mediaList =
    }

    }
    plugin.tt_news {
    displayXML {
    rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl
    xmlFormat = rss2
    xmlTitle = Diapason
    ######xmlLink = https://chorus-diapason-preprod.finances.ader.gouv.fr/portail/
    xmlDesc = Liste des flux
    xmlLang = fr
    title_stdWrap.htmlSpecialChars = 1
    title_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.stripHtml = 1
    subheader_stdWrap.htmlSpecialChars = 1
    subheader_stdWrap.htmlSpecialChars.preserveEntities = 1
    subheader_stdWrap.crop = 100 | … | 1
    subheader_stdWrap.ifEmpty.field = bodytext
    xmlLastBuildDate = 1
    }
    }

    ### CONFIGURATION GLOBALE
    xmlevenements = PAGE
    xmlevenements {
    10 >
    10
    ### Page de la vue Détaillée
    singlePid = 17
    defaultCode = XML
    categoryMode = 1
    catImageMode = 0
    catTextMode = 0
    }
    config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:text/xml
    no_cache = 1
    xhtml_cleaning = 0
    }
    }

    ### FLUX RSS Support Info
    xmlevenement1 < xmlevenements
    xmlevenement1 {
    typeNum = 100
    10.categoryMode=1
    10.displayXML.xmlLink=https://chorus-diapason-preprod.finances.ader.gouv.fr/portail/support-info/detail-support-info/

    10.displayXML.xmlDesc = DIAPASON – Support Info
    ### ID de la catégorie de la news
    # 10.categorySelection = 9

    ### PID du dossier où sont stockées les news
    10.pid_list = 122
    }

    ### FLUX RSS Diapason (Général)
    xmlevenement6

    plugin.tt_news._CSS_DEFAULT_STYLE >
    plugin.tt_news.allowCaching = 1

    plugin.tt_news {
    limit=10000
    #general_stdWrap >

    # VUE LISTING DES NEWS
    displayList {
    subheader_stdWrap.wrap = |
    date_stdWrap.strftime= %d/%m/%y
    image.imageLinkWrap = 0
    imageWrapIfAny = |
    }

    displayLatest {
    date_stdWrap.strftime= %d/%m/%y
    image.imageLinkWrap = 0
    imageWrapIfAny = |
    }

    # VUE DETAIL DES NEWS
    displaySingle {
    subheader_stdWrap.parseFunc
    content_stdWrap.parseFunc < lib.parseFunc_RTE
    linksItem_stdWrap.parseFunc
    date_stdWrap.strftime= %d/%m/%y
    image.imageLinkWrap = 0
    imageWrapIfAny = |
    }

    displayLatest.linkTitleField.wrap = |

    displaySingle.subheader_stdWrap >

    displayLatest.title_stdWrap >

    # Pagebrowser settings
    pageBrowser {
    maxPages = 10
    showPBrowserText = 0
    actPage_stdWrap.wrap = |
    page_stdWrap.wrap =
    }
    _LOCAL_LANG.default {
    pi_list_browseresults_prev =
    pi_list_browseresults_next =
    }

    }
    plugin.tt_news.recursive = 0

  12. Thomas Leroy 11 février 2011 at 14:45 Permalink

    Dans l’instruction « xmlevenements », j’ai l’impression qu’il te manque une accolade après « 10″.

    C’est le paramètre « singlePid » qui est important pour l’affichage de la vue détaillée de ta news. Vérifie qu’il soit bien rempli dans le TS Object Borwser.

    De plus, je ne sais pas si c’est une erreur au niveau du c/c mais l’instruction « xmlevenement6″ n’est pas terminée.

  13. THIBAUD 26 septembre 2011 at 13:23 Permalink

    Je viens de mettre en place plusieurs fils RSS dans mon typo3 et tout fonctionne correctement.
    Merci pour cet article qui m’a été d’une grande aide.

    J’ai un revanche un petit souci.
    Le code XML n’a pas l’air de prendre en compte la valeur de plugin.tt_news.displayXML.xmlLlink que je déclare, ni même la baseurl déclarée dans mon template principal.
    Le lien sur mes titres de news (dans mon flux) ne correspondent donc pas à ce que je souhaite…

    Une idée pour personnaliser ce lien ?

  14. djuh 13 avril 2012 at 14:35 Permalink

    Il semblerait que sur certaines versions de typo3 la ligne
    « defaultCode = XML » ne fonctionne pas, il faut la remplacer par « code = XML » :)

  15. Bob 25 septembre 2014 at 16:15 Permalink

    Bonjour,
    Je vous félicite pour ce post très intéressant. Je me demandais s’il était possible d’afficher le titre d’un contenu comme titre de flux ?

    un truc du genre :
    plugin.tt_news {
    displayXML {
    xmlTitle < DB:tt_content:10828:header

    Si vous pouviez m'éclairer?
    Je suis newbee dans typo3… J'ai effectué plusieurs tests sans compter les recherches et quelque chose doit surement m'échapper.
    Merci


Laisser un commentaire