2015-12-08 20 views
16

qty、add-to-cartボタンを追加してリニアファッションで表示する方法を知りたいvm3製品の詳細ページ。virtuemart 3の製品詳細ページの関連商品にqtyとadd-to-cartを追加し、リニアファッションで表示

私はここで同様の質問をしましたが(Display pricing and add to cart button in related products Virtuemart 2.0)、それでもvm3では動作しません。

コンポーネント/ com_virtuemart/sublayouts/related.phpに正しいファイルが見つかりましたが、私が見つけた問題のような構文は見当たりません。

私が達成しようとしていることの前後の画像を添付します。前 :

before

、これはそれが見えるようにするために私が希望するものです。後:あなたが任意のアイデアやヒントをお持ちの場合は

after

は、私はとても感謝されます。

この私がコンポーネントに持っているものです/ com_virtuemart /サブレイアウト/ 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>'; 
} 

これは私がコンポーネント/ com_virtuemart /ビュー/ productdetails/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

作業中の関連コードを追加してください。 –

+0

related.phpファイルの最後に '?> xxxx <?php'を追加し、xxxxが各製品の下に表示されたので、関連するファイルを見つけたと確信しています。 –

+0

フランク、この問題を解決できましたか? –

答えて

0

あなたがオーバーライドを使用していて、

/templates/{your_template_folder}/html/com_virtuemart/sublayouts/addtocart.php 
を持っている場合あなたが特定のPHPのオーバーライドにあなたに、特定のPHPの上書きに here official documentation

サブレイアウトを使用する方法について

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

を使用することができますし、また、私はあなたもこれを読んでする必要があると思うよりも、

CODE ADJUSTMENTS FOR VIRTUEMART 3

関連する問題