Selbsterstellte Felder Multi Variant

  • Hallo,


    habe einen neuen Shop aufgesetzt mit den Multi Variants. Eigentlich perfekte Lösung um verschieden Farben, Größen oder sonstiges in einem "Selbsterstellten Feld" zu steuern.
    Nur leider werden die Änderungen an den Auswahlfeldern im Frontend nicht übernommen. Es findet also keine Aktualisierung der Seite statt.
    Habe als Test auch nochmal die produktdetails-default.php von Virtuemart ausprobiert, um auszuschließen, dass es an der produktdetails-default.php des Templates liegt.
    Habe auch versucht mit dem PlugIn jQuery Easy einen evtl. jQuery Konflikt zu lösen. Komme ich aber nicht mit weiter.


    Auf dieser Seite habe ich eine Multi Variante laufen:
    https://bow.oakmountain.de/index.php...n/karte-detail


    Vielleicht hat hier ja jemand eine Idee.


    Joomla 3.4.4, Virtuemat 3.0.10


    Mittlerweile habe ich im Netz etwas gefunden was helfen könnte, bin aber kein PHP-Experte, und weiß daher nicht ob und wie ich diesen Code in die produktdetails default.php einfügen soll. Vielleicht kann ja jemand von Euch etwas damit anfangen:





    add this here:


    <?php } // Product Packaging END
    ?>


    <?php


    //comment if there are something different to it, i add it:


    echo shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'onbot'));


    echo shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'related_products','class'=> 'product-related-products','customTitle' => true ));


    echo shopFunctionsF::renderVmSubLayout('customfields',array('product'=>$this->product,'position'=>'related_categories','class'=> 'product-related-categories'));


    ?>


    <?php // onContentAfterDisplay event






    and it must at the end:


    <?php
    echo $this->loadTemplate('reviews');


    //new here


    // Show child categories
    //if (VmConfig::get('showCategory', 1)) {
    // echo $this->loadTemplate('showcategory');
    //}


    $j = 'jQuery(document).ready(function($) {
    Virtuemart.product(jQuery("form.product"));


    $("form.js-recalculate").each(function(){
    if ($(this).find(".product-fields").length && !$(this).find(".no-vm-bind").length) {
    var id= $(this).find(\'input[name='virtuemart_product_id[]"]\').val();
    Virtuemart.setproducttype($(this),id);


    }
    });
    });';
    //vmJsApi::addJScript('recalcReady',$j);


    /** GALT
    * Notice for Template Developers!
    * Templates must set a Virtuemart.container variable as it takes part in
    * dynamic content update.
    * This variable points to a topmost element that holds other content.
    */
    $j = "Virtuemart.container = jQuery('.productdetails-view');
    Virtuemart.containerSelector = '.productdetails-view';";


    vmJsApi::addJScript('ajaxContent',$j);


    echo vmJsApi::writeJS();


    ?>



    </div>


    EDIT: I put it in:


    /templates/mytemplate/html/com_virtuemart/productdetails/default

  • Habe mal den PHP Developer mode eingeschaltet und bekomme folgende Fehler.
    Vielleicht kann jemand damit etwas anfangen:


    Notice: Undefined index: normal in /home/www/doc/xxxx/xxxxx/xxxxxx/templates/yag_showroom_vt/themes/yag_showroom_theme/assets/yagIncludes/com_virtuemart/default_customfields.php on line 5


    Warning: Invalid argument supplied for foreach() in /home/www/doc/xxxx/xxxxx/xxxxxx/templates/yag_showroom_vt/themes/yag_showroom_theme/assets/yagIncludes/com_virtuemart/default_customfields.php on line 5

  • Hm,


    da ist irgendetwas in Deinem Yagendo-Template nicht in Ordnung, vielleicht postest Du mal die ersten Zeilen der oben genannten Datei (achte darauf, dass der Pfad genau stimmt, könnte mehrere geben).


    Ich würde da evtl. einmal bei Yagendo nachfragen.


    So short
    Stefan

  • Hallo,


    Yagendoo vermutet das Problem bei Virtuemart.
    Habe ja auch schon mit Protostar getestet und das gleiche negative Ergebnis.


    Hier mal der Code aus der default_customfields.php:


    <?php if(!empty($this->product->customfieldsSorted)): ?>
    <div class="yagVmFlyProdFields">
    <?php $custom_title = null; ?>


    <?php foreach( $this->product->customfieldsSorted[$this->position] as $field ) : ?>
    <?php if( $field->is_hidden ) :
    continue;
    endif; ?>


    <?php if( $field->display ) : ?>
    <div class="yagVmFlyProdField yagVmFlyProdFieldType-<?php echo $field->field_type ?>">
    <?php if( $field->custom_title != $custom_title ) : ?>
    <span class="yagVmFlyProdFieldTitle"><?php echo JText::_($field->custom_title); ?></span>
    <?php if( $field->custom_tip )
    echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
    endif; ?>

    <?php if( !empty($field->custom_field_desc) ) : ?>
    <span class="yagVmFlyProdFieldDesc"><?php echo jText::_($field->custom_field_desc); ?></span>
    <?php endif; ?>

    <span class="yagVmFlyProdFieldDisplay"><?php echo $field->display; ?></span>
    </div>
    <?php $custom_title = $field->custom_title; ?>
    <?php endif; ?>
    <?php endforeach; ?>
    </div>
    <?php endif; ?>

  • Hm,


    die gleiche Fehlermeldung mit Protostar?


    Das ist hört sich nach einem Theme an. Das Theme könnte auch aktiviert sein, wenn Protostar aktiviert ist.


    Wenn es Zeile 5 ist, wird es wohl das hier sein.


    <?php foreach( $this->product->customfieldsSorted[$this->position] as $field ) : ?>



    ......


    schnipp


    .......


    Ich ruf mal lieber die Feuerwehr, be back.

  • Habe mal den PHP Developer mode eingeschaltet und bekomme folgende Fehler.
    Vielleicht kann jemand damit etwas anfangen:


    Notice: Undefined index: normal in /home/www/doc/xxxx/xxxxx/xxxxxx/templates/yag_showroom_vt/themes/yag_showroom_theme/assets/yagIncludes/com_virtuemart/default_customfields.php on line 5


    Warning: Invalid argument supplied for foreach() in /home/www/doc/xxxx/xxxxx/xxxxxx/templates/yag_showroom_vt/themes/yag_showroom_theme/assets/yagIncludes/com_virtuemart/default_customfields.php on line 5


    bedeuted <?php foreach( $this->product->customfieldsSorted[$this->position] as $field ) : ?>


    das Array hier $this->product->customfieldsSorted[$this->position] hat keine Werte für den Schlüssel "normal". Üblicherweise hat fast jeder customfields und daher steht da was, aber das kann auch mal leer sein.


    Abhilfe, wir können in den core ein leeres array reinsetzen, und/oder man prüft vorher


    PHP
    1. <?php if(!empty($this->product->customfieldsSorted)): ?>


    ändern in


    PHP
    1. <?php if(!empty($this->product->customfieldsSorted[$this->position])): ?>
  • /home/www/doc/xxxx/xxxxx/xxxxxx/templates/yag_showroom_vt/themes/yag_showroom_theme/assets/yagIncludes/com_virtuemart/default_customfields.php on line 5


    Frag Yagendoo, das ist nicht unser Code.


    Wir nutzen NIE

    PHP
    1. <?php if( !empty($field->custom_field_desc) ) : ?>
    2. <?php endif; ?>


    Bei uns würde das so aussehen

    PHP
    1. <?php
    2. if( !empty($field->custom_field_desc) ) {
    3. }
    4. ?>


    bzw, gerade geschaut. Bei uns gibts die Datei garnicht, aber vermutlich ist es deren Version der customfields.php in sublayouts. Könnte man also auch mit einem sauberen Override lösen. Bei uns steht

    Code
    1. if (!empty($product->customfieldsSorted[$position])) {
  • Hallo,
    Nur leider werden die Änderungen an den Auswahlfeldern im Frontend nicht übernommen. Es findet also keine Aktualisierung der Seite statt.


    Üblicherweise ist das ein jQuery problem.



    Habe auch versucht mit dem PlugIn jQuery Easy einen evtl. jQuery Konflikt zu lösen. Komme ich aber nicht mit weiter.


    Sollte nicht nötig sein, kann was verbessern, aber auch erst ein Problem erzeugen



    Mittlerweile habe ich im Netz etwas gefunden was helfen könnte, bin aber kein PHP-Experte, und weiß daher nicht ob und wie ich diesen Code in die produktdetails default.php einfügen soll.


    Entweder unseren original code nehmen, oder den von Yagendoo.