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

laurent laurent at eosgarden.com
Tue Feb 2 09:34:15 CET 2010


Ce sera peut-être utile à quelqu'un d'autre. Mon erreur était de ne pas
avoir spécifié la table sur laquelle les champs devait être sélectionnés.

languageField = sys_language_uid
selectFields = tt_news.*

Donc voici le code qui va bien avec " showNewsWithoutDefaultTranslation
= 1 "activé.

    _notice:_
    ce code est inclus dans un FCE. les valeurs de pid_list et
    categorySelection viennent de 2 champs du FCE ( field_news_pidlist
    et field_news_single_cat )

// 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 {

    	languageField = sys_language_uid

	selectFields = tt_news.*

        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( | )
                // 10.1.debugData = 1
			}
        }

        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
}




Laurent a écrit :
> Bon, pour finir, la solution temporaire sera de désactiver la
> possibilité de publier une news si elle n'existe pas dans la langue
> originale.
>
> showNewsWithoutDefaultTranslation = 0
>
>
>
> Laurent Cherpit a écrit :
>   
>> 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 
>>
>>
>>
>>     |
>>
>>   
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> TYPO3-france mailing list
>> TYPO3-france at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-france
>>     
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> TYPO3-france mailing list
> TYPO3-france at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-france


More information about the TYPO3-france mailing list