Child Produkte in kategorieansicht etc. ausblenden

  • Hallo Forum,


    folgende Frage:


    Kann mit jemand helfen, ich müsste in der Kategorieansicht und Suche die Child-Produkte komplett ausblenden....


    habe diesen Eintrag gefunden... aber leider ist meine default.php nicht entsprechend - weder im VM- noch im Template Ordner.


    http://forum.virtuemart.net/index.php?topic=103702.0



    Grüße und einen sonnigen Tag


    SirBoerky

    LiveShop:

    VirtueMart 4.2.4 | Joomla: 3.10.12 | PHP 8.0.30 | JTL - WAWI 1.7 | Template: VP Merchant


    TestShop Umgebung:

    VirtueMart 4.2.6 | Joomla 4.4.2 + Joomla 5.0.2 | PHP 8.1.27 | Template: VP Merchant & VP SMART

    ------------------------------------

    Zusammen gegen Rassismus | gegen Menschenfeindlichkeit | gegen Hass

  • Servus,


    die Child-Produkte einfach aus der Kategorie entfernen.

    In den meisten Fällen wird immer nur das Eltern-Produkt der Kategorie zugewiesen, damit hat man nur ein Produkt mit Drop-Down in der Kategorie.


    In der VM-Konfiguration gibt es im dritten Reiter die Möglichkeit, "Produktvarianten ohne Kategoriezuordnung in Suchergebnissen...".


    Damit sollte das passen.


    Grüße

    Stefan

  • Hi Stefan,

    vielen Dank für die schnelle Antwort.


    Da ich den VM über JTL verwalte kann ich Deine Lösung leider nicht anwenden. JTL legt automatisch für alle Child-Produkte eine Kategorie an....


    Daher die Idee mit dem veränderten Code in der default.php


    Oder hast Du noch eine andere Idee?


    Gruß SirBoerky

    LiveShop:

    VirtueMart 4.2.4 | Joomla: 3.10.12 | PHP 8.0.30 | JTL - WAWI 1.7 | Template: VP Merchant


    TestShop Umgebung:

    VirtueMart 4.2.6 | Joomla 4.4.2 + Joomla 5.0.2 | PHP 8.1.27 | Template: VP Merchant & VP SMART

    ------------------------------------

    Zusammen gegen Rassismus | gegen Menschenfeindlichkeit | gegen Hass

  • Deshalb hast Du den alten Brocken ausgegraben.


    Für die Kategorieansicht kann man das sicher so in das Sublayout products.php einbauen.

    Einfach in der Produktschleife nachfragen, ob das Produkt eine product_parent_id gleich "0" hat, dann darstellen, sonst auslassen.


    Finden (evtl. Zeile 61):

    foreach ( $products as $product ) {

    zu:

    foreach ( $products as $product ) {

    if ($product->product_parent_id == "0") {



    IF schließen, finden (evtl. Zeile 138):

    <?php if($dynamic){


    zu:

    <?php

    }

    if($dynamic){


    Entweder in die products.php einbauen, oder ein eigenes Sublayout "products_nochild.php" anlegen und das neue Sublayout in der Kategorie als Sublayout auswählen, in der es gebraucht wird.

    Sublayouts können im Template oder im /components/com_virtuemart/sublayouts vorkommen/gefunden werden.


    Grüße

    Stefan


    PS. Für die Suche wird es sicher etwas komplizierter, aber ähnlich. Ich muss nun leider noch etwas schaffen.

  • StefanSTS


    top... läuft

    vielen Dank

    LiveShop:

    VirtueMart 4.2.4 | Joomla: 3.10.12 | PHP 8.0.30 | JTL - WAWI 1.7 | Template: VP Merchant


    TestShop Umgebung:

    VirtueMart 4.2.6 | Joomla 4.4.2 + Joomla 5.0.2 | PHP 8.1.27 | Template: VP Merchant & VP SMART

    ------------------------------------

    Zusammen gegen Rassismus | gegen Menschenfeindlichkeit | gegen Hass

  • StefanSTS


    Hi, ich noch mal ;-)



    ich hab den Code in die products.php im Template Ordner eingebaut - siehe unten!

    zusätzlich habe ich in im /components/com_virtuemart/sublayouts/products.php eingebaut....



    Filter alle Childs heraus.... :-)


    Aber nun zerschießt es mir die nachfolgenden Produkte in der Anzeige //


    Bsp:

    https://www.qimmeq.de/index.ph…utter/bestes-futter/adult



    Hmmm.... hast du evtl. einen Rat


    Grüße SirBoerky



    hier noch die beiden Abschnitte aus dem Code :

    a)

    // Calculating Products Per Row

    $cellwidth = ' col-md-'. floor ( 12 / $products_per_row ) . ' col-sm-'. floor ( 12 / $products_per_row ) . ' span' . floor ( 12 / $products_per_row );


    $BrowseTotalProducts = count($products);


    foreach ( $products as $product ) {

    if ($product->product_parent_id == "0") {

    if(!is_object($product) or empty($product->link)) {

    vmdebug('$product is not object or link empty',$product);

    continue;

    }




    b)


    <?php if ( VmConfig::get('show_pcustoms') ) { ?>

    <div class="vm3pr-<?php echo $rowsHeight[$row]['customfields'] ?>">

    <?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'rowHeights'=>$rowsHeight[$row], 'position' => array('ontop', 'addtocart'))); ?>

    </div>

    <?php } else { ?>

    <div class="vm-details-button">

    <?php // Product Details Button

    $link = empty($product->link)? $product->canonical:$product->link;

    echo JHtml::link($link,vmText::_ ( 'COM_VIRTUEMART_PRODUCT_DETAILS' ), array ('title' => $product->product_name, 'class' => 'product-details btn btn-default btn-block margin-top-15' ) );

    ?>

    </div>

    <?php } ?>

    <?php

    }

    if($dynamic) {

    LiveShop:

    VirtueMart 4.2.4 | Joomla: 3.10.12 | PHP 8.0.30 | JTL - WAWI 1.7 | Template: VP Merchant


    TestShop Umgebung:

    VirtueMart 4.2.6 | Joomla 4.4.2 + Joomla 5.0.2 | PHP 8.1.27 | Template: VP Merchant & VP SMART

    ------------------------------------

    Zusammen gegen Rassismus | gegen Menschenfeindlichkeit | gegen Hass