Hallo!
Ich verwende auf meiner News-Seite die LATEST Darstellung, um die 5 neuesten Beiträge darzustellen. Darunter befindet sich ein Link zu einer Seite mit der LIST Darstellung. Mittels dieser Einstellung werden alle weiteren News (also beginnend mit dem 6t neuesten Beitrag) dargestellt. Das stelle ich beim Content-Element bei "Sonstige Einstellungen / ListStartID" ein. Das ganze funktioniert auch so weit.
Aktiviere ich allerdings den Pagebrowser für die LIST Ansicht, wird im Pagebrowser ab Seite 2 mit dem News-Beitrag Nr. 5 begonnen und bis zum letzten Beitrag alle News aufgelistet.
Was mir aufällt: Es werden eigentlich alle Beiträge dargestellt, begonnen wird halt mit dem 6ten, und ab Seite 2 wird eben wie gesagt mit dem 5t neuesten Beiträg begonnen und mit dann allen weiteren fortgefahren.
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.
Gibt es dazu schon Erfahrungen bzw. Lösungen?
Danke
Christoph
Auf welche Typo3-Version bezieht sich deine Frage?
Ich verwende TYPO3 4.0 und die tt_news mit Version 2.3.6
LG
Christoph
So ärgerlich das ist:
Zitat Rupert Germann (Autor tt_news):
as I wrote in the manual: the pagebrowser is not - and will probably never be - compatible with the listStartId feature."
Gefunden im TYPO3-Bugtracker unter http://bugs.typo3.org/view.php?id=2460
Wenn jemandem zu dem Thema was einfällt: Immer her damit ;-)
Gruß
Sven
Das Problem ist, dass in der tx_ttnews.php dem Limit-Element der Abfrage ab der zweiten Seite der Wert der Start-Id nicht übergeben wird.
Wer also die tx_ttnews.php ändern möchte, kann folgendes tun:
in der function getListContent:
// List start ID
if (($theCode == 'LIST' || $theCode == 'LATEST') && $this->config['listStartId'] && !$this->piVars[$pointerName] && !$this->piVars['cat']) {
$selectConf['begin'] = $this->config['listStartId'];
}
Hier die List-Bedingung herausnehmen. Also:
if (($theCode == 'LATEST') && $this->config['listStartId'] && !$this->piVars[$pointerName] && !$this->piVars['cat']) {
Für die Liste eine eigene Bedingung einfügen:
if ($theCode == 'LIST' && $this->config['listStartId'] ) {
$start = $this->config['listStartId'];
$start--;
if ($this->piVars[$pointerName]) {
$selectConf['begin'] = ($this->piVars[$pointerName] * $this->config['limit']) + start;
} else {
$selectConf['begin'] = $start;
}
}
Abschließend muss noch die Anzeige der Browserergebnisse angepasst werden, z.B. in der function makePageBrowser (Standard) so:
$count=($this->internal['res_count'])-$this->config['listStartId'];
und
<!--
List browsing box:
-->
<div'.$this->pi_classParam('browsebox').'>'.
($showResultCount ? '
<p>'.
($this->internal['res_count'] ?
sprintf(
str_replace('###SPAN_BEGIN###','<span'.$this->pi_classParam('browsebox-strong').'>',$this->pi_getLL('pi_list_browseresults_displays','Displaying results ###SPAN_BEGIN###%s to %s</span> out of ###SPAN_BEGIN###%s</span>')),
$this->internal['res_count'] > 0 ? $pR1 : 0,
min(array($this->internal['res_count'],$pR2)),
$this->internal['res_count']
//Statt der letzten Zeile dies
($this->internal['res_count'])-($this->config['listStartId'])+1