Move product listing from category page to article

  • Posts: 29
  • Thank you received: 2
11 years 6 months ago #145980

-- url of the page with the problem -- : mywebsite.com/mypage
-- Joomla version -- : 2.5.8
-- Browser(s) name and version -- : Mozilla 26.0


I want to move the product listing in my site from category page (witch contains subcategories listing but i don't want to take those too) to an article page that i've created.
I've made some printscreens for an easy comprehention.



Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 12953
  • Thank you received: 1778
11 years 6 months ago #146022

Hi,
I don't think that you'll be able to do that without some code customization or some joomla extension, but note that you can also use that method .

Please Log in or Create an account to join the conversation.

  • Posts: 29
  • Thank you received: 2
11 years 6 months ago #146046

Thank you very much. I tried the method but i dont get a product galery looking like thingy. I't just a product with almost no styling.
Here is how it looks

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 29
  • Thank you received: 2
11 years 6 months ago #146053

I'm thinking that there are 2 php files involved in my dilema. I don't know where there are located. I don't know where my article is and i don't know where the category page is (containing subcategories listing and product listing).

I found some code in Components -> HikaShop -> Display -> product / listing.php is this the code for category page?

<?php
/**
 * @package  HikaShop for Joomla!
 * @version  2.2.3
 * @author  hikashop.com
 * @copyright  (C) 2010-2013 HIKARI SOFTWARE. All rights reserved.
 * @license  GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
if(!$this->module && isset($this->element->category_canonical) && !empty($this->element->category_canonical)){
  $canonicalUrl = hikashop_cleanURL($this->element->category_canonical);

  $doc = JFactory::getDocument();
  $doc->addCustomTag( '<link rel="canonical" href="'.$canonicalUrl.'" />' );
}

if(hikashop_level(2) && JRequest::getVar('hikashop_front_end_main',0) && JRequest::getVar('task')=='listing' && $this->params->get('show_compare')) {?>
<script type="text/javascript">
<!--
var compare_list = {length: 0};
function setToCompareList(product_id,name,elem) {
  var compareBtn = document.getElementById('hikashop_compare_button');
  if( compare_list[product_id] ) {
    var old = compare_list[product_id];
    compare_list[product_id] = null;
    compare_list.length--;
    if( elem == null ) elem = old.elem;
    var nn = elem.nodeName.toLowerCase();
    if( nn == 'a' )
      elem.innerHTML = "<?php echo JText::_('ADD_TO_COMPARE_LIST');?>";
    else if( nn == 'input' )
      elem.checked = false;
  } else {
    if(compare_list.length < <?php echo $this->config->get('compare_limit',5); ?> ) {
      compare_list[product_id] = {name: name, elem: elem};
      compare_list.length++;
      var nn = elem.nodeName.toLowerCase();
      if( nn == 'a' )
        elem.innerHTML = "<?php echo JText::_('REMOVE_FROM_COMPARE_LIST');?>";
      else if( nn == 'input' )
        elem.checked = true;
    } else {
      alert("<?php echo JText::_('COMPARE_LIMIT_REACHED');?>");
      elem.checked = false;
    }
  }
  if(compare_list.length == 0 ) {
    compareBtn.style.display = 'none';
  } else {
    compareBtn.style.display = '';
  }
  return false;
}
function compareProducts() {
  var url = '';
  for(var k in compare_list) {
    if( compare_list[k] != null && k != 'length' ) {
      if( url == '' )
        url = 'cid[]=' + k;
      else
        url += '&cid[]=' + k;
    }
  }
  window.location = "<?php
    $u = hikashop_completeLink('product&task=compare'.$this->itemid,false,true);
    if( strpos($u,'?')  === false ) {
      echo $u.'?';
    } else {
      echo $u.'&';
    }
  ?>" + url;
  return false;
}
do_nothing( function() {
    $$('input.hikashop_compare_checkbox').each(function(el){
    el.checked = false;
  });
});
//-->
</script>
<?php }

ob_start();
if(version_compare(JVERSION,'1.6','<')){
  $title = 'show_page_title';
}else{
  $title = 'show_page_heading';
}
$titleType = 'h1';
if($this->module){
  $title = 'showtitle';
  $titleType = 'h2';
}

if($this->params->get($title) && JRequest::getVar('hikashop_front_end_main',0) && (!$this->module || $this->pageInfo->elements->total)){
  $name = $this->params->get('page_title');
  if($this->module){
    $name = $this->params->get('title');
  }elseif($this->params->get('page_heading')){
    $name = $this->params->get('page_heading');
  }
  ?>
  <<?php echo $titleType; ?>>
  <?php echo $name; ?>
  </<?php echo $titleType; ?>>
  <?php
}

  if(($this->params->get('show_image') && !empty($this->element->file_path))|| ($this->params->get('show_description',!$this->module)&&!empty($this->element->category_description))){
    ?>
    <div class="hikashop_category_description">
    <?php
    if($this->params->get('show_image') && !empty($this->element->file_path)){
      jimport('joomla.filesystem.file');
      if(JFile::exists($this->image->getPath($this->element->file_path,false))){
      ?>
      <img src="<?php echo $this->image->getPath($this->element->file_path); ?>" class="hikashop_category_image"/>
      <?php
      }
    }
    if($this->params->get('show_description',!$this->module)&&!empty($this->element->category_description)){
      ?>
      <div class="hikashop_category_description_content">
      <?php echo JHTML::_('content.prepare',$this->element->category_description); ?>
      </div>
      <?php
    }
  ?></div><?php
  }
  if(!empty($this->fields)){?>
    <div id="hikashop_category_custom_info_main" class="hikashop_category_custom_info_main">
      <h4><?php echo JText::_('CATEGORY_ADDITIONAL_INFORMATION');?></h4>
      <table width="100%">
      <?php
      $this->fieldsClass->prefix = '';
      foreach($this->fields as $fieldName => $oneExtraField) {
        if(!empty($this->element->$fieldName)){ ?>
        <tr class="hikashop_category_custom_<?php echo $oneExtraField->field_namekey;?>_line">
          <td class="key">
            <span id="hikashop_category_custom_name_<?php echo $oneExtraField->field_id;?>" class="hikashop_category_custom_name">
              <?php echo $this->fieldsClass->getFieldName($oneExtraField);?>
            </span>
          </td>
          <td>
            <span id="hikashop_category_custom_value_<?php echo $oneExtraField->field_id;?>" class="hikashop_category_custom_value">
              <?php echo $this->fieldsClass->show($oneExtraField,$this->element->$fieldName); ?>
            </span>
          </td>
        </tr>
      <?php }
        }?>
      </table>
    </div>
<?php }
$mainInfo = ob_get_clean();
ob_start();
$display_filters = $this->params->get('display_filters', -1);
if($display_filters=='-1'){
  $config =& hikashop_config();
  $display_filters=$config->get('show_filters');
}
if(hikashop_level(2) && JRequest::getVar('hikashop_front_end_main',0) && JRequest::getVar('task','listing')=='listing' && $display_filters=='1'){
   $this->setLayout('filter');
   $htmlFilter = $this->loadTemplate();
}

if(!empty($htmlFilter)&&@$_GET['task']!='category') echo $htmlFilter;

$filter_type = (int)$this->params->get('filter_type');
$layout_type = $this->params->get('layout_type');
if(empty($layout_type)) $layout_type = 'div';

if($filter_type !== 3) {
  $this->setLayout('listing');
  $html = $this->loadTemplate($layout_type);
  if(!$this->module) echo $mainInfo;
  if(!empty($html)){
    if($this->module) echo $mainInfo;
    if(!empty($htmlFilter) && @$_GET['task']=='category')
      echo $htmlFilter;
?>
  <div class="hikashop_products_listing">
<?php
    if(JRequest::getVar('hikashop_front_end_main',0) && JRequest::getVar('task')=='listing' && $this->params->get('show_compare')) {
?>
      <div id="hikashop_compare_zone" class="hikashop_compare_zone">
<?php
    $empty='';
    $params = new HikaParameter($empty);
    echo $this->cart->displayButton(JText::_('COMPARE_PRODUCTS'),'compare_button',$params,'#','compareProducts();return false;','style="display:none;" id="hikashop_compare_button"',0,1,' hikashop_compare_button');
?>
      </div>
<?php
    }
    echo $html;
?>
  </div>
<?php
  }

  $html = ob_get_clean();
  if(!empty($html)) {
?>
  <div id="<?php echo $this->params->get('main_div_name');?>" class="hikashop_category_information hikashop_products_listing_main"><?php echo $html; ?></div>
<?php
  }
} else if(!empty($this->rows) && !empty($this->categories)) {

  $allrows = $this->rows;

  $pagination = '';
  if((!$this->module || JRequest::getVar('hikashop_front_end_main',0)) && $this->pageInfo->elements->total) {
    $pagination = $this->config->get('pagination','bottom');
    $this->config->set('pagination', '');
  }

  if((!empty($allrows) || !$this->module || JRequest::getVar('hikashop_front_end_main',0)) && in_array($pagination, array('top','both')) && $this->params->get('show_limit') && $this->pageInfo->elements->total) {
    $this->pagination->form = '_top';
?>
  <form action="<?php echo hikashop_currentURL(); ?>" method="post" name="adminForm_<?php echo $this->params->get('main_div_name').$this->category_selected;?>_top">
    <div class="hikashop_products_pagination hikashop_products_pagination_top">
    <?php echo $this->pagination->getListFooter($this->params->get('limit')); ?>
    <span class="hikashop_results_counter"><?php echo $this->pagination->getResultsCounter(); ?></span>
    </div>
    <input type="hidden" name="filter_order_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->value; ?>" />
    <input type="hidden" name="filter_order_Dir_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->dir; ?>" />
    <?php echo JHTML::_( 'form.token' ); ?>
  </form>
<?php
  }

  $main_div_name = $this->params->get('main_div_name');
  foreach($this->categories as $category) {
    if(empty($category['products']))
      continue;

    $this->rows = array();
    foreach($allrows as $p) {
      if(in_array($p->product_id, $category['products']))
        $this->rows[] = $p;
    }

    $this->params->set('main_div_name', $main_div_name.'_'.$category['category']->category_id);

    $this->setLayout('listing');
    $html = $this->loadTemplate($layout_type);
    if(!empty($html)) {
      if(!empty($htmlFilter) && @$_GET['task']=='category')
        echo $htmlFilter;
?>
  <h2><?php echo $category['category']->category_name; ?></h2>
  <div class="hikashop_products_listing">
<?php
    if(JRequest::getVar('hikashop_front_end_main',0) && JRequest::getVar('task')=='listing' && $this->params->get('show_compare')) {
?>
      <div id="hikashop_compare_zone" class="hikashop_compare_zone">
<?php
      $empty='';
      $params = new HikaParameter($empty);
      echo $this->cart->displayButton(JText::_('COMPARE_PRODUCTS'),'compare_button',$params,'#','compareProducts();return false;','style="display:none;" id="hikashop_compare_button"',0,1,' hikashop_compare_button');
?>
      </div>
<?php
      }
      echo $html;
?>
  </div>
<?php
    }
  }
  $this->params->set('main_div_name', $main_div_name);
  $this->config->set('pagination', $pagination);

  if((!empty($allrows) || !$this->module || JRequest::getVar('hikashop_front_end_main',0)) && in_array($pagination,array('bottom','both')) && $this->params->get('show_limit') && $this->pageInfo->elements->total) {
    $this->pagination->form = '_bottom';
?>
  <form action="<?php echo hikashop_currentURL(); ?>" method="post" name="adminForm_<?php echo $this->params->get('main_div_name').$this->category_selected;?>_bottom">
    <div class="hikashop_products_pagination hikashop_products_pagination_bottom">
    <?php echo $this->pagination->getListFooter($this->params->get('limit')); ?>
    <span class="hikashop_results_counter"><?php echo $this->pagination->getResultsCounter(); ?></span>
    </div>
    <input type="hidden" name="filter_order_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->value; ?>" />
    <input type="hidden" name="filter_order_Dir_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->dir; ?>" />
    <?php echo JHTML::_( 'form.token' ); ?>
  </form>
<?php }

  $html = ob_get_clean();
  if(!empty($html)) {
?>
    <div id="<?php echo $this->params->get('main_div_name');?>" class="hikashop_category_information hikashop_products_listing_main"><?php echo $html; ?></div>
<?php
  }
}

if(!$this->module){
?>
<div class="hikashop_submodules" style="clear:both">
<?php
  if(!empty($this->modules)){
    jimport('joomla.application.module.helper');
    foreach($this->modules as $module) {
      echo JModuleHelper::renderModule($module);
    }
  }
?>
</div>
<?php
}

Last edit: 11 years 5 months ago by Eliot.

Please Log in or Create an account to join the conversation.

  • Posts: 29
  • Thank you received: 2
11 years 6 months ago #146057

I"m thinking of taking the last part from <div class="hikashop_products_listing"> until the end of source and insert it in article php file.
Is it posible or is not so simple?

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
11 years 6 months ago #146109

Hi,

I think that the easiest way to do what you need is to use/create a position of your template under the article part.
And at this position use a module. This can be done thanks to the joomla module settings.
The module to create is a category listing one, then you just have to configure it as wanted.

Please Log in or Create an account to join the conversation.

  • Posts: 29
  • Thank you received: 2
11 years 6 months ago #146117

it was a great idea and it works. Now i'm trying to figure out how to put different content to this module in function of the accesed page.

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
11 years 6 months ago #146131

You can create one module per article and restrict the display of the desired module on the desired article (so a specific menu).

Please Log in or Create an account to join the conversation.

  • Posts: 29
  • Thank you received: 2
11 years 5 months ago #147064

Here is how it looks now and until a point it works




The hikashop subcategory links open product listing of a specific subcategory



So i've done another article for the subcategory to put on the top of this subpage and a module to try to substitut the product listing of this subcategory so the second page could look like the first.
I've conected the module for the subpage to the right link in the menu


"inele logodna" is a hikashop subcategory of "inele"



So here i come to a problem:
When i come to the subpage "Inele logodna"the right article apears but the wrong module, the module from the Inele page.

In Module manager for the subpage when i press Hikashop options i noticed that at the associated category I select the necesary subcategory from the list but the number of elements shown afterwords is the number of the entire parent category


How can i select in this module the product listing of the subcategory, not the whole category.
Maybe i have to imput the category id manualy in the database butt i do not know where.

Please Log in or Create an account to join the conversation.

  • Posts: 26267
  • Thank you received: 4044
  • MODERATOR
11 years 5 months ago #147513

Hi,

When you change the category in a category listing, you are still in the same menu id.
So the same modules will be displayed.
At this moment, I will recommend you to base the module on the category, using some PHP code in the HikaShop views or using other component like "advance module manager".

Regards,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

Time to create page: 0.135 seconds
Powered by Kunena Forum