also ich möchte in meinem OXID eine Funktion hinzufügen die ich in PHP schon fertig habe und die problemlos funktioniert.
Kann sich jemand bereiterklären mir kurz zu erklären wie ich ein Modul einbinde.
Mit der Smarty Doku bekomme ich es nicht hin.
Um die Sache so einfach wie möglich zu machen hab ich folgendes Beispiel:
Einer php Funktion übergebe ich eine Variable und erstelle einen Array.
<?php
public function Blumen($anzahl)
{
$blumen = array(“Rose”.$anzahl, “Tulpe”.$anzahl, “Nelke”.$anzahl, “Sonnenblume”.$anzahl);
}
?>
Diesen will ich mit foreach in der Datei
details.tpl
start.tpl
list.tpl
Ausgeben können.
So meine Fragen:
In welches Verzeichnis muß die PHP Funktions Datei?
Wie übergebe ich die Variable an die Funktion?
Wie übergebe ich die Variable zurück an das tpl?
Ist das schon ein Modul und muß somit registriert werden?
Ich sitze schon fast 2 Tage an dem Problem wäre echt schön wenn mir das jemand an dem einfachen beispiel erklären könnte.
wenn du das in sovielen templates haben möchtest, kannst du damit auch ruhig die oxview oberklasse erweitern. Dazu legst du einen ordner im ordner modules an, der einen beliebigen namen trägt, fürs beispiel mal “viking_modul”. Dort legst du die viking_modul.php an in der folgendes steht:
dort schreibst du rein:
class viking_modul extends viking_modul_parent {
// Hier deine funktion
public function Blumen($anzahl)
{
$blumen = array("Rose".$anzahl, "Tulpe".$anzahl, "Nelke".$anzahl, "Sonnenblume".$anzahl);
}
}
Dann gehst du in den admin bereich und schreibst unter “Grundeinstellungen” -> System -> Module eine zeile dazu:
oxview => viking_modul/viking_modul.php
ab dann hast du eigentlich in jedem template folgende funktion zur verfügung:
$oxView->Blumen();
der kannst du dann die anzahl übergeben. Normalerweise extended man zwar nicht die große view klasse, aber wenn du die funktion überall haben willst sollte es so klappen (mal ohne zu testen)
csimon -> vielen vielen Dank für diese perfekte Antwort
setze mich heute abend gleich mal ran ums zu testen.
Aber so perfekt wie das beschrieben ist hab selbst ich dussel es verstanden.
So ich wollte mich nochmal bedanken.
Habe es jetzt endlich hinbekommen nach etlichem probieren und studieren.
Hab mein Modull fertig und es läuft.
Hat jemand denn noch einen Tip für eine praktische Fehlersuche.
Leider wird bei mir kein einziger Fehler angezeigt nur Bildschirm weis=fehler oder html=kein Fehler.
das in deine .htaccess und es sollte klappen. Für SQL Fehler setze mal via config.inc.php die variable “$this->iDebug” auf einen anderen wert als 0 (legende steht in der datei). Ansonsten kann auch einfach der funktionsaufruf “error_reporting(E_ALL);” am anfang der datei das anzeigen von fehlern freischalten.
Generell natürlich produktivmodus aus. Und module nie im liveshop testen
Du brauchst natürlich nicht alles davon, hängt ganz von der Serverkonfiguration ab, das sind nur allgemeine tipps wie man das aktiviert.
[QUOTE=csimon;8246]wenn du das in sovielen templates haben möchtest, kannst du damit auch ruhig die oxview oberklasse erweitern. Dazu legst du einen ordner im ordner modules an, der einen beliebigen namen trägt, fürs beispiel mal “viking_modul”. Dort legst du die viking_modul.php an in der folgendes steht:
dort schreibst du rein:
class viking_modul extends viking_modul_parent {
// Hier deine funktion
public function Blumen($anzahl)
{
$blumen = array("Rose".$anzahl, "Tulpe".$anzahl, "Nelke".$anzahl, "Sonnenblume".$anzahl);
}
}
Dann gehst du in den admin bereich und schreibst unter “Grundeinstellungen” -> System -> Module eine zeile dazu:
oxview => viking_modul/viking_modul.php
ab dann hast du eigentlich in jedem template folgende funktion zur verfügung:
$oxView->Blumen();
der kannst du dann die anzahl übergeben. Normalerweise extended man zwar nicht die große view klasse, aber wenn du die funktion überall haben willst sollte es so klappen (mal ohne zu testen)[/QUOTE]
Hallo!!!
Ich wollte den Thread nochmal aufgreifen. Vielleicht kann mir jemand folgendes erklären:
Wenn ich nun ein vollkommen neues Modul schreiben möchte, wie muß die xxx.tpl aussehen ? Ich erhalte immer folgenden Fehler:
Warning: Smarty error: unable to read resource: "" in ...\core\smarty\Smarty.class.php on line 1093
Der Templatename muß als return-Wert der render-Methode übergeben werden. Am saubersten aber als Klassen-Eigenschaft protected $_sThisTemplate übergeben und als Rückgabewert aus parent::render() abgreifen. So bleibt auch Deine Klasse problemlos erweiterbar.
Nur zum Verständniss…
[ ] Du möchtest eine View innerhalb einer anderen View erzeugen und ausgeben
[ ] Du manipulierst eine Variable mittels einer Methode vom Template aus
[ ] Du möchtest den Template eine zusätzliche Variable zur verfügung stellen
Wenn ich richtig rate…
Du möchtest erreichen, dass dir eine Methode zur verfügung steht und dann einen eigenen Template zuordnen?
Dies steht dir aber sowie so schon in allen Templates zur Verfügung, die Du einbindest.