Zitat von
buddy274
Nun möchte ich dass jeder Eintrag dieser Liste auf eine entsprechende generierte Detailseite verlinkt.
Für die Details habe ich auch bereits ein FE-Modul (inkl. Template) geschrieben und auch schon eine Subpage für die Detailansicht eingebaut.
Wie man so etwas außerhalb von Contao bewerkstelligt ist mir vollkommen klar,
nur weiss ich leider nicht wie man den Link generieren müsste, damit dieser das Contao Framework anspricht,
welches dann anhand mitgelieferter Parameter (z.b. Id der Stellenanzeige) meinen Content zusammenbaut und entsprechend anzeigt (am besten auch gleich den Link zurück
).
In den Contao-Coremodulen (z.B. News, Events) legt der Admin im BE ja selbst fest, welche die Detailseite ist (Weiterleitung). In Deiner Klasse mußt Du nun diese Weiterleitungsseite auslesen und kannst Dir mit generateFrontendUrl Deine neue URL zusammenbauen.
Ich gehe in einer eigenen Erweiterung einen anderen Weg. Dort habe ich die Seiten bereits fest in der Erweiterung zugeteilt. Zudem arbeite ich mit einem Hook, der mir die URL plus Parameter als Array liefert:
config/config.php:
PHP-Code:
define(ALIAS_SPIELER, 'dwz-spieler'); // Spielerseite
define(ALIAS_VEREIN, 'dwz-verein'); // Vereineseite
define(ALIAS_VERBAND, 'dwz-verband'); // Verbändeseite
define(ALIAS_TURNIER, 'dwz-turnier'); // Turniereseite
// http://de.contaowiki.org/Strukturierte_URLs
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('DeWIS\DeWIS', 'getParamsFromUrl');
Auf den fest definierten Seiten läuft jeweils ein FE-Modul. Im FE kannst Du das Ganze hier testen.
Meine Hookfunktion getParamsFromUrl sieht so aus:
helper/DeWIS.php:
PHP-Code:
class DeWIS
{
/**
* Hook-Funktion:
* Wertet das URL-Parameter-Array aus und modifiziert es, wenn das Array für DeWIS bestimmt ist
*
* @return array
*/
public function getParamsFromUrl($arrFragments)
{
//print_r($arrFragments);
$args = count($arrFragments); // Anzahl Argumente
if($args > 1)
{
// Wenn $args = 1, dann steht dort nur das Seitenalias
switch($arrFragments[0])
{
case ALIAS_SPIELER:
if($arrFragments[1] == 'auto_item') $arrFragments[1] = 'id';
break;
case ALIAS_VEREIN:
if($arrFragments[1] == 'auto_item') $arrFragments[1] = 'zps';
break;
case ALIAS_VERBAND:
if($arrFragments[1] == 'auto_item') $arrFragments[1] = 'zps';
break;
case ALIAS_TURNIER:
if($arrFragments[1] == 'auto_item')
{
$arrFragments[1] = 'code';
}
else
{
$newArray = array($arrFragments[0]);
// 1. Wert ist offensichtlich ein Turniercode
$newArray[1] = 'code';
$newArray[2] = $arrFragments[1];
if($arrFragments[2] == 'Ergebnisse')
{
// Ein weiterer Wert wartet: Ergebnisse des Turniers anzeigen
$newArray[3] = 'view';
$newArray[4] = 'results';
}
elseif($arrFragments[2])
{
// Ein weiterer Wert wartet: ID des Spielers
$newArray[3] = 'id';
$newArray[4] = $arrFragments[2];
$newArray[5] = 'view';
$newArray[6] = 'results';
}
$arrFragments = $newArray;
}
break;
default:
}
}
//echo "<br>";
//print_r($arrFragments);
return $arrFragments;
}
}
Was macht die Funktion? Lies Dir dazu einfach mal diesen Thread durch. Es hat eine Weile gebraucht, bis ich Spooky verstanden habe, aber letztendlich hat es geklappt.
Lautet die URL z.B. domain.de/spieler/10089054.html steht im Array $arrFragments welches der Funktion übergeben wird:
PHP-Code:
array(
'spieler',
'auto_item', // wohl nur, wenn auto_item aktiviert ist
'10089054'
)
Ist $arrFragments[0] == "spieler" ist die URL für meine Erweiterung bestimmt und ich kann das Array modifizieren, z.B.:
PHP-Code:
array(
'spieler',
'id',
'10089054'
)
Contao baut nun daraus domain.de/spieler.html?id=10089054 und ich kann im FE-Modul ganz normal die Parameter mit \Input::get auswerten. In meinem FE-Modul baue ich die Links in der Ausgabe dann natürlich wieder als, z.B. domain.de/spieler/10815.html zusammen.
Lesezeichen