contao/test — Issue #2088: Lösung: Nur eine Seite verwenden für *List und *Reader
Author: importer
Created: 2011-11-29 09:05:37+00:00
State: open
Labels: Feature, framework

Problem:

Bis jetzt muss man immer zwei Seiten anlegen, eine für die **List und die andere für den **Reader. Zum Beispiel bei den Nachrichten: Für die Nachrichtenliste eine Seite "Nachrichten" und für den Nachrichtenleser eine Seite "Nachricht anzeigen". Bei der Nachrichtenleserseite sieht die URL dann so aus: "nachricht-anzeigen/items/nachricht.html". Schöner und logischer wäre aber eigentlich, wenn die URL so aussehen würde: "nachrichten/items/nachricht.html". Wenn man nicht zwei Seiten verwendet, wird z.B. bei "nachrichten/items/nachricht.html" der Nachrichtenleser, die Nachrichtenliste, sowie alle anderen Inhaltselemente im Artikel auf der Webseite angezeigt. Das möchte man aber meistens nicht. Deshalb habe ich hier einen Lösungsvorschlag bzw. Feature für Contao 2.9, bei dem die **List und der **Reader auf einer Seite Platz haben.

Lösung:

1. Ein neues Feld für die Inhaltselemente erstellen:

```
$GLOBALS['TL_DCA']['tl_content']['fields']['doNotLoad'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['doNotLoad'],
'exclude' => true,
'inputType' => 'checkbox',
'eval' => array('tl_class'=>'w50')
);
```

2. Dieses Feld natürlich in der Datenbank unter tl_content und bei allen Inhaltselementpaletten unter "Experten-Einstellungen" hinzufügen.

3. In ContentElement.php folgendes hinzufügen:

```
...
/**
* Parse the template
* @return string
*/
public function generate()
{
if ($this->Input->get('items') AND $this->arrData['doNotLoad'])
{
return;
}
...
```

Vorteile:

- logischere und schönere URLs
- weniger Seiten in der Seitenstruktur
- wenn man z.B. bei der "Nachricht anzeigen"-Seite in der Breadcrumb auf "Nachricht anzeigen" klickt, kommt man nicht auf eine leere Seite

--- _Originally created by innovativecreation on June 6th, 2010, at 03:23pm (ID 2088)_