[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