2013-10-01 4 views
0

그냥 Opencart로 시작합니다. 나는 catgories의 llist와 같은 브랜드 목록을 가지고 있어야합니다. 나는 이렇게 시도한다 :opencart 제조 업체를 추가하는 방법 카테고리 목록 같은 목록

<div class="box"> 
    <div class="box-heading"><?php echo "По брендам" ?></div> 
    <div class="box-content"> 
    <ul class="box-category"> 
     <?php foreach ($manufacturers as $manufacturer) { ?> 
     <li> 
     <?php if ($manufacturer['manufacturer_id'] == $manufacturer_id) { ?> 
     <a href="<?php echo $manufacturer['href']; ?>" class="active"><?php echo $manufacturer['name']; ?></a> 
     <?php } else { ?> 
     <a href="<?php echo $manufacturer['href']; ?>"><?php echo $manufacturer['name']; ?></a> 
     <?php } ?> 
     <?php if ($manufacturer['children']) { ?> 
     <ul> 
      <?php foreach ($manufacturer['children'] as $child) { ?> 
      <li> 
      <?php if ($child['manufacturer_id'] == $child_id) { ?> 
      <a href="<?php echo $child['href']; ?>" class="active"> - <?php echo $child['name']; ?></a> 
      <?php } else { ?> 
      <a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a> 
      <?php } ?> 
      </li> 
      <?php } ?> 
     </ul> 
     <?php } ?> 
     </li> 
     <?php } ?> 
    </ul> 
    </div> 
</div> 

이 코드를 기본/template/module/category.tpl 파일에 추가한다. 이 오류가 발생합니다. 알 수없는 변수 : 제조업체가 ....

어떻게해야합니까? 감사합니다. .

+3

가 opencart로 시작, 먼저 큰 읽어 보시기 바랍니다 ** Jay Gilford ** : [OpenCart에서 전문가가되는 법] (http://stackoverflow.com/questions/13478995/how-to-become-an-opencart-guru). 그렇다면 더 나아갈 수 있어야합니다. – shadyyx

답변

4

카테고리 컨트롤러의 템플릿입니다. 그 목적은 카테고리를 보여주는 것입니다. 브라우저를 http://your.site/index.php?route=product/manufacturer으로 지정하면 제조업체 목록이 표시됩니다. 템플릿은 /catalog/view/theme/default/template/product/manufacturer_list.tpl입니다.

오류는 간단한 것의 결과입니다. $manufacturers 변수가 ControllerModuleCategory 컨트롤러 (일명 category.php)에 정의되어 있지 않습니다. 템플릿에서 변수를 사용하려면 관련 컨트롤러에서 변수를 정의해야합니다.

1) /catalog/model/catalog/manufacturer.php 파일에서 (모델 ModelCatalogManufacturer : (가이 모듈의 목적이 아닌 경우에도) 정확히 /catalog/view/theme/default/template/module/category.tpl에서 제조 업체의 목록을 얻기 위해

, 당신은 몇 가지와 함께 할 필요가 if (file_exists(DIR_TEMPLATE . $this->config->get('confi... 이전에 코드를 삽입,

public function getManufacturerByCategory($category_id) { 
    $query = $this->db->query("SELECT m.* 
     FROM " . DB_PREFIX . "product p 
     RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON 
      p.product_id = p2c.product_id 
     LEFT JOIN " . DB_PREFIX . "manufacturer m ON 
      p.manufacturer_id = m.manufacturer_id 
     WHERE 
      p2c.category_id = " . (int)$category_id . " AND 
      m.manufacturer_id IS NOT NULL 
     GROUP BY m.manufacturer_id"); 
    return $query->rows; 
} 

2) /catalog/controller/module/category.php 파일 (일명 ControllerModuleCategory 컨트롤러)에서 :) 함수를 추가 (이 기능을 사용하면 데이터베이스에서 제조업체의 목록)을 얻을하는 데 도움이 될 것입니다

if (isset($this->request->get['path'])) { 
    $category_id = array_pop($parts); 

    $this->load->model('catalog/manufacturer'); 
    $this->data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturerByCategory($category_id); 
} else { 
    $this->data['manufacturers'] = array(); 
} 

은 ($manufacturers과 템플릿에 사용할 수 컨트롤러에서 마음 $this->data['manufacturers']하십시오. $this->data['categories']

). $this->data['another_var'] 등등 $another_var 될 것이다, $categories 될 것입니다 그리고 그 순간부터 당신은 카테고리 모듈 템플릿에 foreach ($manufacturers as $manufacturer) (당신이 "정의되지 않은받은 때 foreach을 시도했던 장소를 사용할 수 있습니다 변수 "오류) 현재 카테고리의 제품에 적용되는 제조업체 목록을 출력 할 수 있습니다.

가장 좋은 방법은 카테고리 모듈을 사용하여 다른 모듈 대신 "제조업체"모듈을 만드는 것입니다. 하지만 지금 당장 당신이이 도전에 준비가되었는지 확신 할 수 없습니다.

나는 모두 shadyyx's link의 Jay Gilford 's 가이드입니다. 그것은 초보자를위한 멋진 빠른 시작 가이드입니다.

2

내가 빛 해결책을 가지고 : 그냥 컨트롤러에 코드를 추가 category.php :

$this->load->model('catalog/manufacturer'); 
$this->data['mans'] = $this->data['manufacturers'] = 
$this->model_catalog_manufacturer->getManufacturers(); 

그리고보기 : category.tpl :

<?php 
     foreach($mans as $mans_value) 
     { 
      var_dump($mans_value); 
     } 
?>