2015-12-08 19 views
16

Vorrei sapere come aggiungere qty, pulsante Aggiungi al carrello e visualizzarli in modo lineare su la pagina dei dettagli del prodotto vm3.Aggiunta di qty e add-to-cart nei prodotti correlati nella pagina dei dettagli del prodotto per virtuemart 3 e visualizzazione in modo lineare

Ho trovato una domanda simile qui (Display pricing and add to cart button in related products Virtuemart 2.0), ma nessuna di queste funzioni per vm3.

Penso di aver trovato i file giusti nei componenti/com_virtuemart/sublayouts/related.php ma nessuno della sintassi appare come nella domanda che ho trovato.

Allegherò un'immagine prima e dopo di ciò che sto cercando di realizzare. Prima:

before

e questo è quello che vorrei per farlo sembrare come. Dopo:

after

Se avete idee o suggerimenti sarei molto grato.

questo è quello che ho in componenti/com_virtuemart/sublayouts/related.php:

<?php 
defined('_JEXEC') or die('Restricted access'); 

$related = $viewData['related']; 
$customfield = $viewData['customfield']; 
$thumb = $viewData['thumb']; 

//juri::root() For whatever reason, we used this here, maybe it was for the mails 
echo JHtml::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id), $thumb . $related->product_name, array('title' => $related->product_name,'target'=>'_blank')); 

if($customfield->wPrice){ 
    $currency = calculationHelper::getInstance()->_currencyDisplay; 
    echo $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $related->prices); 
} 
if($customfield->wDescr){ 
    echo '<p class="product_s_desc">'.$related->product_s_desc.'</p>'; 
} 

Questo è quello che ho in componenti/com_virtuemart/views/sui prodotti/tmpl/default.php:

<?php 
/** 
* 
* Show the product details page 
* 
* @package VirtueMart 
* @subpackage 
* @author Max Milbers, Eugen Stranz, Max Galt 
* @link http://www.virtuemart.net 
* @copyright Copyright (c) 2004 - 2014 VirtueMart Team. All rights reserved. 
* @license http://www.gnu.org/copyleft/gpl.html 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 9058 2015-11-10 18:30:54Z Milbo $ 
*/ 
// 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 vmText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND'); 
    echo '<br /><br /> ' . $this->continue_link_html; 
    return; 
} 

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

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

<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','data-dynamic-update' => '1')); 
     } 
     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','data-dynamic-update' => '1')); 
     } 
     ?> 
     <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 = vmText::_($this->product->category_name) ; 
    } else { 
     $catURL = JRoute::_('index.php?option=com_virtuemart'); 
     $categoryName = vmText::_('COM_VIRTUEMART_SHOP_HOME') ; 
    } 
    ?> 
    <div class="back-to-category"> 
     <a href="<?php echo $catURL ?>" class="product-details" title="<?php echo $categoryName ?>"><?php echo vmText::sprintf('COM_VIRTUEMART_CATEGORY_BACK_TO',$categoryName) ?></a> 
    </div> 

    <?php // Product Title ?> 
    <h1 itemprop="name"><?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 = '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($link . '&print=1', 'COM_VIRTUEMART_PRINT', 'printButton', 'show_printicon',false,true,false,'class="printModal"'); 
     $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'; 
     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 

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

    <div class="vm-product-container"> 
    <div class="vm-product-media-container"> 
<?php 
echo $this->loadTemplate('images'); 
?> 
    </div> 

    <div class="vm-product-details-container"> 
     <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 = vmText::_('COM_VIRTUEMART_VENDOR_FORM_INFO_LBL'); 
      echo '<span class="bold">'. vmText::_('COM_VIRTUEMART_PRODUCT_DETAILS_VENDOR_LBL'). '</span>'; ?><a class="modal" href="<?php echo $link ?>"><?php echo $text ?></a><br /> 
     */ 
     ?> 

     <?php 
     echo shopFunctionsF::renderVmSubLayout('rating',array('showRating'=>$this->showRating,'product'=>$this->product)); 

     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 />'; 
      } 
     } 

     //In case you are not happy using everywhere the same price display fromat, just create your own layout 
     //in override /html/fields and use as first parameter the name of your file 
     echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$this->product,'currency'=>$this->currency)); 
     ?> <div class="clear"></div><?php 
     echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$this->product)); 

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

     // Ask a question about this product 
     if (VmConfig::get('ask_question', 0) == 1) { 
      $askquestion_url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' . $this->product->virtuemart_product_id . '&virtuemart_category_id=' . $this->product->virtuemart_category_id . '&tmpl=component', FALSE); 
      ?> 
      <div class="ask-a-question"> 
       <a class="ask-a-question" href="<?php echo $askquestion_url ?>" rel="nofollow" ><?php echo vmText::_('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 
    $count_images = count ($this->product->images); 
    if ($count_images > 1) { 
     echo $this->loadTemplate('images_additional'); 
    } 

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

    <?php 
    //echo ($this->product->product_in_stock - $this->product->product_ordered); 
    // 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 vmText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE') ?></span> 
    <?php echo $this->product->product_desc; ?> 
     </div> 
    <?php 
    } // Product Description END 

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

    // Product Packaging 
    $product_packaging = ''; 
    if ($this->product->product_box) { 
    ?> 
     <div class="product-box"> 
     <?php 
      echo vmText::_('COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX') .$this->product->product_box; 
     ?> 
     </div> 
    <?php } // Product Packaging END ?> 

    <?php 
    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 
echo $this->product->event->afterDisplayContent; 

echo $this->loadTemplate('reviews'); 

// 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); 

if(VmConfig::get ('jdynupdate', TRUE)){ 
    $j = "jQuery(document).ready(function($) { 
    Virtuemart.stopVmLoading(); 
    var msg = ''; 
    jQuery('a[data-dynamic-update=\"1\"]').off('click', Virtuemart.startVmLoading).on('click', {msg:msg}, Virtuemart.startVmLoading); 
    jQuery('[data-dynamic-update=\"1\"]').off('change', Virtuemart.startVmLoading).on('change', {msg:msg}, Virtuemart.startVmLoading); 
});"; 

    vmJsApi::addJScript('vmPreloader',$j); 
} 

echo vmJsApi::writeJS(); 

if ($this->product->prices['salesPrice'] > 0) { 
    echo shopFunctionsF::renderVmSubLayout('snippets',array('product'=>$this->product, 'currency'=>$this->currency, 'showRating'=>$this->showRating)); 
} 

?> 
</div> 
+0

Si prega di aggiungere il codice pertinente con cui si sta lavorando. –

+0

Ho aggiunto un '?> Xxxx

+0

Frank, sei riuscito a risolvere questo problema? –

risposta

0

Se si utilizza le sostituzioni e si deve

/templates/{your_template_folder}/html/com_virtuemart/sublayouts/addtocart.php 

di quanto si può utilizzare in specifici override php, in voi specifica esclusione php

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

Su come utilizzare il layout subhere official documentation

e anche io credo che avete bisogno di leggere anche questoCODE ADJUSTMENTS FOR VIRTUEMART 3