VirtueMart Forum

VirtueMart 2 + 3 + 4 => General Questions => Topic started by: Sonictech on June 23, 2012, 04:26:23 AM

Title: category view and child products
Post by: Sonictech on June 23, 2012, 04:26:23 AM
I hope I can explain this correctly:  I am using category view for the virtumart located on the site.  Under certain products, they have multiple child products using a drop down list. When you first go to the Products tab (virtumart) you will just see the base price listed near the child drop down, option 1 is showing.  Here are the issues:

1. Option 1 is showing in the drop down but the base price of the product is showing, not the option 1 price.  I would like the option1 price to show show up first, if you click option 2 the price would change to option 2 price, click on option 3 the price changes to option 3 and so forth.

2. when the option is clicked it redirects to the options page, I would like it to stay on the category page but just change the price.

3. Rating stars not showing up, no clue why.

here is my code:
<?php

/**

*

* Show the products in a category

*

* @package VirtueMart

* @subpackage

* @author RolandD

* @author Max Milbers

* @todo add pagination

* @link http://www.virtuemart.net

* @copyright Copyright (c) 2004 - 2010 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 5810 2012-04-05 23:10:14Z Milbo $

*/



//vmdebug('$this->category',$this->category);

vmdebug('$this->category '.$this->category->category_name);

// Check to ensure this file is included in Joomla!

defined('_JEXEC') or die('Restricted access');

JHTML::_'behavior.modal' );

/* javascript for list Slide

  Only here for the order list

  can be changed by the template maker

*/

$js "

jQuery(document).ready(function () {

jQuery('.orderlistcontainer').hover(

function() { jQuery(this).find('.orderlist').stop().show()},

function() { jQuery(this).find('.orderlist').stop().hide()}

)

});

"
;



$document JFactory::getDocument();

$document->addScriptDeclaration($js);



/*$edit_link = '';

if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');

if (Permissions::getInstance()->check("admin,storeadmin")) {

$edit_link = '<a href="'.JURI::root().'index.php?option=com_virtuemart&tmpl=component&view=category&task=edit&virtuemart_category_id='.$this->category->virtuemart_category_id.'">

'.JHTML::_('image', 'images/M_images/edit.png', JText::_('COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT'), array('width' => 16, 'height' => 16, 'border' => 0)).'</a>';

}



echo $edit_link; */ 
?>


<div class="category_description">

<?php echo $this->category->category_description ?>

</div>

<?php

/* Show child categories */



if ( VmConfig::get('showCategory',1) ) {

if ($this->category->haschildren) {



// Category and Columns Counter

$iCol 1;

$iCategory 1;



// Calculating Categories Per Row

$categories_per_row VmConfig::get 'categories_per_row');

$category_cellwidth ' width'.floor 100 $categories_per_row );



// Separator

$verticalseparator " vertical-separator";

?>




<div class="category-view">



<?php // Start the Output

if(!empty($this->category->children)){

foreach ( $this->category->children as $category ) {



// Show the horizontal seperator

if ($iCol == && $iCategory $categories_per_row) { ?>


<div class="horizontal-separator"></div>

<?php }



// this is an indicator wether a row needs to be opened or not

if ($iCol == 1) { ?>


<div class="row">

<?php }



// Show the vertical seperator

if ($iCategory == $categories_per_row or $iCategory $categories_per_row == 0) {

$show_vertical_separator ' ';

} else {

$show_vertical_separator $verticalseparator;

}



// Category Link

$caturl JRoute::'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' $category->virtuemart_category_id );



// Show Category ?>


<div class="category floatleft<?php echo $category_cellwidth $show_vertical_separator ?>">

<div class="spacer">

<h2>

<a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">

<?php echo $category->category_name ?>

<br />

<?php // if ($category->ids) {

echo $category->images[0]->displayMediaThumb("",false);

//} ?>


</a>

</h2>

</div>

</div>

<?php

$iCategory ++;



// Do we need to close the current row now?

if ($iCol == $categories_per_row) { ?>


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

</div>

<?php

$iCol 1;

} else {

$iCol ++;

}

}

}

// Do we need a final closing row tag?

if ($iCol != 1) { ?>


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

</div>

<?php ?>

</div>



<?php }

}

?>


<div class="browse-view">

    <?php

