Hallo allerseits
Ich traue mich schon fast nicht mehr zu fragen. Aber wie macht man das mit den Pfadangaben in einen Frontendmodul?
Ich arbeite mit einem Childtheme.
Ich habe die Funktion getestet in dem ich in der productmain.tpl die Include "selectbox.tpl " durch die “selectbox_alternativ.tpl” ersetzt habe. Das funktioniert.
'blocks' => array(
array( 'template' => 'page/details/inc/productmain.tpl',
'block' => 'details_productmain_variantselections',
'file' => 'views/blocks/mbm_details_productmain_variantselections.tpl'
),
),
Nun will ich aber die “selectbox_alternativ.tpl” in meinen Modulordner packen und aufrufen. Da aber hakt es mit der Pfadangabe. Die Grundfunktion des Blockes wird aufgerufen aber nicht meine alternative .tpl.
Wie müssen da die Pfadangaben richtg lauten?
[{include file="tpl/widget/product/selectbox_alternativ.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
Theoretisch müsste einfach nur “template” funktionieren, weil du es in der Metadata.php unter diesen Namen registriert hast.
Oder Du könntest es mit $oViewConf->getModulePath() versuchen. Das funktioniert totsicher und lässt sich auch gut für custom themes überladen.
Hier ist eins meiner Module:
https://github.com/vanilla-thunder/bla-vskfreiab/blob/master/copy_this/modules/bla/bla-vskfreiab/application/views/blocks/widget_minibasket.tpl
Ok. Mit dieser Angabe geht es.
[{include file=$oViewConf->getModulePath('meinModulordner',"/views/tpl/widget/product/selectbox_alternativ.tpl") oSelectionList=$oList iKey=$iKey blInDetails=true}]
Wobei meinModulordner natürlich mit dem eigenen ersetzt werden muss.
Natürlich auch den kompletten Pfad im Modulordner mit angeben.
[QUOTE=Medicus;178393]Und das vorangestellte / nicht vergessen.[/QUOTE]
Das ist schlichtweg falsch.
Wenn du schon versuchst anderen Tipps zu geben probiere einfach vorher aus ob das was du sagst überhaupt stimmt.
Grüße
Rafig
Das ist schlichtweg richtig. Denn genau wie gepostet funktioniert es.:mad:
Oder liegt es daran das ich meine Module in einen Hauptordner habe?
Siehe:
‘meinmodulsammelordner/meinModulordner’,"/views/tpl/widget/product/selectbox_alternativ.tpl"
Reg dich über solche Bemerkungen doch nicht auf. Hier darf jeder seinen Senf hinzufügen.
Ich mache das so wie hier bschrieben: http://forum.oxid-esales.com/showthread.php?t=25418
Alles in out/blocks und die Einbindung ganz ohne Pfadangabe. Geht immer und man muss nicht lange überlegen.
Schon wieder abgeregt. 
Dein Link ist für Blocks. So habe ich das auch gemacht. Allerdings ist in meinen Blockteil der include Aufruf gewesen. Das war der problematische Teil. Aber das funktioniert ja jetzt. Danke noch mal @vanilla thunder
Leider funktioniert das aber nicht mit mit Bildern.
Ich habe in meinen Modul die Bilder im folgenden Pfad abgelegt: meinmodulsammelordner/meinModulordner/out/img/palette/
Wenn ich die Bilder im Childtheme im selben Ordner ablege, kann ich diese mit diesem Code abrufen:
<a [{$oSelection->getName()}] data-selection-id="[{$oSelection->getValue()}]" href="[{$oSelection->getLink()}]" class="[{if $oSelection->isActive()}]selected[{/if}]" title="[{$oSelection->getName()}]"><img src="[{$oViewConf->getImageUrl('palette/')}][{$oSelection->getName()|cat:'.png'}]" alt="[{$oSelection->getName()}]"/></a>
Wenn ich aber $oViewConf->getImageUrl mit $oViewConf->getModulePath ersetze dann ruft er den Serverpfad auf aber nicht die Bilder. Und mit $oViewConf->getImageUrl findet er den Pfad nicht.
Die Technologien vom heute sind sehr Anfänger freundlich und die erkennen den doppelt Slash “[B]//[/B]” in deiner Pfadangaben und versuchen Ihn zu korrigieren.
Aber es wird Situationen geben das so etwas nicht mehr funktioniert und dann ist natürlich die Geschrei groß.
Das hier gibt einen Verzeichnisstruktur mit einem Slash am ende:
[{include file=$oViewConf->getModulePath('meinModulordner')}]
und wenn du noch das hier dazufügst:
/views/tpl/widget/product/selectbox_alternativ.tpl
bekommst du logischerweise das hier:
bla_bla_/modules/meinModulordner[B][COLOR="darkred"]//[/COLOR][/B]views/tpl/widget/product/selectbox_alternativ.tpl
Ich will hier keinen Oberlehrer spielen und bei dir auf der Seite darfst du alles einsetzen wie du möchtest aber Empfehlung für das falsche auszusprechen ist schlichtweg falsch.
Grüße
Rafig
Alle Klarheiten beseitigt! 
- Um Blocks geht es hier nicht. Medicus will einfach nur ein Template einbinden. Das geht natürlich mit [{include file=$oViewConf->getModulePath(… so wie er das jetzt gemacht hat. Einfacher geht es aber wenn man das File vorher im Templates Array registriert:
'templates' => array(
'selectbox_alternativ.tpl' => 'meinModulordner/views/tpl/widget/product/selectbox_alternativ.tpl',
),
dann kann man das Template einfach mit dem Namen einbinden:
[{include file="selectbox_alternativ.tpl"}]
-
Ob mit führender Slash oder nicht, es funktioniert beides. Oxid selber benutzt z.B. im Blocks-Array führende Slashes bei der Pfadangabe. Ich würde eher keine verwenden weil führende Slashes normalerweise absolute Pfade kennzeichnen.
-
Blocks in /out/blocks/ sind seit 4.7 deprecated, ab dieser Version sollten Blocks in views/blocks/ abgelegt werden und mit vollem Pfad angegeben werden, genauso wie Medicus das bereits im Eingangsposting stehen hat und wie es ja bei ihm auch schon funktioniert.
[QUOTE=Medicus;178402]
Wenn ich aber $oViewConf->getImageUrl mit $oViewConf->getModulePath ersetze dann ruft er den Serverpfad auf aber nicht die Bilder. Und mit $oViewConf->getImageUrl findet er den Pfad nicht.[/QUOTE]
Für die Clientsicht gibt es $oViewConf->getModuleUrl(…
[QUOTE=Medicus;178393]
[{include file="selectbox_alternativ.tpl" oSelectionList=$oList iKey=$iKey blInDetails=true}]
Das geht doch bei Templates auch so wie mit blocks und man muss auch hier nicht lange überlegen, wenn man die Adresse in der metadata richtig anlegt. Ich probier mal den Beitrag mit dem Demomodul zu finden.
Die Bilder gebe ich auch so an.
Obwohl ich OXID ja offensichtlich mag und gern damit arbeite, würde ich es jedoch nicht unbedingt als “Technologie von Heute” bezeichnen.
Werfen wir doch mal einen Blick in den Code der Funktion getModulePath():
public function getModulePath($sModule, $sFile = '')
{
if (!$sFile || ($sFile[0] != '/')) {
$sFile = '/' . $sFile;
}
[ ... unwichtig ... ]
}
Das heißt also, wenn der zweite Parameter $sFile gar nicht gesetzt ist oder nicht mit ‘/’ anfängt, wird es automatisch ergänzt.
Also kommt es so oder so dahin. Und wenn man es selbst setzt, wird der eine Funktionsaufruf erspart -> schnellere Abarbeitung -> bessere Performance -> geringerer Stromverbrauch.
Nix mir doppeltem //
Irgendwer sagte irgendwann mal in irgendeinem Forum:
Wenn du schon versuchst anderen Tipps zu geben probiere einfach vorher aus ob das was du sagst überhaupt stimmt.
Fand ich gut.
[QUOTE=vanilla thunder;178412]
Nix mir doppeltem //
Irgendwer sagte irgendwann mal in irgendeinem Forum: Fand ich gut.[/QUOTE]
Find ich sehr gut. Danke fürs nachschauen. Das war wiedermal ein Eigentor von mir. Nächstes mal werde ich versuchen besser zu sein.
Grüße
Rafig
Wie dem auch sei. Ich glaube, dass die Diskussion um dieses dämliche Slash, mehr Strom verbraucht hat als das Slash selber. 
Aber mal was Grundsätzliches zu der Variantenauswahl.
Mir ist aufgefallen (durch Anrufe, oder auch durch weniger Aufrufe der Varianten) das die Leute mit dem Dropedown nicht so warm werden.
Erstaunlich war auch jetzt der Versuch mit Bekannten und meiner Frau. Beide Versionen nebeneinander.
Ein sichtbares Zögern und mit den Augen suchen beim Dropedown. Und sofort ohne Zögern die Version ohne Dropedown zu bevorzugen. Auch die ganz klare Aussage das die Variantendetails zum Anklicken besser ist.
Es kann sich ja mal ein Profi dransetzen und was Sauberes zu programmieren. Bei meiner Version habe ich noch “.png”, die ich auch erst noch erstellen muss. Schön wäre es, auch wenn es nur eine Farbversion oder Größenversion gibt, diese schon gleich gesetzt/ausgewählt wäre.
Man könnte auch anstatt Grafik ein Background Color wert nehmen. Oder alternativ zur Auswahl im Backend. Im Backend eigener css Style. Usw…
Und, und, und…
Mach am besten einen neuen Beitrag, hier ist der überschrift nicht passend.
Grüße
Rafig