Error "CALL TO A MEMBER FUNCTION DISPLAYMEDIATHUMB ON NULL"

GK User
Thu May 18, 2017 8:28 pm
Hi everybody,
I've installed Storefront on joomla 3.7.1 with virtuemart 3.2.1 but I cannot see the category page:
Error: 0
CALL TO A MEMBER FUNCTION DISPLAYMEDIATHUMB() ON NULL
Could someone help me please? Thank you very much!
User avatar
Fresh Boarder

teitbite
Mon May 22, 2017 10:16 am
Hi

Please send me an ftp access and an url tot he page You have this problem with to my email [email protected] so I'll see what can be wrong.
User avatar
Moderator

GK User
Thu May 25, 2017 1:15 pm
Hi.
I've solved replacing the default.php file in "/templates/gk_storefront/html/com_virtuemart/category/"
with this code:
Code: Select all
<?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 5120 2011-12-18 18:29:26Z electrocity $
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
if(vRequest::getInt('dynamic')){
   if (!empty($this->products)) {
      if($this->fallback){
         $p = $this->products;
         $this->products = array();
         $this->products[0] = $p;
         vmdebug('Refallback');
      }

      echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$this->products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating));

   }

   return ;
}

/* 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);
//var_dump($this->category);
?>

<?php
/* Show child categories */
if ( VmConfig::get('showCategory',1) and empty($this->keyword)) {
      if (!empty($this->category->haschildren)) {
      // Category and Columns Counter
      $iCol = 1;
      $iCategory = 1;
      // Calculating Categories Per Row
      $categories_per_row = VmConfig::get ( 'categories_per_row', 3 );
      $category_cellwidth = ' width'.floor ( 100 / $categories_per_row );
      $BrowseTotalProducts = count($this->products[0]);
      // Separator
      $verticalseparator = " vertical-separator";
   ?>
   <div class="category-view">
      <?php // Start the Output
      if(!empty($this->category->children)) {
      foreach ( $this->category->children as $category ) { ?>
      <?php if ($iCol == 1 && $iCategory > $categories_per_row) : ?>
      <div class="horizontal-separator"></div>
      <?php endif; ?>
      
      <?php if ($iCol == 1) : ?>
      <div class="row">
      <?php endif; ?>
            <?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">
                  <a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>"><?php echo $category->images[0]->displayMediaThumb("",false); ?></a>
                  
                  <h2 class="catSub"> <a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>"> <?php echo $category->category_name ?> </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
   // Show child categories
   if (!empty($this->products)) {
      //revert of the fallback in the view.html.php, will be removed vm3.2
      if($this->fallback){
         $p = $this->products;
         $this->products = array();
         $this->products[0] = $p;
         vmdebug('Refallback');
      }

      $BrowseTotalProducts = count($this->products[0]);
      if (!empty($this->keyword)) {
         ?>
   <h1><?php echo $this->keyword; ?></h1>
   <?php
      }
      ?>
   <?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";
?>

      <?php if(!empty($this->category->category_name)) : ?>
      <h1><?php echo $this->category->category_name; ?></h1>
      <?php endif; ?>
      
      <?php if (empty($this->keyword) && !empty($this->category) && !empty($this->category->category_description)) : ?>
      <p class="category_description">
         <?php echo $this->category->category_description; ?>
      </p>
      <?php endif; ?>
      
      <form action="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=category&limitstart=0&virtuemart_category_id=' . $this->category->virtuemart_category_id, FALSE); ?>" method="get">
            <?php if (!empty($this->products)) : ?>
            <div class="orderby-displaynumber"><?php echo $this->orderByList['orderby']; ?>
                  <div class="display-number"><?php echo $this->vmPagination->getResultsCounter();?> <?php echo $this->vmPagination->getLimitBox ($this->category->limit_list_step); ?></div>
                  
            </div>
            <?php endif ?>
            
            <?php if (!empty($this->keyword)) {
            
            $category_id  = JRequest::getInt ('virtuemart_category_id', 0); ?>
            <!--BEGIN Search Box -->
            <!--<div class="virtuemart_search"> <?php echo $this->searchcustom ?> <br />
                  <?php echo $this->searchcustomvalues ?>
                  <input style="height:16px;vertical-align :middle;" 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" />
            <input type="hidden" name="option" value="com_virtuemart"/>
            <input type="hidden" name="virtuemart_category_id" value="<?php echo $category_id; ?>"/>-->
            <!-- End Search Box -->
            <?php } ?>
      </form>
      <?php // Start the Output
foreach ( $this->products[0] as $product ) {

   // Show the horizontal seperator
   if ($iBrowseCol == 1 && $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>
               <a title="<?php echo $product->product_name ?>" href="<?php echo $product->link; ?>">
                  <?php
                     echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false);
                  ?>
                </a>
            </div>
            
            <div>
               <h3 class="catProductTitle"><?php echo JHTML::link($product->link, $product->product_name); ?></h3>
               
               <div class="catProductPrice" id="productPrice<?php echo $product->virtuemart_product_id ?>">
                  <?php
                  if ($this->show_prices == '1') {
                     if ($product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and  !$product->images[0]->file_is_downloadable) {
                        echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE');
                     }
                     echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
                  } ?>
               </div>
               
               <?php if ( VmConfig::get ('display_stock', 1)) : ?>
               <div class="stockLavel"> <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 endif; ?>
            </div>
            
            <a href="<?php echo $product->link; ?>" class="readon"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'); ?></a>
         </div>
      </div>
   <?php

   // Do we need to close the current row now?
   if ($iBrowseCol == $BrowseProducts_per_row || (isset($BrowseTotalProducts) && $iBrowseProduct == $BrowseTotalProducts)) {?>
      </div>
      <?php
      $iBrowseCol = 1;
   } else {
      $iBrowseCol ++;
   }

   $iBrowseProduct ++;
}
// Do we need a final closing row tag?
if ($iBrowseCol != 1) { ?>
   <div class="clear"></div>
</div>
<?php
}
?>

<?php if($this->vmPagination->getPagesLinks() != '') : ?>
<div class="pagination">
   <?php echo str_replace('</ul>', '<li class="counter">'.$this->vmPagination->getPagesCounter().'</li></ul>', $this->vmPagination->getPagesLinks()); ?>
</div>
<?php endif; ?>


</div>
<?php
} elseif (!empty($this->keyword)) {
   echo JText::_ ('COM_VIRTUEMART_NO_RESULT') . ($this->keyword ? ' : (' . $this->keyword . ')' : '');
}
?>


But now I've another problem :(
In the front-end going on category page there aren't product to see. If I change template I can see products in the category page...
User avatar
Fresh Boarder

teitbite
Tue May 30, 2017 5:57 pm
Hi

I have an information from programmers that they are working on VM updates right now, so soon fixes will be available with newest tempalte release. Please observe this page https://www.gavick.com/updates an information about the updated files will be shown there.

Meanwhile please downgrade to last working VM version and wait for the updated templates.
User avatar
Moderator


cron