HILFE: ID vergeben bei "Selbsterstellte Felder" -> Plugin

  • Hallo liebe Formum Mitglieder, ich bin Neu hier und freue mich nun ein Teil der Gemeinde zu sein! :D


    Ich nutze seit vielen Jahren Virtuemart und hatte bishher bei meinen "Selbsterstelle Felder", welche als Plugin "Feld-Typ E" (VM Custom - Customer Text Input) angelegt wurden, bis Version 2.6.6 immer im Fondend beim Anzeigen des Quellcodes eine ID (Beispiel:
    <input class="vmcustom-textinput" value="" size="30" id="selbsterstelltes_feld_30" name="customPlugin[1389][textinput][comment]" type="text">)


    Diese ID setzte sich lediglich aus der dem Namen (Selbsterstelltes Feld) und der Feldgröße (30) zusammen.
    Ich habe diese ID für ein Java Script genutzt, welches automatisch in dieses Feld einen Text einfügt.
    Beispiel: javascript:window.opener.document.getElementById('selbsterstelltes_feld_30').value='Teddy2'; window.close();


    Somit konnte der Kunde aus Bildern auswählen und das Bild wurde zu Text und in das Feld automatisch eingetragen.


    Nun zum eigentlichen Problem, in VM 3 gibt es diese ID oder überhaupt keine ID mehr für Plugins der Selbsterstellten Felder (Text Input).
    Beispiel: input class="vmcustom-textinput" value="" size="30" name="customProductData[97][52][1354][comment]" type="text">


    Für alle anderen Selbsterstellten Feldtypen wir z.B. Zeichenfolge, gibt es nach wie vor eine ID.
    Beispiel (ID bereits gekürzt: <div class="product-field-display"><select id="1015" name="customProductData[9]" class="vm-chzn-select">


    Ich finde einfach nicht die Ecke, wo für das VM Plugin (Selbsterstelltes Feld) der Name erzeugt wird und ich ggf. noch eine ID erzeugen lassen kann?
    Der Name kommt aktuell immer mit "customProductData[Produkt_ID][Feld_ID][Custom_ID][comment]" raus und ich finde einfach nicht die php, die diesen Namen erzeugt.


    Ich habe bereits folgende Dateien durchsucht:
    Components/cam_Virtuemart/sublayouts/customfield.php
    Components/cam_Virtuemart/sublayouts/customfields.php
    administrator/components/com_virtuemart/plugins/vmplugin.php
    administrator/components/com_virtuemart/plugins/vmcustomplugin.php
    administrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.php


    Wie gesagt, ich bin nicht fündig gewurden, wo ich den Namen ändern kann, oder für Plugins eine ID einfügen kann.
    Evtl. bin ich auch nur blind! :cool:


    Vielleicht hat hier jemand eine Idee, wo ich noch schauen könnte oder wie ich vielleicht auch anderweitig die ID rein bekomme.
    Ich möchte einfach, das dieser Automatismus weiterhin funktioniert und die Kunden den Text bzw. Bildname nicht manuell eintragen müssen, aber dafür braucht man halt eine eindeutige Zuordnung des Textfeldes mit ID.


    Vielen Dank bereits vorab.


    Gruß
    Pierre

  • Vielen Dank für die sehr überschaubare Antwortquote.


    Ich habe das Problem inzwischen selbst gelöst.


    Die id kann in der Datei "eure_Seite/plugins/vmcustom/textinput/textinput/tmpl/default.php ergänzt werden:


    Direkt ganz oben wird alles erzeugt:
    Sieht dann so aus hier wird denn folgendes ausgegeben id="wunschname_[customfield_id]", also die id des Feldes bei der Anlage.


    <?php
    defined('_JEXEC') or die();
    $class='vmcustom-textinput';
    $product = $viewData[0];
    $params = $viewData[1];
    $idTag = 'wunschname_['.$params->virtuemart_customfield_id .']';
    $name = 'customProductData['.$product->virtuemart_product_id.']['.$params->virtuemart_custom_id.']['.$params->virtuemart_customfield_id .'][comment]';
    ?>


    <input class="<?php echo $class ?>"
    type="text" value=""
    size="<?php echo $params->custom_size ?>"
    id="<?php echo $idTag?>"
    name="<?php echo $name?>"
    ><br />


    Vielleicht benötigt ein anderer auch mal eine ID bei diesem Feld.

  • Hallo Pierre,


    danke, dass Du die Antwortquote selbst hochgesetzt hast. Wir sind halt alle nur mit einem gewissen Paket Zeit versehen, da muss man manchmal selbst ran. ;-)


    Ansonsten kann man solche Posts auch nach gewisser Zeit noch einmal hochstubsen, das wird hier nicht böse gesehen, wenn es mit ein wenig Abstand von ein oder zwei Tagen geschieht.


    Vielen Dank noch einmal für die Antwort, davon lebt ein Forum
    Stefan