Modul: Zusätzliche Freitextparameter, die in der Artikelverwaltung verwaltet werden können (Ver. 4.7.1)

Hallo OXID-Gemeinde,

ich habe mich wieder mal an einem Modul versucht. Ich habe vor, demnächst einen Update auf die neuste Version (4.7.1) durchzuführen. Da ich schon länger die im Betreff genannte Funktionalität vermisst habe, habe ich in den letzten Tagen das folgende Modul erstellt.

Es funktioniert wie folgt:
Im Adminbereich erscheint folgendes Feld (mit entsprechender Hilfe):

Die Option “Artikel ist individualisierbar” muss aktiviert wurden.

Sobald die Optionen eingetragen werden (egal ob 1 oder mehrere Parameter), werden diese wie folgt im Frontend angezeigt:

Da die Funktionalität das PersParams-Mechanismus benutzt, werden alle Optionen weitergegeben und im Warenkorb angezeigt. Da das OXID-System noch überprüft, ob das Standardnotizfeld befüllt wurde, funktioniert es vorerst nur, wenn in dem Notizfeld auch etwas eingetragen wurde. Vielleicht kann mir jemand an dieser Stelle aushelfen?

Noch eine Sache - Es ist die erste lauffähige Version, als nicht hauen, wenn etwas nicht richtig funktioniert :smiley: Ich werde in den nächsten Tagen weitere daran arbeiten, da ich diese Funktion selbst benötige.

Das Modul kann hier heruntergeladen werden: MODUL

Hallo knackig,

cool. hast Du vielleicht Lust, das Modul bei Github einzustellen?
http://github.com/OXIDforge

Gruß

[QUOTE=Marco Steinhaeuser;111841]Hallo knackig,

cool. hast Du vielleicht Lust, das Modul bei Github einzustellen?
http://github.com/OXIDforge

Gruß[/QUOTE]

Marco, Du meinst wohl http://github.com/OXIDprojects, oder? Da ich mich bisher nie mit github näher auseinandergesetzt habe, würde ich gerne mal von Dir hören/lesen, was erreiche ich eigentlich durch das veröffentlichen bei github? Was müsste ich da beachten?

Nach klar meine ich das ^^
GitHub ist so etwas wie eine Versionskontrolle, vormals SVN. Nur hat man auf dieser Plattform mehr virale Möglichkeiten, etwa um Leute per Fork/Pull-Requests zur Mitarbeit zu bewegen.

Gruß

@Marco: Ich denke, dass ich das Modul morgen bei github veröffentlichen werde.

Und übriges. Heute Abend habe ich folgendes verbessert:

  • Die Parameter werden jetzt auch übernommen, wenn das “details” (bei mir “Notiz”)-Feld leer ist.
  • Wird das gleiche Produkt nacheinander mit UNTERSCHIEDLICHEN Parametern in den Warenkorb gelegt, werden die Produkte wie unterschiedliche Produkte angezeigt.
  • Und wenn das gleiche Produkt nacheinander mit GLEICHEN Parametern in den Warenkorb gelegt wird, werden die Produkte wie gleiche Produkte angezeigt.

Ich hoffe, dass ich damit auch anderen helfen kann :wink:

EDIT: Ich habe die im ersten Post verlinkte Datei angepasst, so dass kein neuer Link benötigt wird.

So, eben habe ich das Modul unter Github veröffentlicht. Ich hoffe, dass jetzt auch andere darauf einen Blick werfen werden :wink:

Hier ist es zu finden: https://github.com/pgaida/ppg_additionalparams

Hallo,

das ist ja genau was ich gesucht habe-
nur leider kriege ich es nicht zum Laufen…
zuerst wurde das was ich bei Artikel eingetragen habe gar nicht in die Datenbank geschrieben - habe dann oxid upgedatet auf 4.7.3 - jetzt wird es in die Datenbank geschrieben, aber beim Artikel erscheinen keine Zusatzfelder.

Vielleicht geht es auch nur mit Version 4.7.1 … ?!

Gibt es vielleicht sonst noch eine andere Lösung oder Modul mit dem ich mehere Felder für einen Artikel abfragen kann.
Konkret geht es um
Geburtsdatum|Geburtszeit|Geburtsort|Augenfarbe|Haarfarbe

Schon mal vielen Dank

  • ansonsten such jetzt mal weiter

Gruss
Ricardo

hmm - jetzt klappt es doch…

ich glaube ich hatte das Feld “Artikel ist indivdualisierar” nicht angekreuzt…
however jetzt klappt es - TOLL!
Danke!

Hallo,

das Modul ist echt toll. :o

Ich würde gerne manche Felder als [B]Pflichfelder[/B] haben. Wie ist das realisierbar?
Kann man auch [B]zusätzlich[/B] Radionbuttons, Checkboxes ect. statt die "input"Feilder einbauen? In welche Datei kann ich diese HTML Elemente hinfügen?

Danke für die Antwort :slight_smile:

Gruß
mmr

