Hallo!
Ich hätte eine Frage, und zwar bin ich aktuell dabei ein Modul zu schreiben, das es mir ermöglicht, im URL-Pfad die Subkategorie des bestimmten artikels anzuzeigen anstelle des Page Alias / der Page-ID
Beispiel:
Vorher: www.beispiel.de/de/produkt-54/alias.html
Nachher: www.beispiel.de/de/subkategorie1/alias.html
Hier mal die CustomURLs.php die ich dafür geschrieben habe:
Und hier noch die Configs.php:
Ist das überhaupt so möglich mit den Customcatalog Artikeln?
Wenn ja, was mache ich falsch?
danke schonmal für die Antworten.
Schöne Grüße
Chris
Ich hätte eine Frage, und zwar bin ich aktuell dabei ein Modul zu schreiben, das es mir ermöglicht, im URL-Pfad die Subkategorie des bestimmten artikels anzuzeigen anstelle des Page Alias / der Page-ID
Beispiel:
Vorher: www.beispiel.de/de/produkt-54/alias.html
Nachher: www.beispiel.de/de/subkategorie1/alias.html
Hier mal die CustomURLs.php die ich dafür geschrieben habe:
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class CustomURLs extends Frontend
{
/**
* @var Database;
*/
protected $Database;
/**
* @param array $arrRow
* @param string $strParams
* @param string $strUrl
* @return string
*/
public function hookGenerateFrontendUrl($arrRow, $strParams, $strUrl)
{
if (preg_match('/produkt-([^/]+).([^/]+).html', $arrFragments[0], $arrMatch))
{
switch($arrMatch[1]){
case 76:
$dbname = "db1";
break;
case 74:
$dbname = "db2";
break;
}
$this->import('Database');
// Datenbankaufruf : ID - Unterkategorie
// Den id aus der db laden für die subkategorie
$objCategory = $this->Database
->prepare("SELECT tl_pct_customelement_tags.id FROM tl_pct_customelement_tags
LEFT JOIN $dbname
ON $dbname.id = tl_pct_customelement_tags.id
WHERE $dbname.produktalias=?")
->execute($arrMatch[2]);
if ($objCategory->next())
{
switch($objCategory){
case 3:
$subkategorie = "unterkategorie-1";
break;
case 4:
$subkategorie = "unterkategorie-2";
break;
case 5:
$subkategorie = "unterkategorie-3";
break;
case 6:
$subkategorie = "unterkategorie-4";
break;
}
// Die URL umschreiben
$strUrl = str_replace('produkt-'.$arrMatch[1].'/', $subkategorie. '/', $strUrl);
}
return $strUrl;
}
}
/**
* @param array $arrFragments
* @return array
*/
public function hookGetPageIdFromUrl($arrFragments)
{
if ( $GLOBALS['objPage']->id == 76 || $GLOBALS['objPage']->id == 74 && preg_match('([^/]+).([^/]+).html', $arrFragments[0], $arrMatch))// Page IDs = aufrufpages der produkte
{
switch($arrMatch[1]){
case "unterkategorie-1":
$pageid = 74;
break;
case "unterkategorie-2":
$pageid = 74;
break;
case "unterkategorie-3":
$pageid = 76;
break;
case "unterkategorie-4":
$pageid = 76;
break;
}
$tmp = explode('.', $this->replaceInsertTags("{{link_url::".$pageid."}}"));
$link = $tmp[0];
$arrFragments[0] = $link;
$arrFragments[1] = 'items';
$arrFragments[2] = $matches[2];
}
return array_unique($arrFragments);
}
}
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
/**
* Hooks
*/
$GLOBALS['TL_HOOKS']['generateFrontendUrl'][] = array('CustomURLs', 'hookGenerateFrontendUrl');
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('CustomURLs', 'hookGetPageIdFromUrl');
Ist das überhaupt so möglich mit den Customcatalog Artikeln?
Wenn ja, was mache ich falsch?
danke schonmal für die Antworten.
Schöne Grüße
Chris
Kommentar