Здравствуйте, аналогичная проблема. Есть модуль новинки (latestprod), который использует productsnapshot.tpl.php, нужно у товаров, у которых есть свойства вывести эти свойства, чтобы можно было положить в корзину прямо из модуля. Делала как написано:
1. В файле ps_product.php:
Найти функцию function product_snapshot
и внизу, в блоке, отвечающем за отправку в корзину, закоментировать строку:
&& !$this->product_has_attributes($product_id, true)
Таким образом мы разрешаем показ кнопки "купить", если у товара есть свойства.
=============================================================================
2. В файле productsnapshot.tpl:
Вверху, после:
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
вставить для подключения:
$ps_product = new ps_product;
$ps_product_attribute = new ps_product_attribute;
$db = new ps_DB;
и в этом же файле несколько изменить блок кода, отвечающего за отправку товара в корзину:
<!-- The add to cart DIV. -->
<div style="text-align:center;" width="100%">
<div align="left">
<?php
if( !empty($addtocart_link) ) {
?>
</div>
<form action="<?php echo $mm_action_url ?>index.php" method="post" name="addtocart" id="<?php echo uniqid('addtocart_')?>" class="addtocart_form" <?php if( $this->get_cfg( 'useAjaxCartActions', 1 ) && !$notify ) { echo 'onsubmit="handleAddToCart( this.id );return false;"'; } ?>>
<?php echo $ps_product_attribute->list_advanced_attribute($product_id,$product_id); ?>
<div align="left">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="shop.cart" />
<input type="hidden" name="Itemid" value="<?php echo ps_session::getShopItemid(); ?>" />
<input type="hidden" name="func" value="cartAdd" />
<input type="hidden" name="prod_id" value="<?php echo $product_id; ?>" />
<input type="hidden" name="product_id" value="<?php echo $product_id ?>" />
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="set_price[]" value="" />
<input type="hidden" name="adjust_price[]" value="" />
<input type="hidden" name="master_product[]" value="" />
<input type="submit" class="addtocart_button_module" value="<?php echo $VM_LANG->_('PHPSHOP_CART_ADD_TO')?>" title="<?php echo $VM_LANG->_('PHPSHOP_CART_ADD_TO')?>" />
</div>
</form>
<br />
<?php
}
?>
</div>
Таким образом, отправка товара в корзину будет происходить без перезагрузки ( штатный ajax), выбрав свойства (если есть).
Вроде ничего не забыл... (но как знать?)
PS, это только код - надеюсь, над стилистикой поработаете сами...
Но после сохранения файла productsnapshot.tpl.php на сайте вообще ничего не отображается - белая пустая страница.... VM 1.1.9, J 1.5.22, подскажите что делаю не так, вот мой код файла productsnapshot.tpl.php с внесенными изменениями:
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
$ps_product = new ps_product;
$ps_product_attribute = new ps_product_attribute;
$db = new ps_DB;
?>
<div class="prod_container">
<!-- The product name DIV. -->
<?php if( $show_product_name ) : ?>
<div class="product_name">
<a title="<?php echo $product_name ?>" href="<?php echo $product_link ?>"><?php echo $product_name; ?></a>
</div><br />
<?php endif;?>
<!-- The product image DIV. -->
<div class="product_image">
<a title="<?php echo $product_name ?>" href="<?php echo $product_link ?>">
<?php // Print the product image or the "no image available" image
echo ps_product::image_tag( $product_thumb_image, "alt=\"".$product_name."\""); ?>
</a>
</div>
<div class="product_desc"><?php
include_once ("configuration.php");
$datas = new JConfig;
$hostname = $datas->host;
$username = $datas->user;
$password = $datas->password;
$dbName = $datas->db;
$getDesc = "SELECT DISTINCT product_sku,product_s_desc FROM jos_vm_product WHERE product_id = {$product_id}";
$getDescCmd = mysql_query($getDesc);
$getDescCmdRows = mysql_fetch_array($getDescCmd);
if($getDescCmd)
{
echo $getDescCmdRows['product_s_desc'];
}
else echo "<pre>".mysql_error()."</pre>";
?>
</div>
<!-- The product price DIV. -->
<div class="product_price">
<?php
if( !empty($price) ) {
echo $price;
}
?>
</div>
<!-- The add to cart DIV. -->
<div class="product_buttons">
<div class="details"><a title="<?php echo $product_name ?>" href="<?php echo $product_link ?>"><?php echo $VM_LANG->_('PHPSHOP_DETAILS')?></a>
</div>
<?php
if( !empty($addtocart_link) ) {
?>
<form action="<?php echo $mm_action_url ?>index.php" method="post" name="addtocart" id="<?php echo uniqid('addtocart_')?>" class="addtocart_form" <?php if( $this->get_cfg( 'useAjaxCartActions', 1 ) && !$notify ) { echo 'onsubmit="handleAddToCart( this.id );return false;"'; } ?>>
<?php echo $ps_product_attribute->list_advanced_attribute($product_id,$product_id); ?>
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="page" value="shop.cart" />
<input type="hidden" name="Itemid" value="<?php echo ps_session::getShopItemid(); ?>" />
<input type="hidden" name="func" value="cartAdd" />
<input type="hidden" name="prod_id" value="<?php echo $product_id; ?>" />
<input type="hidden" name="product_id" value="<?php echo $product_id ?>" />
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="set_price[]" value="" />
<input type="hidden" name="adjust_price[]" value="" />
<input type="hidden" name="master_product[]" value="" />
<input type="submit" class="addtocart_button" value="<?php echo $VM_LANG->_('PHPSHOP_CART_ADD_TO')?>" title="<?php echo $VM_LANG->_('PHPSHOP_CART_ADD_TO')?>" />
</form> <div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<?php
}
?>
Подскажите пожалуйста, что делаю не так, почему не работает?