Das Modul ließt nur die deutsche Sprache aus

Hallo,
mir ist leider kein besserer Titel für die Frage eingefallen.

Ich habe mir eine Erweiterung gebastelt, um beim Artikel bestimmte Kategorien anzuzeigen.
Leider ist es jetzt so, dass auch wenn die Aktive Sprache englisch ist, nur die deutschen Katergorienamen angezeigt werden.


class category extends category_parent
{
    public function getCategory_Article(){ 

    $artikelnummer = $this->oxarticles__oxid;
   
    $result = mysql_query("SELECT oxobject2category.oxcatnid, oxobject2category.oxobjectid, 
                           oxcategories.oxtitle, oxcategories.oxid, oxcategories.oxid, oxcategories.oxleft, oxcategories.oxright
                           from oxobject2category
                                                     
    LEFT JOIN oxcategories ON oxobject2category.oxcatnid = oxcategories.oxid
    WHERE oxobject2category.oxobjectid = '$artikelnummer'
    AND oxcategories.oxleft +1  = oxcategories.oxright
    ORDER BY oxcategories.oxtitle
                           ");
   
    while ($row = mysql_fetch_object($result)) {
 
    echo ''.$row->oxtitle.'<br/>'.'';
    }  
    }            
}

Was muss ich in den Code einbauen, damit er sofern englisch die aktvie Sprache ist, auch die englischen Kategorienamen ausgegeben werden.

Danke und Gruß,
Norbert

Hmm, also naja du liest explizit oxcategories.OXTITLE aus …
das kann nun deutsch, türkisch oder chinesisch sein, je nachdem in welcher Reihenfolge du die Sprachen benutzt.
Gut soweit aber verstanden:
Du hast Deutsch als Standard und dann noch englisch.
Für English müsstest du dann (bei dir) OXTITLE_1 auslesen …

Also eigentlich solltest du dir überlegen was du machst :
Bei jedem abstrahierten System, sollte man immer die Systemklassen benutzen,
und da dann auf Objektebene was ändern, statt selber SQL abzufeuern,
was an sich ja nicht so schlimm ist, aber dann sollte man eben umso mehr wissen was man tut.

Ich hoffe es klingt jetzt nicht unhöflich und wünsche noch einen schönen Tag …

Hallo,
danke für die Antwort.

Ich habe das Auslesen der Kategorien eines Artikels vorher auch anders gemacht.
Mir wurde der Hinweis zu folgendem Forenbeitrag gegeben.

http://www.oxid-esales.com/forum/showthread.php?t=10406

Das Problem war bei dieser Vorgehensweise folgendes:
Bsp:
1.Der Artikel befindet sich in 50 Kategorien
2.In der Listenansicht sollen davon 5 ausgelesen werden

Mit einer If-Bedingung habe ich es geschafft, dass nur diese 5 Bedingungen ausgelesen werden.
Leider war es jedoch so, dass die Schleife anscheinend 50 mal durchlaufen wird und der Quelltext so enorm “aufgeblasen” wird.
Das Gute an der Funktion war, dass hier die Anzeige in allen Sprachen richtig erfolgte.

Hier ist es ja auch nicht so, dass immer mit OXTITLE, OXTITLE_1, OXTITLE_2 gearbeitet wird oder? Zumindest habe ich da nichts gefunden.

Wenn ich das jetzt für jede Sprache einzeln machen muss, kann mir dann jemand einen Tipp geben, wie ich die gerade “aktive” Sprache auf der “Funktionsebene” erfragen kann, so dass ich das mit einer If-Bedingung innerhalb der beschriebenen Funktion steuern kann?

Danke und Gruß,
Norbert

Hallo,
wie ich an die aktive Sprache komme habe ich bereits ermittelt.

$this->getConfig()->getActiveView()->getActiveLangAbbr();

Gruß,
Norbert

[QUOTE=Kaiser3;72509]Hallo,


class category extends category_parent
{
    public function getCategory_Article(){ 

    $artikelnummer = $this->oxarticles__oxid;
   
    $result = mysql_query("SELECT oxobject2category.oxcatnid, oxobject2category.oxobjectid, 
                           oxcategories.oxtitle, oxcategories.oxid, oxcategories.oxid, oxcategories.oxleft, oxcategories.oxright
                           from oxobject2category
                                                     
    LEFT JOIN oxcategories ON oxobject2category.oxcatnid = oxcategories.oxid
    WHERE oxobject2category.oxobjectid = '$artikelnummer'
    AND oxcategories.oxleft +1  = oxcategories.oxright
    ORDER BY oxcategories.oxtitle
                           ");
   
    while ($row = mysql_fetch_object($result)) {
 
    echo ''.$row->oxtitle.'<br/>'.'';
    }  
    }            
}

[/QUOTE]

class mycategory extends mycategory_parent
{
    public function getCategory_Article(){ 
    $mylangtitle = oxDB::getInstance()->getMultiLangFieldName('oxtitle');
    $artikelnummer = $this->oxarticles__oxid;
   
    $result = mysql_query("SELECT oxobject2category.oxcatnid, oxobject2category.oxobjectid, 
                           oxcategories.".$mylangtitle.", oxcategories.oxid, oxcategories.oxid, oxcategories.oxleft, oxcategories.oxright
                           from oxobject2category
                                                     
    LEFT JOIN oxcategories ON oxobject2category.oxcatnid = oxcategories.oxid
    WHERE oxobject2category.oxobjectid = '$artikelnummer'
    AND oxcategories.oxleft +1  = oxcategories.oxright
    ORDER BY oxcategories.".$mylangtitle."
                           ");
   
    while ($row = mysql_fetch_object($result)) {
 
    echo ''.$row->oxtitle.'<br/>'.'';
    }  
}    

ich glaube du willst die jeweils aktive oxtitle DB Spalte haben, dafür gibt es eine oxDB Methode für, das sollte dann so wie oben aussehen.