Available Bild automatisch an Stocklevel anpassen

  • Hallo Profis,


    Ich hoffe ich erhalte von euch auch zu meinem (aktuell) letzten Problem mit meinem Shop gute Tipps :o


    Ich versuche, dass das availability Bild in der Produkt-Detailansicht angezeigt wird wie angegeben. D.h. das Bild das ich im Backend unter Produktstatus auswähle. Das funktioniert soweit und ist ja auch kein Proble.


    Nun soll aber, wenn der Bestand auf 0 ist, bzw. Bestand 1 und Bestellungen 1, das Bild automatisch auf ein hinterlegtes Bild mit dem Hinweis "Ausverkauft" wechseln.


    Die Abfrage findet ja schon statt. Dir Ausgabe, dass der Bestand "leer" ist wird ausgegeben! Ich habe bewusst so eingestellt, dass bei Bestand minus Bestellungen < 1 der Warenkorb-Button in die "Informieren Sie mich" Schaltfläche wechsellt. Auch das funktioniert reibungslos.


    Kann mir jemand helfen wie bzw. vor allem WO ich dieser Abfrage das mit dem Bild hinzufügen kann?


    Vielen Dank.
    Gruß Nikolas


    PS: Falls ich einen Denkfehler gemacht habe oder es andere Lösungsansätze gibt habe ich immer ein offenes Ohr. Falls es hilfreich ist hier noch meine Seite: 50fifty-scooter.de

  • Hallo Stefan und danke für deine Antort. Das wird die Datei sein die ich suche. Aber wo finde ich sie?


    Bisher habe ich mich ständig an der default.php in components/com_virtuemart/views/productdetails/tmpl/ versucht.


    Gruß

  • Genau - gerne :o


    ________________________________________________________________


    <?php
    /**
    *
    * Show the product details page
    *
    * @package VirtueMart
    * @subpackage
    * @author Max Milbers, Eugen Stranz
    * @author RolandD,
    * @todo handle child products
    * @link Home
    * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
    * @license The GNU General Public License v3.0 - GNU Project - Free Software Foundation GNU/GPL, see LICENSE.php
    * VirtueMart is free software. This version may have been modified pursuant
    * to the GNU General Public License, and as distributed it includes or
    * is derivative of works licensed under the GNU General Public License or
    * other free or open source software licenses.
    * @version $Id: default.php 6530 2012-10-12 09:40:36Z alatak $
    */
    // Check to ensure this file is included in Joomla!
    defined('_JEXEC') or die('Restricted access');


    /* Let's see if we found the product */
    if (empty($this->product)) {
    echo JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
    echo '<br /><br /> ' . $this->continue_link_html;
    return;
    }


    if(JRequest::getInt('print',false)){
    ?>
    <body onLoad="javascript:print();">
    <?php }


    // addon for joomla modal Box
    JHTML::_('behavior.modal');


    $MailLink = 'index.php?option=com_virtuemart&view=productdetails&task=recommend&virtuemart_product_id=' . $this->product->virtuemart_product_id . '&virtuemart_category_id=' . $this->product->virtuemart_category_id . '&tmpl=component';


    $boxFuncReco = '';
    $boxFuncAsk = '';
    if(VmConfig::get('usefancy',1)){
    vmJsApi::js( 'fancybox/jquery.fancybox-1.3.4.pack');
    vmJsApi::css('jquery.fancybox-1.3.4');
    if(VmConfig::get('show_emailfriend',0)){
    $boxReco = "jQuery.fancybox({
    href: '" . $MailLink . "',
    type: 'iframe',
    height: '550'
    });";
    }
    if(VmConfig::get('ask_question', 0)){
    $boxAsk = "jQuery.fancybox({
    href: '" . $this->askquestion_url . "',
    type: 'iframe',
    height: '550'
    });";
    }


    } else {
    vmJsApi::js( 'facebox' );
    vmJsApi::css( 'facebox' );
    if(VmConfig::get('show_emailfriend',0)){
    $boxReco = "jQuery.facebox({
    iframe: '" . $MailLink . "',
    rev: 'iframe|550|550'
    });";
    }
    if(VmConfig::get('ask_question', 0)){
    $boxAsk = "jQuery.facebox({
    iframe: '" . $this->askquestion_url . "',
    rev: 'iframe|550|550'
    });";
    }
    }
    if(VmConfig::get('show_emailfriend',0) ){
    $boxFuncReco = "jQuery('a.recommened-to-friend').click( function(){
    ".$boxReco."
    return false ;
    });";
    }
    if(VmConfig::get('ask_question', 0)){
    $boxFuncAsk = "jQuery('a.ask-a-question').click( function(){
    ".$boxAsk."
    return false ;
    });";
    }


    if(!empty($boxFuncAsk) or !empty($boxFuncReco)){
    $document = JFactory::getDocument();
    $document->addScriptDeclaration("
    //<![CDATA[
    jQuery(document).ready(function($) {
    '.$boxFuncReco.'
    '.$boxFuncAsk.'
    /* $('.additional-images a').mouseover(function() {
    var himg = this.href ;
    var extension=himg.substring(himg.lastIndexOf('.')+1);
    if (extension =='png' || extension =='jpg' || extension =='gif') {
    $('.main-image img').attr('src',himg );
    }
    console.log(extension)
    });*/
    });
    //]]>
    ");
    }



    ?>


    <div class="productdetails-view productdetails">


    <?php
    // Product Navigation
    if (VmConfig::get('product_navigation', 1)) {
    ?>
    <div class="product-neighbours">
    <?php
    if (!empty($this->product->neighbours ['previous'][0])) {
    $prev_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->neighbours ['previous'][0] ['virtuemart_product_id'] . '&virtuemart_category_id=' . $this->product->virtuemart_category_id, FALSE);
    echo JHTML::_('link', $prev_link, $this->product->neighbours ['previous'][0]
    ['product_name'], array('rel'=>'prev', 'class' => 'previous-page'));
    }
    if (!empty($this->product->neighbours ['next'][0])) {
    $next_link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->neighbours ['next'][0] ['virtuemart_product_id'] . '&virtuemart_category_id=' . $this->product->virtuemart_category_id, FALSE);
    echo JHTML::_('link', $next_link, $this->product->neighbours ['next'][0] ['product_name'], array('rel'=>'next','class' => 'next-page'));
    }
    ?>
    <div class="clear"></div>
    </div>
    <?php } // Product Navigation END
    ?>


    <?php // Back To Category Button
    if ($this->product->virtuemart_category_id) {
    $catURL = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$this->product->virtuemart_category_id, FALSE);
    $categoryName = $this->product->category_name ;
    } else {
    $catURL = JRoute::_('index.php?option=com_virtuemart');
    $categoryName = jText::_('COM_VIRTUEMART_SHOP_HOME') ;
    }
    ?>
    <div class="back-to-category">
    <a href="<?php echo $catURL ?>" class="product-details" title="<?php echo $categoryName ?>"><?php echo JText::sprintf('COM_VIRTUEMART_CATEGORY_BACK_TO',$categoryName) ?></a>
    </div>


    <?php // Product Title ?>
    <h1><?php echo $this->product->product_name ?></h1>
    <?php // Product Title END ?>


    <?php // afterDisplayTitle Event
    echo $this->product->event->afterDisplayTitle ?>


    <?php
    // Product Edit Link
    echo $this->edit_link;
    // Product Edit Link END
    ?>


    <?php
    // PDF - Print - Email Icon
    if (VmConfig::get('show_emailfriend') || VmConfig::get('show_printicon') || VmConfig::get('pdf_icon')) {
    ?>
    <div class="icons">
    <?php
    //$link = (JVM_VERSION===1) ? 'index2.php' : 'index.php';
    $link = 'index.php?tmpl=component&option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $this->product->virtuemart_product_id;


    echo $this->linkIcon($link . '&format=pdf', 'COM_VIRTUEMART_PDF', 'pdf_button', 'pdf_icon', false);
    echo $this->linkIcon($link . '&print=1', 'COM_VIRTUEMART_PRINT', 'printButton', 'show_printicon');
    echo $this->linkIcon($MailLink, 'COM_VIRTUEMART_EMAIL', 'emailButton', 'show_emailfriend', false,true,false,'class="recommened-to-friend"');
    ?>
    <div class="clear"></div>
    </div>
    <?php } // PDF - Print - Email Icon END
    ?>


    <?php
    // Product Short Description
    if (!empty($this->product->product_s_desc)) {
    ?>
    <div class="product-short-description">
    <?php
    /** @todo Test if content plugins modify the product description */
    echo nl2br($this->product->product_s_desc);
    ?>
    </div>
    <?php
    } // Product Short Description END



    if (!empty($this->product->customfieldsSorted['ontop'])) {
    $this->position = 'ontop';
    echo $this->loadTemplate('customfields');
    } // Product Custom ontop end
    ?>


    <div>
    <div class="width60 floatleft">
    <?php
    echo $this->loadTemplate('images');
    ?>
    </div>


    <div class="width40 floatright">
    <div class="spacer-buy-area">


    <?php
    // TODO in Multi-Vendor not needed at the moment and just would lead to confusion
    /* $link = JRoute::_('index2.php?option=com_virtuemart&view=virtuemart&task=vendorinfo&virtuemart_vendor_id='.$this->product->virtuemart_vendor_id);
    $text = JText::_('COM_VIRTUEMART_VENDOR_FORM_INFO_LBL');
    echo '<span class="bold">'. JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL'). '</span>'; ?><a class="modal" href="<?php echo $link ?>"><?php echo $text ?></a><br />
    */
    ?>


    <?php
    if ($this->showRating) {
    $maxrating = VmConfig::get('vm_maximum_rating_scale', 5);


    if (empty($this->rating)) {
    ?>
    <span class="vote"><?php echo JText::_('COM_VIRTUEMART_RATING') . ' ' . JText::_('COM_VIRTUEMART_UNRATED') ?></span>
    <?php
    } else {
    $ratingwidth = $this->rating->rating * 24; //I don't use round as percetntage with works perfect, as for me
    ?>
    <span class="vote">
    <?php echo JText::_('COM_VIRTUEMART_RATING') . ' ' . round($this->rating->rating) . '/' . $maxrating; ?><br/>
    <span title=" <?php echo (JText::_("COM_VIRTUEMART_RATING_TITLE") . round($this->rating->rating) . '/' . $maxrating) ?>" class="ratingbox" style="display:inline-block;">
    <span class="stars-orange" style="width:<?php echo $ratingwidth.'px'; ?>">
    </span>
    </span>
    </span>
    <?php
    }
    }
    if (is_array($this->productDisplayShipments)) {
    foreach ($this->productDisplayShipments as $productDisplayShipment) {
    echo $productDisplayShipment . '<br />';
    }
    }
    if (is_array($this->productDisplayPayments)) {
    foreach ($this->productDisplayPayments as $productDisplayPayment) {
    echo $productDisplayPayment . '<br />';
    }
    }
    // Product Price
    // the test is done in show_prices
    //if ($this->show_prices and (empty($this->product->images[0]) or $this->product->images[0]->file_is_downloadable == 0)) {
    echo $this->loadTemplate('showprices');
    //}
    ?>


    <?php
    // Add To Cart Button
    // if (!empty($this->product->prices) and !empty($this->product->images[0]) and $this->product->images[0]->file_is_downloadable==0 ) {
    // if (!VmConfig::get('use_as_catalog', 0) and !empty($this->product->prices['salesPrice'])) {
    echo $this->loadTemplate('addtocart');
    // } // Add To Cart Button END
    ?>


    <?php
    // Availability
    $stockhandle = VmConfig::get('stockhandle', 'none');
    $product_available_date = substr($this->product->product_available_date,0,10);
    $current_date = date("Y-m-d");
    if (($this->product->product_in_stock - $this->product->product_ordered) < 1) {
    if ($product_available_date != '0000-00-00' and $current_date < $product_available_date) {
    ?> <div class="availability">
    <?php echo JText::_('COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE') .': '. JHTML::_('date', $this->product->product_available_date, JText::_('DATE_FORMAT_LC4')); ?>
    </div>
    <?php
    } else if ($stockhandle == 'risetime' and VmConfig::get('rised_availability') and empty($this->product->product_availability)) {
    ?> <div class="availability">
    <?php echo (file_exists(JPATH_BASE . DS . VmConfig::get('assets_general_path') . 'images/availability/' . VmConfig::get('rised_availability'))) ? JHTML::image(JURI::root() . VmConfig::get('assets_general_path') . 'images/availability/' . VmConfig::get('rised_availability', '7d.gif'), VmConfig::get('rised_availability', '7d.gif'), array('class' => 'availability')) : JText::_(VmConfig::get('rised_availability')); ?>
    </div>
    <?php
    } else if (!empty($this->product->product_availability)) {
    ?>
    <div class="availability">
    <?php echo (file_exists(JPATH_BASE . DS . VmConfig::get('assets_general_path') . 'images/availability/' . $this->product->product_availability)) ? JHTML::image(JURI::root() . VmConfig::get('assets_general_path') . 'images/availability/' . $this->product->product_availability, $this->product->product_availability, array('class' => 'availability')) : JText::_($this->product->product_availability); ?>
    </div>
    <?php
    }
    }
    else if ($product_available_date != '0000-00-00' and $current_date < $product_available_date) {
    ?> <div class="availability">
    <?php echo JText::_('COM_VIRTUEMART_PRODUCT_AVAILABLE_DATE') .': '. JHTML::_('date', $this->product->product_available_date, JText::_('DATE_FORMAT_LC4')); ?>
    </div>
    <?php
    }
    ?>


    <?php
    // Ask a question about this product
    if (VmConfig::get('ask_question', 0) == 1) {
    ?>
    <div class="ask-a-question">
    <a class="ask-a-question" href="<?php echo $this->askquestion_url ?>" rel="nofollow" ><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL') ?></a>
    <!--<a class="ask-a-question modal" rel="{handler: 'iframe', size: {x: 700, y: 550}}" href="<?php echo $this->askquestion_url ?>"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL') ?></a>-->
    </div>
    <?php }
    ?>


    <?php
    // Manufacturer of the Product
    if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) {
    echo $this->loadTemplate('manufacturer');
    }
    ?>


    </div>
    </div>
    <div class="clear"></div>
    </div>


    <?php // event onContentBeforeDisplay
    echo $this->product->event->beforeDisplayContent; ?>


    <?php
    // Product Description
    if (!empty($this->product->product_desc)) {
    ?>
    <div class="product-description">
    <?php /** @todo Test if content plugins modify the product description */ ?>
    <span class="title"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE') ?></span>
    <?php echo $this->product->product_desc; ?>
    </div>
    <?php
    } // Product Description END


    if (!empty($this->product->customfieldsSorted['normal'])) {
    $this->position = 'normal';
    echo $this->loadTemplate('customfields');
    } // Product custom_fields END
    // Product Packaging
    $product_packaging = '';
    if ($this->product->product_box) {
    ?>
    <div class="product-box">
    <?php
    echo JText::_('COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX') .$this->product->product_box;
    ?>
    </div>
    <?php } // Product Packaging END
    ?>


    <?php
    // Product Files
    // foreach ($this->product->images as $fkey => $file) {
    // Todo add downloadable files again
    // if( $file->filesize > 0.5) $filesize_display = ' ('. number_format($file->filesize, 2,',','.')." MB)";
    // else $filesize_display = ' ('. number_format($file->filesize*1024, 2,',','.')." KB)";


    /* Show pdf in a new Window, other file types will be offered as download */
    // $target = stristr($file->file_mimetype, "pdf") ? "_blank" : "_self";
    // $link = JRoute::_('index.php?view=productdetails&task=getfile&virtuemart_media_id='.$file->virtuemart_media_id.'&virtuemart_product_id='.$this->product->virtuemart_product_id);
    // echo JHTMl::_('link', $link, $file->file_title.$filesize_display, array('target' => $target));
    // }
    if (!empty($this->product->customfieldsRelatedProducts)) {
    echo $this->loadTemplate('relatedproducts');
    } // Product customfieldsRelatedProducts END


    if (!empty($this->product->customfieldsRelatedCategories)) {
    echo $this->loadTemplate('relatedcategories');
    } // Product customfieldsRelatedCategories END
    // Show child categories
    if (VmConfig::get('showCategory', 1)) {
    echo $this->loadTemplate('showcategory');
    }
    if (!empty($this->product->customfieldsSorted['onbot'])) {
    $this->position='onbot';
    echo $this->loadTemplate('customfields');
    } // Product Custom ontop end
    ?>


    <?php // onContentAfterDisplay event
    echo $this->product->event->afterDisplayContent; ?>


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

  • Hallo Stefan,


    habe vor 4 Tagen versucht es zu posten aber scheinbar wurde der Betrag noch nicht gelesen / freigeschalten. Kann ich dir das auch privat schicken oder soll ich es noch mal versuchen?


    ___________________________________________


    Ok hat sich überschnitten. Jetzt ist ist der Text da :)

    Einmal editiert, zuletzt von 50fifty () aus folgendem Grund: hat sich mit dem post davor überschnitten