if (!empty($this->keyword)) {

?>


<h3><?php echo $this->keyword?></h3>

<?php

?>


<?php if ($this->search !==null ) { ?>

    <form action="<?php echo JRoute::_('index.php?option=com_virtuemart&view=category&limitstart=0&virtuemart_category_id='.$this->category->virtuemart_category_id ); ?>" method="get">



    <!--BEGIN Search Box --><div class="virtuemart_search">

    <?php echo $this->searchcustom ?>

    <br />

    <?php echo $this->searchcustomvalues ?>

    <input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>" />

    <input type="submit" value="<?php echo JText::_('COM_VIRTUEMART_SEARCH'?>" class="button" onclick="this.form.keyword.focus();"/>

    </div>

    <input type="hidden" name="search" value="true" />

    <input type="hidden" name="view" value="category" />



    </form>

<!-- End Search Box -->

<?php ?>



<?php // Show child categories

if (!empty($this->products)) {

?>


<div class="orderby-displaynumber">

<div class="width70 floatleft">

<?php echo $this->orderByList['orderby']; ?>

<?php echo $this->orderByList['manufacturer']; ?>

</div>

<div class="width30 floatright display-number"><?php echo $this->vmPagination->getResultsCounter();?><br/><?php echo $this->vmPagination->getLimitBox(); ?></div>

<div class="vm-pagination">

<?php echo $this->vmPagination->getPagesLinks(); ?>

<span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span>

</div>



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

</div> <!-- end of orderby-displaynumber -->



<h1><?php echo $this->category->category_name?></h1>



<?php

// Category and Columns Counter

$iBrowseCol 1;

$iBrowseProduct 1;



// Calculating Products Per Row

$BrowseProducts_per_row $this->perRow;

$Browsecellwidth ' width'.floor 100 $BrowseProducts_per_row );



// Separator

$verticalseparator " vertical-separator";



// Count products

$BrowseTotalProducts 0;

foreach ( 
$this->products as $product ) {

   
$BrowseTotalProducts ++;

}



// Start the Output

foreach ( $this->products as $product ) {



// Show the horizontal seperator

if ($iBrowseCol == && $iBrowseProduct $BrowseProducts_per_row) { ?>


<div class="horizontal-separator"></div>

<?php }



// this is an indicator wether a row needs to be opened or not

if ($iBrowseCol == 1) { ?>


<div class="row">

<?php }



// Show the vertical seperator

if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct $BrowseProducts_per_row == 0) {

$show_vertical_separator ' ';

} else {

$show_vertical_separator $verticalseparator;

}



// Show Products ?>


<div class="product floatleft<?php echo $Browsecellwidth $show_vertical_separator ?>">

<div class="spacer">

<div class="width30 floatleft center">

<?php /** @todo make image popup */

echo $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'" ',true,'class="modal"');

?>


                        <div>
                       
                        <!-- The New Product Details Location -->
                        <br />
                        <?php // Product Details Button

echo JHTML::link($product->linkJText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name,'class' => 'product-details'));

?>

                       

<!-- The "Average Customer Rating" Part -->
   
<!-- The "Average Customer Rating" Part by Vapro -->
<?php /*?><?php 
                
if($this->showRating){
    $maxrating VmConfig::get('vm_maximum_rating_scale',5);
$rating = empty($product->rating)? JText::_('COM_VIRTUEMART_RATING').' '.JText::_('COM_VIRTUEMART_UNRATED'):JText::_('COM_VIRTUEMART_RATING') . round($product->rating->rating) . '/'$maxrating;
$ratingwidth = ( $this->rating->rating 100 ) / $maxrating;
?>

                    <span class="vote">
<?php echo $rating  ?>
                    <br/>
                        <span title=" <?php echo (JText::_("COM_VIRTUEMART_RATING_TITLE") . $this->rating->rating '/' $maxrating?>" class="vmicon ratingbox" style="display:inline-block;">
                            <span class="stars-orange" style="width:<?php echo $ratingwidth;?>%">
                            </span>
                        </span>
</span>
<?php <?php */?>


               
               
<!----------------------------------------- testing of code ---------------------------------------------------->


               
               
<!-- The "Old Average Customer Rating" Part -->

