Opencart:按类别页面上的子类别对产品进行排序

时间:2013-05-29 06:08:14

标签: php opencart

我正在用opencart 1.5.5.1建立一个商店(我是新手)我遇到了一个小问题:

我的任何主要类别页面都是这样的:
优化搜索:
-Subcategory1
-Subcategory2
-Subcategory3

产品1产品2产品3 ...

子类别1,2和3是子类别页面的链接。

我希望我的主要类别页面是:

子类别1
产品1产品2产品3 .......

Subcategory2
产品1产品2产品3 .......

Subcategory3
产品1产品2产品3 .......

子类别1,2和3不再是子类别页面的链接,而是简单文本。

我找到了这个扩展程序:http://www.opencart.com/index.php?route=extension/extension/info&token=b4381909f29ca2d2511830b09f09fa84&extension_id=11190但也许有人可以帮助我而不必支付15美元

有人可以帮我吗?

2 个答案:

答案 0 :(得分:5)

→好的,所以我将逐步完成这一步骤,在步骤之间提出问题,或者如果你得到了这一步,就投票支持这一步:

第1步:

打开以下文件:

catelog/controller/product/category.php

首先保存这个文件的备份然后继续进行!

在第271行附近您应该看到:

     $this->data['categories'][] = array(

         'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

         'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

    );

将以上代码更改为:

     $this->data['categories'][] = array(

          'category_id'  => $result['category_id'], /*!!!*/

          'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

          'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

     );

第2步:

打开您在步骤1中执行的相同文件:

catelog/controller/product/category.php

首先保存这个文件的备份然后继续进行!

在第271行附近你应该看到:

    $this->data['categories'][] = array(

        'category_id'  => $result['category_id'], /*!!!*/

        'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

    );

} 

/* New code will be pasted here! */

$this->data['products'] = array();

显然,这是我们在第1步中处理的代码,但您现在要做的是在最后一个'}'之后但在'$ this-> data ['之前复制并粘贴以下代码products'] = array();'

$this->data['products_all'] = array();

for( $x = 0; $x < count( $this->data['categories'] ); $x++ ) {

    $cat = $this->data['categories'][ $x ][ 'category_id' ];
    $this->data['products_all'][ $cat ] = array();

    $data = array(
        'filter_category_id' => $cat, 
        'sort'               => $sort,
        'order'              => $order,
        'start'              => ($page - 1) * $limit,
        'limit'              => $limit
    );

    $product_total = $this->model_catalog_product->getTotalProducts($data); 
    $results = $this->model_catalog_product->getProducts($data);

    foreach ($results as $result) {

        if ($result['image']) {
            $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
        }
        else { $image = false; }

        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
            $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
        } 
        else { $price = false; }

        if ((float)$result['special']) {
            $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
        } 
        else { $special = false; }  

        if ($this->config->get('config_tax')) {
            $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
        }
        else { $tax = false; }              

        if ($this->config->get('config_review_status')) {
            $rating = (int)$result['rating'];
        } 
        else { $rating = false; }

        $this->data['products_all'][ $cat ][] = array(
            'product_id'  => $result['product_id'],
            'thumb'       => $image,
            'name'        => $result['name'],
            'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
            'price'       => $price,
            'special'     => $special,
            'tax'         => $tax,
            'rating'      => $result['rating'],
            'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
            'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])

        );
    }
}

第3步:

打开以下文件:

catalog/view/theme/default/template/product/category.tpl

首先保存这个文件的备份然后继续进行!

在第19行的某处你应该看到:

  <?php if ($categories) { ?>
    <h2><?php echo $text_refine; ?></h2>
    <div class="category-list">
    <?php if (count($categories) <= 5) { ?>
    <ul>
      <?php foreach ($categories as $category) { ?>
      <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
    <?php } ?>
    </ul>
  <?php } else { ?>

将以上代码更改为:

  <?php if ($categories) { ?>

    <div class="category-list">

    <?php 

        if ( count( $categories ) <= 5 ) {

            foreach ( $categories as $k=>$category ) { 

                if( $k > 0 ) echo '<br /><br />';

                echo '<div class="product-filter" style="background:#222;padding:5px;padding-bottom:2px">';
                echo '<a href="' . $category['href'] . '" style="font-size:21px;text-decoration:none;"><h2 style="color:#eee;font-style:italic"><span style="color:#777;position:relative;bottom:2px">&rarr;&nbsp;</span><span style="border-bottom:solid 1px #777;">' . $category['name'] . '</span>:</h2></a>';
                echo '</div>';
                echo '<hr style="border:none;border-top:solid 1px #eee"/>';
                echo '<div class="product-list">';

                foreach ( $products_all[ $category['category_id'] ] as $product )
                {
                    echo '<div>';
                    if ( $product['thumb'] ) {
                        echo '<div class="image"><a href="' . $product['href'] . '"><img src="' . $product['thumb'] . '" title="' . $product['name'] . '" alt="' . $product['name'] . '" /></a></div>';
                    }
                    echo '<div class="name"><a href="' . $product['href'] . '">' . $product['name'] . '</a></div>';
                    echo '<div class="description">' . $product['description'] . '</div>';
                    if ( $product['price'] ) {
                        echo '<div class="price">';
                        if ( !$product['special'] ) { echo $product['price']; } 
                        else { echo '<span class="price-old">' . $product['price'] . '</span> <span class="price-new">' . $product['special'] . '</span>'; }
                        if ( $product['tax'] ) { echo '<br /><span class="price-tax">' . $text_tax . ' ' . $product['tax'] . '</span>'; }
                        echo '</div>';
                    }
                    if ( $product['rating'] ) {
                        echo '<div class="rating"><img src="catalog/view/theme/default/image/stars-' . $product['rating'] . '.png" alt="' . $product['reviews'] . '" /></div>';
                    }
                    echo '<div class="cart">';
                    echo '<input type="button" value="' . $button_cart . '" onclick="addToCart(\'' . $product['product_id'] . '\');" class="button" />';
                    echo '</div>';
                    echo '<div class="wishlist"><a onclick="addToWishList(\'' . $product['product_id'] . '\');">' . $button_wishlist . '</a></div>';
                    echo '<div class="compare"><a onclick="addToCompare(\'' . $product['product_id'] . '\');">' . $button_compare . '</a></div>';
                    echo '</div>';
              }
              echo '</div>';

            }

      ?>

    <?php } else { ?>

答案 1 :(得分:0)

opencart 2怎么样?如果我喜欢你,我会

  

注意:未定义的偏移量:第59行的.. \ category.tpl中的60   警告:第59行的.. \ category.tpl中为foreach()提供的参数无效