[TYPO3-UG France] tt_news: defaut news id et sys_language_uid

Laurent Cherpit laurent at eosgarden.com
Wed Jan 27 14:59:32 CET 2010


Bonjour à tous,

je vais tenter d'exposer mon "problème".

Sur un site en multi-langue, j'ai une page où j'affiche une news en vue
Single et où j'ai mis en place le typoscript ci-dessous afin d'afficher
la dernière news disponible en fonction de la catégorie (pas important
dans le prob. actuel)  et du champ datetime lorsqu'aucun news id
'tt_news' n'est reçu en GET.

Jusque là tout va bien, que ce soit dans la langue par défaut ou la
langue alternative.

Comme j'ai paramétré tt_news pour qu'il autorise la publication d'une
news dans la langue alternative même si elle n'existe pas dans la langue
par défaut (showNewsWithoutDefaultTranslation = 1), je souhaiterais que
ce soit cette dernière qui s'affiche si elle est la plus récente.

Mais ce n'est pas le cas. En y accédant depuis le mode LIST ne passant
l'id de la news en GET pas de problème et lorsque que j'exécute la
requête générée par ce typoscript ci-dessous en sql cela me sort bien la
news voulue.
Par contre en TS, niet, cela ne me sort que la dernière des news publiée
dans la langue alternative ayant une news dans la langue par défaut.

Voici le typoscript, il est dans un FCE( je récupère les valeurs d'autre
champs du FCE pour les params ). Et en dessous la requête sql qu'il
génère (et qui sort bien le bon résultat).
Si quelqu'un peut m'éclairer ce serait super:

Je vous remercie d'avance.
Laurent

    <TypoScript><![CDATA[
    // remove msg
    plugin.tt_news._LOCAL_LANG.fr.noNewsIdMsg =
    plugin.tt_news._LOCAL_LANG.de.noNewsIdMsg =

    10 < plugin.tt_news
    10 {
        code >
        code = SINGLE
        pid_list >
        
        pid_list.field = field_news_pidlist
        
        showRelatedNewsByCategory = 0
        categoryMode = 2
        
        categorySelection.field = field_news_single_cat
        
        catImageMode = 0
        catTextMode = 1
    }

    lib.fceSingleView < .10
    10 >

    10 = COA
    10 {
        
        10 = CONTENT
        10.table = tt_news
        10.select {
        	
    	//ce paramètre ne change rien à la chose
        	//languageField = sys_language_uid

            pidInList.field = field_news_pidlist

            where = tt_news_cat_mm.uid_local=tt_news.uid AND tt_news_cat_mm.uid_foreign=tt_news_cat.uid
            
            andWhere {
            	cObject = COA
            	cObject {
            	    	10 = COA
    		        10.1 = TEXT
    		        10.1.field = field_news_single_cat
    		        10.1.wrap = tt_news_cat.uid IN( | )
    		        
    		        // check if alternative language is more recent of default language
    		        10.2 = TEXT
    		        10.2.data = GPvar:L
    		        //10.2.debugData=1
    		        10.2.noTrimWrap = | OR (tt_news.sys_language_uid=| AND tt_news.l18n_parent=0)|
    		}
            }
            
            join = tt_news_cat_mm join tt_news_cat
            orderBy = datetime desc
            max = 1
        }
        
        10.stdWrap.if.isFalse.data = GPvar:tx_ttnews|tt_news
        
        30 < lib.fceSingleView
    }
    ]]></TypoScript>
      

Et voici la requête sql que le TS génère et qui excutée en tant que tel
sort le bon résultat:

    |SELECT  *
    FROM tt_news
    JOIN tt_news_cat_mm
    JOIN tt_news_cat
    WHERE tt_news.pid IN ( 16  ) 
    AND tt_news_cat_mm.uid_local = tt_news.uid
    AND tt_news_cat_mm.uid_foreign = tt_news_cat.uid
    AND sys_language_uid IN ( 1  ) 
    AND tt_news_cat.uid IN ( 1  ) 
    OR (
    tt_news.sys_language_uid =1 AND tt_news.l18n_parent =0
    )
    AND tt_news.deleted =0
    AND tt_news.t3ver_state <=0
    AND tt_news.hidden =0
    AND tt_news.starttime <=1264596060
    AND (
    tt_news.endtime =0 OR tt_news.endtime >1264596060
    )
    AND (
    tt_news.fe_group = '' OR tt_news.fe_group IS NULL OR
    tt_news.fe_group ='0' OR (
    tt_news.fe_group LIKE '%,0,%' OR tt_news.fe_group LIKE '0,%' OR
    tt_news.fe_group LIKE '%,0' OR tt_news.fe_group ='0'
    ) OR (
    tt_news.fe_group LIKE '%,-1,%' OR tt_news.fe_group LIKE '-1,%' OR
    tt_news.fe_group LIKE '%,-1' OR tt_news.fe_group ='-1'
    )
    )
    ORDER  BY datetime DESC 
    LIMIT 1 



    |



More information about the TYPO3-france mailing list