Hat das Modul schon irgendwer weiterentwickelt? Ansonten baue ich mal noch Selectboxen rein. Wie soll ich das am besten maskieren? Wäre noch zu klären, bevor ich anfange. Eventuell alle Felder, die in der Selectbox aufscheinen sollen in einer Klammer? Oder was meint Ihr?

ppg_addparams_ocarticles.php


<?php
/**
 * @link      http://www.paramente-gaida.de
 * @package   ppg_additionalparams
 * @modified  vompletely rewritten the output of input fields / added select field  
 * @copyright (C) Paul Gaida / Chris Bernhard 2014
 */

class ppg_addparams_oxarticles extends ppg_addparams_oxarticles_parent {
    
    public function getaddparams($addparams) {
        
        $addparams = explode("|",$addparams);
                        
        $i = 0;
        foreach ($addparams as $key => $value) {     
             
         $selecthtml = $this->getaddselects($value);
         $checkboxeshtml = $this->getaddcheckboxes($value, $i);           
                          
         if ($selecthtml || $checkboxeshtml) {
         
          $html .= $selecthtml;
          $html .= $checkboxeshtml;
         
         } else {
           $html .= '<tr>
                      <td style="text-align:right;">' . $value . '</td>
                      <td><input type="text" id="persistentParam_' . $key . '" name="persparam[' . $value . ']" value="" size="25"></td>
                    </tr>';
          }
          
          $i++;           
        }        
                                        
        return $html;
    }

    public function getaddselects($value) {
     
        $select = explode("@", $value);
        
        if (count($select) > 1) {
     
          $html .= '<tr>
                      <td style="text-align:right;">' . $select[0] . '</td>
                      <td><select class="form-control" name="persparam[' . $select[0] . ']">';
                      
            foreach ($select as $keys => $values) {
              if ($values != $select[0]) {
                $html .= '<option value="' . $values . '">' . $values .'</option>';
              }
            }
            
          $html .= '</select></td></tr>';
        
        }
        
        return $html;    
    
    }
    
    public function getaddcheckboxes($value, $i) {
     
        $check = explode("#", $value);
        
        if (count($check) > 1) {

          foreach ($check as $keys => $values) {
            if ($values != $check[0]) {
              $html .= '<tr><td></td><td><input id="addcheckbox_' . $i . '" type="checkbox" name="persparam[' . $check[0] .']" value="' . $values . '"> <label for="addcheckbox_' . $i . '">' . $values . '</label></td></tr>';
            }
          }             
        }
        
        return $html;    
    
    }    

}

Es kann nun folgendes eingetragen werden, um ein Selectfeld zu Erzeugen:;


Vorname|Nachname|Auswahlname@Auswahl1@Auswahl2@Auswahl3|Check1#Checkbox1|Check2#Checkbox2|Check3#Checkbox3

Im Template muss die For-Schleife durch das Konstrukt ersetzt werden:



    [{assign var=addparams value=$oDetailsProduct->oxarticles__oxaddparams->value}]
    [{assign var=formfields value=$oDetailsProduct->getaddparams($addparams)}] 
    
    [{ $formfields }]


Hallo,

das Modul ist super. Ich benötige aber nur das Eingabefeld ohne Notizfeld. Habe jetzt schon in mehreren Datein gesucht aber finde keine Möglichkeit das Notizfeld zu entfernen.

modules / ppg_additionalparams / out / blocks / details_productmain_persparams.tpl

[{if $oDetailsProduct->oxarticles__oxaddparams->value != “” && $oView->isPersParam()}]
[{assign var=addparams value=$oDetailsProduct->oxarticles__oxaddparams->value}]
<h3 style=“line-height:50%;”>[{oxmultilang ident=“PPG_ADDPARAMS_TITLE_PRODUCTINFO”}]</h3>
[{assign var=addparams_array value=$oDetailsProduct->explodeaddparams($addparams)}]
<table style=“border-collapse:separate;border-spacing:2px;”>
[{foreach from=$addparams_array item=param_name}]
[{* Fields for every additional parameter defined in Article Extend Form }]
<tr style=“margin:1px 0px !important;”>
<td style=“text-align:right;”>[{ $param_name }]:</td>
<td><input type=“text” id=“persistentParam” name=“persparam[[{$param_name}]]” value=“[{ $oDetailsProduct->aPersistParam.text }]” size=“25”></td>
</tr>
[{/foreach}]
[{
Field with the usual notice textarea, but fitted to the addparams layout *}]
<tr">
<td style=“text-align:right;vertical-align:top;”>[{ oxmultilang ident=“PPG_ADDPARAMS_LABEL” }]:</td>
<td><textarea id=“persistentParam” name=“persparam[details]” cols=“35” rows=“3”>[{ $oDetailsProduct->aPersistParam.text }]</textarea></td>
</tr>
</table>
[{else}]
[{$smarty.block.parent}]
[{/if}]

Wenn ich das letzte table entferne, müßte das Textfeld doch eigentlich ausgetragen sein?

Kann mir da nochmal jemand helfen?

Vielen Dank im vorraus.

Beste Grüße
jogy