Magento Forum

   
Umwandlung Umlaute in URLs? 
 
my evil twin
Member
 
Total Posts:  34
Joined:  2007-08-31
Hamburg, Germany
 

Hallo,

ich habe ein Problem, für das ich die Lösung noch nicht gefunden habe:

Bei Produkten/Kategorien mit Umlauten werden diese nicht, wie es korrekt wäre, in beispielsweise “ue” oder “ae” oder “oe” umgewandelt, sondern in “u”, “a” oder “o” vereinfacht.

Das heißt, aus Büchern werden Bucher und aus Mühlen werden Muhlen und so weiter.

Nun ist das zwar kein Problem, das mal bei 3, 4 oder auch 10 Kategorien zu ändern, aber beim Importieren von beispielsweise 50.000 Produkte wäre es kein Spaß mehr, das manuell zu korrigieren.

Wo kann man das denn einstellen/verändern, daß die Umlaute korrekt umgewandelt werden?

ß wird erstaunlicherweise richtig umgewandelt in ss, wo kann ich denn die anderen Umlaute korrigieren?

Danke im voraus für jede Antwort!
Grüße

 
Magento Community Magento Community
Magento Community
Magento Community
 
CirTap
Jr. Member
 
Avatar
Total Posts:  30
Joined:  2008-02-16
 

Hi,

bzgl. v1.1.6 guckstu mal hier: app\code\core\Mage\Core\Helper\Data.php,
public function removeAccents($string, $german=false)
Blöderweise wird nirgends $german=true gesetzt wink

Testen darfst du das selbst <g>
Variante 1:
- kopiere: app\code\core\Mage\Core\Helper\Data.php
- nach: app\code\local\Mage\Core\Helper\Data.php
Editiere die Kopie in “local”:

/* public function removeAccents($string, $german=false) */
    public function removeAccents($string$german=true// Transliteration scharf schalten
    
{
        
static $replacements;
          ...
Variante 2:
- kopiere: app\code\core\Mage\Catalog\Model\Category.php
- nach: app\code\local\Mage\Catalog\Model\Category.php
Editiere die Kopie in “local”:
public function formatUrlKey($str)
    
{
        
/* $str = Mage::helper('core')->removeAccents($str); */
        
$str Mage::helper('core')->removeAccents($strtrue); // Transliteration scharf schalten
        
$urlKey preg_replace('#[^0-9a-z]+#i''-'$str);
        
$urlKey strtolower($urlKey);
        
$urlKey trim($urlKey'-');
        return 
$urlKey;
    
}
Eventuell nutzt beides nix, aber in der Funktion removeAccents() (Variante 1) wird auch iconv() aufgerufen, daher
Variante 1b (immer noch auf der Kopie in local ;-> )
public function removeAccents($string$german=true// Transliteration scharf schalten
    
{
         
...
        
// convert string from default database format (UTF-8)
        // to encoding which replacement arrays made with (ISO-8859-1)
        /* if ($s = @iconv('UTF-8', 'ISO-8859-1', $string)) { */
        
if ($s = @iconv('UTF-8''ISO-8859-1//TRANSLIT'$string)) {  // Transliteration die Zweite
            
$string $s;
        
}
         
...
Eigentlich sollte das “true” ja basierend auf der “Hauptsprache” der Website ermittelt werden damit’s ansatzweise “richtig” wäre.

Ich denke, dass eine dieser Kombinationen klappen sollte <g> Mein Favorit ist ja iconv()

Viel Spaß,
CirTap

 
Magento Community Magento Community
Magento Community
Magento Community
 
my evil twin
Member
 
Total Posts:  34
Joined:  2007-08-31
Hamburg, Germany
 

Hey, danke für Deine Antwort! grin

Leider hat keiner der og. Workarounds funktioniert, versuch das mit dem german = true bloss nicht, das hat bei mir alle URL-Keys zerschossen, bei 200 Kategorien = viel Spaß ohh

Ich hab die Werte von

if ($german{
                
// umlauts
                
$subst array_merge($subst, array(196=>'Ae'228=>'ae'214=>'Oe'246=>'oe'220=>'Ue'252=>'ue'));
            
}

dann einfach im original-Array eingefügt, funktioniert wunderbar.

Grüße!

 
Magento Community Magento Community
Magento Community
Magento Community
 
my evil twin
Member
 
Total Posts:  34
Joined:  2007-08-31
Hamburg, Germany
 

Ach ja… das ganze funktioniert wunderbar für Kategorien, allerdings leider nicht mit Produkt-Urls… wird da eine andere Funktion aufgerufen?

 
Magento Community Magento Community
Magento Community
Magento Community
 
CirTap
Jr. Member
 
Avatar
Total Posts:  30
Joined:  2008-02-16
 

ok. danke für den Tip smile
bei den Produkten passiert tatsächlich was anders ... und zwar was ganz anderes %-|

guck mal in app\code\core\Mage\Catalog\Model\Product\Url.php : formatUrlKey()
das ruft für’s Produkt app\code\core\Mage\Catalog\Helper\Product\Url.php : format() auf
welches einen seltsamen config-key (node) “default/url/convert” ausliest—Wo der stehen soll oder herkommt, weiss ich nicht. Habe in den /etc/*.xml so auf die Schnelle nix gefunden, vielleicht wirst du ja fündig. In der Tabelle [mage]_core_config_data steht nichts, was nach “Übersetzungstabelle” aussieht.

 
Magento Community Magento Community
Magento Community
Magento Community
 
MobWeb
Jr. Member
 
Avatar
Total Posts:  23
Joined:  2011-09-01
 

Falls jemand den Thread via Google findet: Ich habe die zwei Lösungansätze in eine Erweiterung gepackt und auf GitHub veröffentlicht: MobWeb_UmlautURLKeys.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top