ddr3

Пишу модуль, вопрос по подключению моделей и вывода данных товара

Рекомендуемые сообщения

ddr3    0
Привет.
Пишу свой модуль, сделал 6 файлов
 

catalog\view\theme\default\template\module\mymodul.tpl
catalog\controller\module\mymodul.php
catalog\language\russian\module\mymodul.php
admin\view\template\module\mymodul.tpl
admin\controller\module\mymodul.php
admin\language\russian\module\mymodul.php
 
Вопрос состоит в использовании имеющихся моделей
В файле контроллера catalog\controller\module\mymodul.php
Есть строчки
$this->load->model('catalog/product');  
$this->load->model('catalog/category');
$data['product_info']=$this->model_catalog_product->getProduct(41);
То есть подключаются имеющиеся модели
В файле
catalog\view\theme\default\template\module\mymodul.tpl
Дампится полученный массив
print_r($product_info);
 
В результате на сайте выводится массив $product_info для товара 41, у меня вот так:

Array
(
    [product_id] => 41
    [name] => iMac
    [description] =>  тут описание, вырезано
    [meta_title] => iMac
    [meta_h1] => 
    [meta_description] => 
    [meta_keyword] => 
    [tag] => 
    [model] => ????? 14
    [sku] => 
    [upc] => 
    [ean] => 
    [jan] => 
    [isbn] => 
    [mpn] => 
    [location] => 
    [quantity] => 977
    [stock_status] => ??? ? ???????
    [image] => catalog/demo/imac_1.jpg
    [manufacturer_id] => 8
    [manufacturer] => Apple
    [price] => 100.0000
    [special] => 
    [reward] => 0
    [points] => 0
    [tax_class_id] => 9
    [date_available] => 2009-02-03
    [weight] => 5.00
    [weight_class_id] => 1
    [length] => 0.00
    [width] => 0.00
    [height] => 0.00
    [length_class_id] => 1
    [subtract] => 1
    [rating] => 0
    [reviews] => 0
    [minimum] => 1
    [sort_order] => 0
    [status] => 1
    [date_added] => 2009-02-03 21:07:26
    [date_modified] => 2011-09-30 01:06:44
    [viewed] => 0
)
 
Собственно вопрос в том, как получить ссылку на товар, обработанную ЧПУ?
В данном примере не выводится вообще никакой ссылки, ссылки нету в $product_info
Я так понимаю надо писать свою модель и там sql запросы? Или уже это есть в движке?
В идеале я хочу модуль умеющий выводить определенные товары с определенных категорий
Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 098
$product_url = $this->url->link('product/product', 'product_id={тут_твой_product_id}');
это же видно в контроллерах, из которых ты брал пример подключения моделей и запроса к ним (категория, товар, "товарные" модули).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
nikifalex    351

$this->url->link('product/product', 'product_id=' . $s['product_id']);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ddr3    0

Благодарю! Написал модуль.

Сначала вызов getCategories, потом по id категории вызов getProducts, получение массива с id товаров, ну и сама ссылка

$product_href = $this->url->link('product/product', 'product_id=' . $product['product_id']);

Немного разобрался с устройством opencart. 

 

Я использую для вывода названия товара в моем моделе запись 'model', которая в админке обозначена как "Модель", вместо 'name', потому что хочу использовать сокращенные названия товара. Наверно правильнее создавать еще одно поле в базе данных и пользоваться им? Где взять подобный пример/модуль чтобы узнать как это делать?

 

Еще вопрос есть по родному модулю категорий, по передаче переменной $category_id в шаблон /template/catalog/view/theme/default/template/module/category.tpl

В этом файле есть такие строчки, выделено красным:

<?php echo '<h1>'.$category_id.'</h1>' ?>
<div class="list-group">
  <?php foreach ($categories as $category) { ?>
 <?php if ($category['category_id'] == $category_id) { ?> 
  <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
  <?php if ($category['children']) { ?>
  <?php foreach ($category['children'] as $child) { ?>
  <?php if ($child['category_id'] == $child_id) { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item active">   - <?php echo $child['name']; ?></a>
  <?php } else { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item">   - <?php echo $child['name']; ?></a>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } else { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
  <?php } ?>
  <?php } ?>
</div>

Как эти переменные туда передаются? В файле модуля category.php их нету. 

Я так понимаю эти условия для сворачивания/разворачивания списка в зависимости от категории.

Если я в свой шалон пишу echo($category_id); то выдает еррор.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 098

>> Где взять подобный пример/модуль чтобы узнать как это делать?

О_о

ну так по примеру "name" делай еще одно поле (в "описание", таблицу product_description, - чтобы мультиязычность не потерять).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ddr3    0

А как $category_id попадает в  /template/catalog/view/theme/default/template/module/category.tpl?

Там же передается только массив $categories

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Waha    305

Так смотрите, что в массиве передаётся, а ещё может get запросом передаватся category-id.

В этом случае с модулем категорий, разворачивание списка происходит когда category-id из массива равно category-id из get запроса.

Изменено пользователем Waha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу