Ankündigung
Einklappen
Keine Ankündigung bisher.
Custom Catalog Problem alias bei Nutzung Changelanguage
Einklappen
X
-
Dank dir. Ich schau mir das Template bei Zeiten noch mal an. Changelanguage verändert sich ja auch parallel.
Einen Kommentar schreiben:
-
Webcodefunktion ist eine Art Artikelnummer-Suche. Webcode in Suchfeld --> ausführen --> springt direkt zum Artikel ohne Umweg über die Suchergebnisse
Diese Beispiel sollte nur dazu dienen um zu verdeutlichen wie wir das für die Suche gelöst haben. Es geht aber um den Sprachenwechsler Changelanguage im Zusammenspiel mit CC.
Es gibt eine .de und eine .com und die aliase sind natürlich je Produkt und Domain unterschiedlich. de --> produkt.html en --> product.html
Und da liegt das Problem. Ich befinde mich auf der de Domain und auf der Detailseite des Produktes, wenn ich dann über den Sprachenwechsler zu englisch wechsel, dann ist alles korrekt, nur der alias, hier wird dann weiterhin der deutsche angezeigt. Es gibt aber einen englischen alias. Dieser wird aber nicht ausgetauscht. Auch mit deinem Template nicht.
Einen Kommentar schreiben:
-
Ihr könnt natürlich machen, was ihr wollt. Ich dachte aber es ist eine changelanguage nahe Lösung im Template, die flexibel einsetzbar ist. Alles gut.
Was ist eine "Suche per Webcode". Meinst du die Contao Suche?
Seitens der Links in changelanguage braucht es bei deinem Aufbau (gleiche Alias für Spracheinträge) keine Anpassungen seitens CC. CC versteht gleiche Alias sprachübergreifend. Der Wechsel der Zielseiten/Detailseiten Urls muss durch changelanguage erfolgen.
Einen Kommentar schreiben:
-
Das Ding sorgt aber dafür das die Suche per Webcode das richtige Ergebnis liefert. SPRACHÜBERGREIFEND!!!! Mit einem sauberen alias. Was bringt mir jetzt deine Antwort??
Einen Kommentar schreiben:
-
Die Funktion ist 1zu1 die Kern-Funktion von CC
, ausser das hier eine zusätzliche Datenbankabfrage getätigt wird für die gefundenen Spracheinträge, die den gesamten CC Eintrag in den Array legt. Die Kern-Funktion legt nur die ID ab, damit es Ressourcen-schonender ist. Wo genau ist der Unterschied?
Die search Funktion ist ganz schön brute force
aber ok. Hauptsache es passt 
Ich denke changelanguage hat den Domainübergreifenden Sprung nicht verstanden. Ihr vergebt ja manuell die Domain neu in "pfad zur Seite".
Das sollte über das Seiten-Objekt von changelanguage je changelanguage Link erfolgen bzw. muss in den Sprach-Wurzelseiten eine fixe Domain hinterlegt werden -> sonst wird Contao Wurzelseiten nicht als Domainabgrenzungen betrachten. Siehe Multidomain-Modus ContaoZuletzt geändert von Tim; 09.03.2018, 08:27.
Einen Kommentar schreiben:
-
Gerne
HTML-Code:<?php /** * Contao Open Source CMS * * Copyright (c) 2005-2016 Leo Feyer * * @package xxxx * @author xxxx * @license proprietary * @copyright xxxx */ use PCT\CustomElements\Models\CustomCatalogModel as CustomCatalogModel; use \PCT\CustomElements\Plugins\CustomCatalog\Core\Multilanguage as Multilanguage; class WebcodeSearch extends \Controller { /** * Copied from \PCT\CustomElements\Plugins\CustomCatalog\Core\Multilanguage */ public function findAssocLanguageSiblings($intBaseRecord,$strTable,$strLanguage='') { $objResult = \Database::getInstance()->prepare("SELECT * FROM tl_pct_customcatalog_language WHERE id!=? AND pid=? AND source=?".(strlen($strLanguage) > 0 ? " AND lang=?" : ""))->execute($intBaseRecord,$intBaseRecord,$strTable,$strLanguage); if ($objResult->numRows < 1) { return array(); } $arrReturn = array(); while($objResult->next()) { $q = Database::getInstance()->prepare("SELECT * FROM " . $strTable . " where id=?"); $result = $q->execute($objResult->id); while ($result->next()) { $arrReturn[$objResult->lang] = $result; } } return $arrReturn; } public function search($arrPages, $strKeywords, $strQueryType, $blnFuzzy) { //$strLanguage = $this->replaceInsertTags('{{page::language}}'); $objMultilanguage = new Multilanguage; $strLanguage = $objMultilanguage->getActiveFrontendLanguage(); if (!$strLanguage) { $strLanguage = 'de'; } // Search for a PRODUCT with a webcode matching $strKeywords in all calatlogs foreach (CustomCatalogModel::findAllActive([]) as $catalogModel) { $query = Database::getInstance()->prepare("SELECT * FROM " . $catalogModel->tableName . " where webcode=?"); try { $result = $query->execute($strKeywords); while ($result->next()) { switch ($catalogModel->tableName) { case 'cc_katalog_1': $basePath = [ 'de' => 'pfad zur Seite', 'en' => 'pfad zur Seite', ]; break; case 'cc_katalog_2': $basePath = [ 'de' => 'pfad zur Seite', 'en' => 'pfad zur Seite', ]; break; default: break; } // if the language is NOT German, find the product record in the desired language if ($strLanguage != 'de') { $result = $this->findAssocLanguageSiblings($result->id, $catalogModel->tableName, $strLanguage); $result = $result[$strLanguage]; } $path = $basePath[$strLanguage] . '/' . $result->alias . '.html'; $this->redirect($path, 302); } } catch (Exception $e) { } } // Search for a PAGE with a webcode matching $strKeywords $query = Database::getInstance()->prepare("SELECT id, alias FROM tl_page where webcode=?"); $result = $query->execute($strKeywords); while ($result->next()) { // a page with this webcode exists. redirect to the page. $url = $this->replaceInsertTags('{{link_url::' . $result->id . '}}'); $this->redirect($url, 302); } } } $GLOBALS['TL_HOOKS']['customizeSearch'][] = ['WebcodeSearch', 'search'];
- 1 Likes
Einen Kommentar schreiben:
-
Zeig mal deine Lösung und warum das Template nicht geklappt hat.
Einen Kommentar schreiben:
-
Hallo,
dachte da kommt noch was. Leider funktioniert das Template nicht. Alles andere ist richtig konfiguriert.
Wir haben eine eigene Erweiterung angelegt, damit bei Eingabe Nr. ins Suchfeld das jeweilige Produkt direkt aufgerufen wird. Da war der Knackpunkt
HTML-Code:findAssocLanguageSiblings
Einen Kommentar schreiben:
-
Naja, CC setzt eigentlich nur den Alias ein. Hast du changelanguage erstmal fertig konfiguriert. Leser Seiten mit Fallback-Sprachen usw. usw. -> da entsteht ja quasi die Domain.Zitat von OliverLibbertz Beitrag anzeigenOh man. Man sollte krank nicht arbeiten.
Hab nun alles wie beschrieben eingepflegt. Leider wird weiterhin der deutsche alias zur englischen Domain angezeigt.
Einen Kommentar schreiben:
-
Oh man. Man sollte krank nicht arbeiten.
Hab nun alles wie beschrieben eingepflegt. Leider wird weiterhin der deutsche alias zur englischen Domain angezeigt.
Einen Kommentar schreiben:
-
Das du die nav_default nicht nehmen kannst, sollte klar sein. Siehe all den Code in dem mitgelieferten Template. Dort findet die Arbeit statt.
Du musst oben im Template noch die CC Informationen hinterlegen.
Einen Kommentar schreiben:
-
Upps. Komplett übersehen. Sorry.
Ok. Wenn ich das Template nutze verschwindet der Sprachenwechsler. Habe dann mal den Inhalt aus dem Template nav_default mit eingefügt. Dann ist der Sprachenwechsler wieder da aber ohne Auswirkung auf den alias. Hab ich was übersehen oder falsch verstanden?
Einen Kommentar schreiben:

Einen Kommentar schreiben: