Hallo an alle helfenden,
ich habe eine Extension die News bereitstellt und diese in drei Kategorien anbietet. Die Daten dafür sind in verschiedenen PIDs und werden ebenfalls in verschiedenen PIDs angezeigt.
Um nun das verlinken aus einer Seite auf diese News zu ermöglichen habe ich mir die Extension "linkhandler" zu hilfe gezogen.
Nun würde ich gerne diese drei Kategorien als Tab einzelnt angezeigt haben.
Dies klappt auch indem ich per Template Konfiguration folgendes eingebe:
plugin.tx_linkhandler {
tx_meinplugin_1 {
forceLink = 0
parameter = 145
additionalParams = &tx_meinplugin_pi1[nid]={field:uid}
additionalParams.insertData = 1
useCacheHash = 1
}
tx_meinplugin_2 {
forceLink = 0
parameter = 49
additionalParams = &tx_meinplugin_pi1[nid]={field:uid}
additionalParams.insertData = 1
useCacheHash = 1
}
}
und in dem TSConfig der Page
RTE.default.tx_linkhandler {
tx_meinplugin_1 {
label=Pressemitteiltungen
listTables=tx_meinplugin
onlyPids= 145
}
tx_meinplugin_2 {
label=Kat 2
listTables=tx_meinplugin
onlyPids= 146
}
}
RTE.default.tx_linkhandler.tt_news >
mod.tx_linkhandler {
tx_meinplugin_1 {
label=Kat 1
listTables=tx_meinplugin
onlyPids= 145
}
tx_meinplugin_2 {
label=Kat 2
listTables=tx_meinplugin
onlyPids= 146
}
}
mod.tx_linkhandler.tt_news >
nun ist mir allerdings auch klar das linkhandler mit "record:tx_meinplugin:uid" arbeitet und dadurch nicht meine unterteilung in "tx_meinplug_1" arbeiten kann.
Gibt es nun eine mir unbekannte möglichkeit dieses zu ermöglichen?
Habe mir den aktuellen SVN Trunk geladen in der Hoffnung das sich dort einiges geändert hat, was in dem fall leider nichts geholfen hat...
Habe ebenfalls ein paar Modifikationen über "overwriteHandler" probiert, die sahen dann folgendermaßen aus:
RTE.default.tx_linkhandler {
tx_meinplugin_1 {
label=Pressemitteiltungen
listTables=tx_meinplugin
overwriteHandler = record:tx_meinplugin_2
onlyPids= 145
}
}
allerdings musste ich dann in "class.tx_linkhandler_handler.php" ein paar Modifikationen einbauen damit er wieder die richtige Tabelle findet und die Links erstellt.
Habe die Zeilen:
list ($recordTableName, $recordUid) = t3lib_div::trimExplode(':', $linkHandlerValue);
$recordArray = $this->getCurrentRecord($recordTableName, $recordUid);
durch:
if (substr_count($linkHandlerValue,':') == 2)
list ($recordItem, $recordTableName, $recordUid) = t3lib_div::trimExplode(':', $linkHandlerValue);
else
list ($recordTableName, $recordUid) = t3lib_div::trimExplode(':', $linkHandlerValue);
$recordArray = $this->getCurrentRecord($recordTableName, $recordUid);
if ($recordItem) $recordTableName = $recordItem;
ersetzt.
Um nun sicher zu stellen das beim bearbeiten auch der Richtige Reiter ausgewählt wurde musste ich in "classes/class.txlinkhandler_recordTab.php" die funktion "getLinkBrowserInfoArray" wie folgt ersetzen:
Die Zeile:
list($currentHandler, $table, $uid) = explode(":", $href);
durch diese Zeilen ersetzen:
if (substr_count($href,':') == 3)
list($currentHandler, $recordItem, $table, $uid) = explode(":", $href);
else
list($currentHandler, $table, $uid) = explode(":", $href);
und die Zeile
$info['act'] = $key;
durch diese ersetzen:
if ($recordItem) {
if ($currentHandler.':'.$recordItem == $tabConfig['overwriteHandler']) $info['act'] = $key;
} else {
$info['act'] = $key;
}
Und nun zu meiner bescheidenen Frage: Geht das einfacher?
Oder kommt das noch in den kommenden Versionen?
Wenn nicht hoffe ich mit meinen Modifikationen anderen irgendwie weiterhelfen zu können 😉
LG
René