[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