oxarticles.OXID in eigenem Modul

Hallo allerseits,

ich taste mich mit gaaanz langsamen Schritten an die Modulprogrammierung ran und habe wahrscheinlich eine recht triviale eine Frage:

Es geht darum, der details.tpl einen weiteren Inhalt (hier das Logo eines Partners) hinzuzufuegen. Dazu benoetige ich fuer mein Modul (das man mit mehr Wissen sicher wesentlich elegenter schreiben koennte) die OXID oder OXARTNUM des aktuell dargestellten Artikels.


/*
*   Variable in Template [{$product-> getAdd2LongDesc()}])
*   Modulekonfig oxarticle => or_add2longdesc/or_add2longdesc
*/

class or_add2LongDesc extends or_add2LongDesc_parent{

    public function getAdd2LongDesc(){

        $myConfig   = $this->getConfig();
        $sShopUrl   = $myConfig->getShopURL();
        $sShopId    = $myConfig->getShopId();

        $oDb = oxDb::getDb();

        $sQuery = "SELECT oxmanufacturers.OXTITLE as manufacturer
                    FROM oxarticles
                    JOIN oxmanufacturers
                    ON oxarticles.OXMANUFACTURERID = oxmanufacturers.OXID
                    WHERE oxarticles.OXARTNUM = '{$sArtNum}'";

        //echo $sQuery;
        $sManufacturer = $oDb->getOne($sQuery);
        $sManufacturer_small = strtolower($sManufacturer);

        if($sManufacturer == 'Plantronics' || $sManufacturer == 'Snom'){
            return "<img src='{$sShopUrl}out/basic/{$sShopId}/img/logo_partner_{$sManufacturer_small}.jpg' />";
        }
    }
}

Mir fehlt zum Glueck wirklich nur noch $sArtNum - sonst funktioniert soweit alles.

Wie komme ich da ran?

Vielen dank fuer eure Unterstuetzung.

—SNIP—

Jetzt wo ich gerade so drueber nachdenke, koennte ich das natuerlich das ganze auch im Template loesen…aber trotzdem wuerde ich gern meine Frage aufrecht erhalten…

Lieben Gruss
Oliver

[QUOTE=fx4u;34348]Hallo allerseits,

ich taste mich mit gaaanz langsamen Schritten an die Modulprogrammierung ran und habe wahrscheinlich eine recht triviale eine Frage:

Es geht darum, der details.tpl einen weiteren Inhalt (hier das Logo eines Partners) hinzuzufuegen. Dazu benoetige ich fuer mein Modul (das man mit mehr Wissen sicher wesentlich elegenter schreiben koennte) die OXID oder OXARTNUM des aktuell dargestellten Artikels.


/*
*   Variable in Template [{$product-> getAdd2LongDesc()}])
*   Modulekonfig oxarticle => or_add2longdesc/or_add2longdesc
*/

class or_add2LongDesc extends or_add2LongDesc_parent{

    public function getAdd2LongDesc(){

        $myConfig   = $this->getConfig();
        $sShopUrl   = $myConfig->getShopURL();
        $sShopId    = $myConfig->getShopId();

        $oDb = oxDb::getDb();

        $sQuery = "SELECT oxmanufacturers.OXTITLE as manufacturer
                    FROM oxarticles
                    JOIN oxmanufacturers
                    ON oxarticles.OXMANUFACTURERID = oxmanufacturers.OXID
                    WHERE oxarticles.OXARTNUM = '{$sArtNum}'";

        //echo $sQuery;
        $sManufacturer = $oDb->getOne($sQuery);
        $sManufacturer_small = strtolower($sManufacturer);

        if($sManufacturer == 'Plantronics' || $sManufacturer == 'Snom'){
            return "<img src='{$sShopUrl}out/basic/{$sShopId}/img/logo_partner_{$sManufacturer_small}.jpg' />";
        }
    }
}

Mir fehlt zum Glueck wirklich nur noch $sArtNum - sonst funktioniert soweit alles.

Wie komme ich da ran?

Vielen dank fuer eure Unterstuetzung.

—SNIP—

Jetzt wo ich gerade so drueber nachdenke, koennte ich das natuerlich das ganze auch im Template loesen…aber trotzdem wuerde ich gern meine Frage aufrecht erhalten…

Lieben Gruss
Oliver[/QUOTE]
Ich denke, dass die an “details.tpl” übergebenen Daten auch das “manufacturer”-Objekt enthalten, so dass man die Information daraus entnehmen kann, ohne ein Modul zu schreiben.

Füge mal

[{debug}]

an den Anfang der “details.tpl” ein, dann gibt Dir Smarty eine Liste aller Objekte und den darin enthaltenen Daten.

Hallo,

vielen Dank fuer die Antwort - genauso habe ich es jetzt auch umgesetzt:

      
[{* Einbindung von Partnerlogos / OR@2010_06_25 *}]
        [{if $oManufacturer->oxmanufacturers__oxtitle->value == 'Plantronics'}]
            <p><img src='[{ $oViewConf->getBaseDir() }]out/basic/2/img/logo_partner_[{$oManufacturer->oxmanufacturers__oxtitle->value|lower}].jpg' /></p>
        [{/if}]

Trotzdem wuerde ich mich ueber eine Antwort auf meine urspruengliche Frage freuen, denn fuer weitere Module brauche ich das sicher.

Gruesse
Oliver

Hallo Oliver,

geh mal auf diese Seite:
http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.3.2.27884/

tippe “get” in das Suchfeld ein. Wahrscheinlich bist Du dann schlauer :wink:

Gruß

Hallo Marco,

vielen Dank fuer den Hinweis - sehr interessant, weil ich jetzt wahrscheinlich ohne MySQL-Abfrage direkt z.B. den Hersteller des aktuell geladenen Artikels bekommen koennte.

Allerdings bleibt meine Frage weiterhin bestehen, weil ich leider wohl die richtigen Schritte noch nicht nachvollziehen kann.

Sorry, ich weiss dass das Forum nicht dazu da ist, mir PHP beizubringen aber ich blicks anscheinend mit der Objektorientierung noch nicht.

Ich hangle mich seit Stunden durch den Code des Shops…von Hoelzchen zu Stoeckchen.

Koennte mir vielleicht jemand die wahrscheinlich zwei Zeilen Code verraten, die dazu fuehren, dass meine Klasse funktioniert?

Vielen Dank fuer die Hilfe.

Gruesse
Oliver

Falls du dich fragst wie du an die db Felder eines Objektes kommst das von oxbase abstammt dann für die artikelnummer ungefähr so:

$sArtNum = $oArticle->oxarticles__oxartnum->value;

Hallo,

vielen Dank fuer die Antwort - ich werde es ausprobieren.

Gruesse
Oliver