Hallo,
ich bin ein Frischling bei der Entwicklung von OXID-Modulen und habe sogleich eine Frage. Ich habe diverse neue Felder in die Detail-Ansicht der Produkte eingefügt. Das habe ich so angestellt, dass ich die DB erweitert habe, um bestimmten Produkten eine Anzahl X und den Typ der Input-Felder zuordnen kann. Daraufhin habe ich die Klasse oxList erweitert:
Letzteres mache auch noch für <fieldset> - das o.a. Bsp. sollte aber reichen.
Im folgenden Smarty-Template, gebe ich dann eine <ul> mit weiteren <input>-Feldern aus:
Wenn ich jetzt auf "In den Warenkorb" drücke, kommen die zusätzlichen POST-Params leider nicht an. Das Ziel ist es mit den zusätzlichen Angaben einen Prozess in Gang zu setzen, bei dem in Download-Inhalten Wörter ersetzt werden (str_replace). Dieser Vorgang ist im Prinzip schon vorbereitet, aber ich habe leider keine Ahnung, wie ich die Parameter zuverlässig weiterreichen kann. Danke für jede Hilfe.
Gruss
Domi
Edit: Bin aus Versehen im internationalen Forum gelandet. Sorry
ich bin ein Frischling bei der Entwicklung von OXID-Modulen und habe sogleich eine Frage. Ich habe diverse neue Felder in die Detail-Ansicht der Produkte eingefügt. Das habe ich so angestellt, dass ich die DB erweitert habe, um bestimmten Produkten eine Anzahl X und den Typ der Input-Felder zuordnen kann. Daraufhin habe ich die Klasse oxList erweitert:
PHP Code:
<?php
class serializerForm extends oxList {
protected $_sObjectsInListName = 'formelement';
public function getFormElements($sProductId, $bOnlyActive = true) {
//echo $sSelect;
$oBaseObject = $this->getBaseObject();
$sSerializerTable = $oBaseObject->getViewName();
$sProductId = oxdb::getDb($iFetchMode)->quote($sProductId);
$sSelect = "select $sSerializerTable.* from $sSerializerTable
left join dhserializermain on $sSerializerTable.oxmainid = dhserializermain.oxid
where 1 ";
if ($bOnlyActive) {
$sSelect .= " and ".$oBaseObject->getSqlActiveSnippet()."";
}
$sSelect .= " and dhserializermain.oxartid = $sProductId
order by $sSerializerTable.oxposition asc";
//startProfile("loadLocation");
$this->selectString($sSelect);
//stopProfile("loadLocation");
return $this;
}
}
Im folgenden Smarty-Template, gebe ich dann eine <ul> mit weiteren <input>-Feldern aus:
PHP Code:
[{$smarty.block.parent}]
<span><p>Folgende Felder können Sie individualisieren:</p></span>
[{assign var="sProductId" value=$oDetailsProduct->getId()}]
[{assign var="aSerializerForm" value=$oView->getSerializerForm($sProductId)}]
[{assign var="aSerializerFieldset" value=$oView->getSerializerFieldset($sProductId)}]
[{if $aSerializerForm|@count > 0}]
[{foreach from=$aSerializerFieldset item=oFieldset}]
<ul class="form">
<h3>[{$oFieldset->dhserializerblocks__oxname->value}]</h3>
[{foreach from=$aSerializerForm item=oForm}]
[{if $oForm->dhserializervariables__oxblockid->value == $oFieldset->dhserializerblocks__oxid->value}]
[{if $oForm->dhserializervariables__oxtype->value == 'TEXTFIELD'}]
<li>
<label class="inputlist" name="no1">[{$oForm->dhserializervariables__oxname->value}]</label><input type="text" maxlength="[{$oForm->dhserializervariables__oxmaxlength->value}]"/>
</li>
[{elseif $oForm->dhserializervariables__oxtype->value == 'TEXTAREA'}]
<li>
<label class="inputlist" name="no2">[{$oForm->dhserializervariables__oxname->value}]</label><textarea rows="[{$oForm->dhserializervariables__oxrows->value}]" cols="[{$oForm->dhserializervariables__oxcolumns->value}]"></textarea>
</li>
[{elseif $oForm->dhserializervariables__oxtype->value == 'DATE'}]
<li>
<label class="inputlist" name="no3">[{$oForm->dhserializervariables__oxname->value}]</label><input type="text" id="datepicker" />
</li>
[{elseif $oForm->dhserializervariables__oxtype->value == 'IMAGE'}]
<li>
<label class="inputlist" name="no4">[{$oForm->dhserializervariables__oxname->value}]</label><input type="file" />
</li>
[{else}]
<li>
<span>Error: Feld ist nicht definiert!</span>
</li>
[{/if}]
[{/if}]
[{/foreach}]
</ul>
[{/foreach}]
<!--<button id="generateIDML" class="submitButton largeButton" onclick="#" >Preview generieren</button>-->
[{/if}]
<hr/>
Gruss
Domi
Edit: Bin aus Versehen im internationalen Forum gelandet. Sorry