<?php if ($this->showRating) { ?>

<span class="contentpagetitle">
<?php /*?><?php echo JText::_('COM_VIRTUEMART_CUSTOMER_RATING'?>:</span><?php */?>

<br />

<?php

 //$img_url = JURI::root().VmConfig::get('assets_general_path').'/reviews/'.$product->votes->rating.'.gif';

 //echo JHTML::image($img_url, $product->votes->rating.' '.JText::_('COM_VIRTUEMART_REVIEW_STARS'));
 //echo JText::_('COM_VIRTUEMART_TOTAL_VOTES').": ". $product->votes->allvotes; ?>


<?php ?>



<?php

if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none') && (VmConfig::get 'display_stock')) ){?>


<!-- if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->

<div class="paddingtop8">

<span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>

<span class="stock-level"><?php echo JText::_('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP'?></span>

</div>

<?php }?>

</div>
</div>


<div class="width70 floatright">



<h2 align="center"><?php echo JHTML::link($product->link$product->product_name); ?></h2>



<?php // Product Short Description

if(!empty($product->product_s_desc)) { ?>


<p class="product_s_desc">

<?php echo shopFunctionsF::limitStringByWord($product->product_s_desc359'...'?>

</p>

<?php ?>


<div class="width100 floatleft">

<div class="product-price" id="productPrice<?php echo $product->virtuemart_product_id ?>">

<?php

if ($this->show_prices == '1') {

if( $product->product_unit && VmConfig::get('vm_price_show_packaging_pricelabel')) {

echo "<strong>"JText::_('COM_VIRTUEMART_CART_PRICE_PER_UNIT').' ('.$product->product_unit."):</strong>";

}

if(empty($product->prices) and VmConfig::get('askprice',1) and empty($product->images[0]->file_is_downloadable) ){

echo JText::_('COM_VIRTUEMART_PRODUCT_ASKPRICE');

}

//todo add config settings

if( $this->showBasePrice){

echo $this->currency->createPriceDiv('basePrice','COM_VIRTUEMART_PRODUCT_BASEPRICE',$product->prices);

//echo $this->currency->createPriceDiv('basePriceVariant','COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT',$product->prices);

}

//echo $this->currency->createPriceDiv('variantModification','COM_VIRTUEMART_PRODUCT_VARIANT_MOD',$product->prices);

//echo $this->currency->createPriceDiv('basePriceWithTax','COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX',$product->prices);

//echo $this->currency->createPriceDiv('discountedPriceWithoutTax','COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE',$product->prices);

//echo $this->currency->createPriceDiv('salesPriceWithDiscount','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT',$product->prices);

//echo $this->currency->createPriceDiv('salesPrice','COM_VIRTUEMART_PRODUCT_SALESPRICE',$product->prices);

//echo $this->currency->createPriceDiv('priceWithoutTax','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX',$product->prices);

//echo $this->currency->createPriceDiv('discountAmount','COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT',$product->prices);

echo $this->currency->createPriceDiv('taxAmount','COM_VIRTUEMART_PRODUCT_TAX_AMOUNT',$product->prices);

?>

                   
<?php /*?><?php // Product Details Button

echo JHTML::link($product->linkJText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name,'class' => 'product-details'));

?>
<?php */?>


</div>
                   
                    <div class="width100 floatright" >

                   
<?php /*?>

/* Add cart button function to catergory view along with quantity buttons

<?php */?>

<form method="post" class="product" action="index.php" id="addtocartproduct<?php echo $product->virtuemart_product_id ?>">
<?php // Product custom_fields
if (!empty($product->customfieldsCart)) {  ?>

<div class="product-fields">
<?php foreach ($product->customfieldsCart as $field)
?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
<span class="product-fields-title" ><b><?php echo  JText::_($field->custom_title?></b></span>
<?php echo JHTML::tooltip($field->custom_tip,  JText::_($field->custom_title), 'tooltip.png'); ?>
<span class="product-field-display"><?php echo $field->display ?></span>

<span class="product-field-desc"><?php echo $field->custom_field_desc ?></span>
</div><br/ >
<?php
}
?>

</div>
<?php }
 /* Product custom Childs
  * to display a simple link use $field->virtuemart_product_id as link to child product_id
  * custom_value is relation value to child
  */

if (!empty($product->customsChilds)) {  ?>

<div class="product-fields">
<?php foreach ($product->customsChilds as $field) {  ?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field->field_type ?>">
<span class="product-fields-title" ><b><?php echo JText::_($field->field->custom_title?></b></span>
<span class="product-field-desc"><?php echo JText::_($field->field->custom_value?></span>
<span class="product-field-display"><?php echo $field->display ?></span>

</div><br/ >
<?php
?>

</div>
<?php ?>

<div class="addtocart-bar">

            <span class="qty-controls">
   
                <?php // Display the quantity box ?>
                <!-- <label for="quantity<?php echo $this->product->virtuemart_product_id;?>" class="quantity_box"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY'); ?>: </label> -->
                <span class="quantity-box">
                    <input type="text" class="quantity-input" name="quantity[]" value="1" />
                </span>
               
               
                <span class="quantity-controls">
                    <input type="button" class="quantity-controls quantity-plus" />
                    <input type="button" class="quantity-controls quantity-minus" />
                </span>
                <?php // Display the quantity box END ?>
   
                <?php // Add the button
                
$button_lbl JText::_('COM_VIRTUEMART_CART_ADD_TO');
                
$button_cls ''//$button_cls = 'addtocart_button';
                
if (VmConfig::get('check_stock') == '1' && !$this->product->product_in_stock) {
                    
$button_lbl JText::_('COM_VIRTUEMART_CART_NOTIFY');
                    
$button_cls 'notify-button';
                } 
?>

            </span>
           
<?php // Display the add to cart button ?>
<span class="addtocart-button">
<input type="submit" name="addtocart"  class="addtocart-button" value="<?php echo $button_lbl ?>" title="<?php echo $button_lbl ?>" />
</span>

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

<?php // Display the add to cart button END ?>
<input type="hidden" class="pname" value="<?php echo $product->product_name ?>">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="view" value="cart" />
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $product->virtuemart_product_id ?>" />
<?php /** @todo Handle the manufacturer view */ ?>
<input type="hidden" name="virtuemart_manufacturer_id" value="<?php echo $product->virtuemart_manufacturer_id ?>" />
<input type="hidden" name="virtuemart_category_id[]" value="<?php echo $product->virtuemart_category_id ?>" />
</form>




</div>
</div>

</div>



</div><!-- end of spacer -->

</div> <!-- end of product -->

<?php



   
// Do we need to close the current row now?

   
if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {?>


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

   </div> <!-- end of row -->

      <?php

      $iBrowseCol 
1;

   } else {

      
$iBrowseCol ++;

   }



   
$iBrowseProduct ++;

// end of foreach ( $this->products as $product )

// Do we need a final closing row tag?

if ($iBrowseCol != 1) { ?>


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



<?php

}

?>


<!-- /div removed valerie -->

<div class="vm-pagination"><?php echo $this->vmPagination->getPagesLinks(); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span></div>

<!-- /div removed valerie -->

<?php } elseif ($this->search !==null ) echo JText::_('COM_VIRTUEMART_NO_RESULT').($this->keyword' : ('$this->keyword')' '')

?>


</div><!-- end browse-view -->


Thanks for any help!

Shawn
Title: category view and child products
Post by: Sonictech on June 26, 2012, 06:07:58 AM
Does anyone have an idea?  This is the main issue with getting a site live.

Thanks!
Title: category view and child products
Post by: Sonictech on June 27, 2012, 05:13:49 AM
Could really use some help with this issue please
Title: Re: category view and child products
Post by: Sonictech on June 29, 2012, 03:32:05 AM
Can someone please help with this :(
Title: Re: category view and child products
Post by: dodgyjammer on July 06, 2012, 14:36:21 PM
Hi Shawn

See my answer to your third question here - http://forum.virtuemart.net/index.php?topic=97611.30 (http://forum.virtuemart.net/index.php?topic=97611.30)
Title: Re: category view and child products
Post by: Milbo on July 06, 2012, 17:21:27 PM
Which kind of children do you use? must it be stockable? If not stockable, you should us the other customfields (cart variant) .
Title: category view and child products
Post by: Sonictech on July 07, 2012, 15:23:55 PM
I am using cart variant but it shows the main base price in the category listing.  If it has a child and you click that it jumps to the product page instead of just changing the price on the category page. I don't want it to go to the product page unless you click the"read more" link.
Thanks,
Shawn