Jump to content
Sign in to follow this  
smmaxim

[Решено] Вывести из БД данные в продукт

Recommended Posts

Добрый день!

 

Не силен в php.

 

Вообщем я создал в админке вкладку и в ней заношу специфические данные, которые потом будут выводиться в карточке товара

 

В бд создал таблицу

 

oc_product_example

- product_example_id

- product_id

- example

- sord_order

 

Прописал как смог для админки controller и model, данные добавляются, обновляются, в бд заносятся.

 

Но вот вывести их в карточку товара почему-то не получается, что нужно прописать для их вывода?

 

Помогите пожалуйста, 2 день ничего не выходит :( 

Share this post


Link to post
Share on other sites

что именно не получается?

Share this post


Link to post
Share on other sites

не получается записи из бд вывести в карточку товара, занести их туда могу, а вывести нет :D

Share this post


Link to post
Share on other sites

Что сделали для того, чтобы получилось?

Share this post


Link to post
Share on other sites

Что сделали для того, чтобы получилось?

 

разве это важно как они добавляются? :D главное, что они там есть и их теперь нужно вывести!) 

Share this post


Link to post
Share on other sites

Перефразирую... Как делали вывод на мордп и что именно не получилось?

Share this post


Link to post
Share on other sites

Перефразирую... Как делали вывод на мордп и что именно не получилось?

 

Данные добавляю пути до картинок

 

admin/model/product/product.php

 

public function getProductexamples($product_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_example WHERE product_id = '" . (int)$product_id . "'");
 
return $query->rows;
}
 

admin/controller/product/product_form.php

 

if (isset($this->request->post['product_example'])) {
$product_examples = $this->request->post['product_example'];
} elseif (isset($this->request->get['product_id'])) {
$product_examples = $this->model_catalog_product->getProductexamples($this->request->get['product_id']);
} else {
$product_examples = array();
}
 
$this->data['product_examples'] = array();
 
foreach ($product_examples as $product_example) {
if ($product_example['example'] && file_exists(DIR_IMAGE . $product_example['example'])) {
$example = $product_example['example'];
} else {
$example = 'no_image.jpg';
}
 
$this->data['product_examples'][] = array(
'example'      => $example,
'exampleThumb'      => $this->model_tool_image->resize($example, 100, 100),
'sort_order' => $product_example['sort_order']
);
}
 
$this->data['no_example'] = $this->model_tool_image->resize('no_image.jpg', 100, 100);
 
admin/view/template/catalog/product.php
 
<?php foreach ($product_examples as $product_example) { ?>
<?php echo $product_example['example']; ?>
<?php echo $product_example['exampleThumb']; ?>
<?php } ?>
Edited by smmaxim

Share this post


Link to post
Share on other sites

Так для каталога (витрины) отдельные контролеры и модели. Они находятся в папке catalog. Вам нужно:

  1. Добавить в модели получение данных из бд. catalog/model/catalog/product.php
  2. В контроллере товара получить данные из модели catalog/controller/product/product.php и добавить их в массив $this->data либо $data для версии 2.x чтобы они были доступны в шаблоне
  3. В шаблоне вывести эти данные catalog/view/theme/название-темы/template/product/product.tpl

 К примеру:

  1. В модель добавили новую функцию getProductexamples($product_id) 
  2. В контроллере получаем данные из модели $this->data['product_examples] = $this->model_catalog_product->getProductexamples($product_id); (код я привел для примера)
  3. В шаблоне выводим var_dump($product_examples);
Edited by halfhope

Share this post


Link to post
Share on other sites

Это в админке, у вас же там работает?

Share this post


Link to post
Share on other sites

отредактировал

Share this post


Link to post
Share on other sites

Это в админке, у вас же там работает?

 

Видимо я опять долго не спал, написал инструкцию для вывода данных в витрине магазина.

Share this post


Link to post
Share on other sites

 

Так для каталога (витрины) отдельные контролеры и модели. Они находятся в папке catalog. Вам нужно:

  1. Добавить в модели получение данных из бд. catalog/model/catalog/product.php
  2. В контроллере товара получить данные из модели catalog/controller/product/product.php и добавить их в массив $this->data либо $data для версии 2.x чтобы они были доступны в шаблоне
  3. В шаблоне вывести эти данные catalog/view/theme/название-темы/template/product/product.tpl

 К примеру:

  1. В модель добавили новую функцию getProductexamples($product_id) 
  2. В контроллере получаем данные из модели $this->data['product_examples] = $this->model_catalog_product->getProductexamples($product_id); (код я привел для примера)
  3. В шаблоне выводим var_dump($product_examples);

 

 

Спасибо, попробую и отпишусь!

 

Это в админке, у вас же там работает?

 

В админке да работает, но не могу вывести в карточку товара, туплю! )) 

Share this post


Link to post
Share on other sites
halfhope

 

Огромное человеческое спасибо!   :eek:

 

Заработало, удалось вывести)))

 

Возможно потом если не поленюсь, оформлю в виде vqmod модуля и выложу на форум!

 

Всем хорошего дня и отличного настроения  ;)

Share this post


Link to post
Share on other sites

Еще одна неразбериха осталась

 

У меня модуль для отображения категорий не совсем снандартный (bosshomefilter)

 

у него нет модуля, есть контроллер 

 

catalog/controller/module/boss_homefilter.php

 

class ControllerModuleBossHomefilter extends Controller {

protected function index($setting) {
static $module = 0;

$this->document->addScript('catalog/view/javascript/jquery/tabs.js');
$this->document->addScript('catalog/view/javascript/jquery/jquery.myjcarousel.js');
if (file_exists('catalog/view/theme/' . $this->config->get('config_template') . '/stylesheet/boss_homefilter.css')) {
$this->document->addStyle('catalog/view/theme/' . $this->config->get('config_template') . '/stylesheet/boss_homefilter.css');
} else {
$this->document->addStyle('catalog/view/theme/default/stylesheet/boss_homefilter.css');
}

$this->data['scroll'] = $setting['scroll'];
$this->data['use_scrolling_panel'] = $setting['use_scrolling_panel'];
$this->data['use_tab'] = $setting['use_tab'];
$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['template'] = $this->config->get('config_template');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');


// tab
$this->load->model('catalog/product');

$this->load->model('tool/image');

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

$tabs = array();
$tabs = $this->config->get('boss_homefilter_tab');
if (isset($tabs)) {
foreach ($tabs as $tab) {
$results = array();
if ($tab['filter_type'] == "popular") {
$results = $this->model_catalog_product->getPopularProducts($setting['limit']);
}
if ($tab['filter_type'] == "special") {
$data = array(
'sort' => 'pd.name',
'order' => 'ASC',
'start' => 0,
'limit' => $setting['limit']
);
$results = $this->model_catalog_product->getProductSpecials($data);
}
if ($tab['filter_type'] == "bestseller") {
$results = $this->model_catalog_product->getBestSellerProducts($setting['limit']);
}
if ($tab['filter_type'] == "lastest") {
$results = $this->model_catalog_product->getLatestProducts($setting['limit']);
}
if ($tab['filter_type'] == "category") {
$data = array(
'filter_category_id' => $tab['filter_type_category'],
'sort' => 'pd.name',
'order' => 'ASC',
'start' => 0,
'limit' => $setting['limit']
);
$results = $this->model_catalog_product->getProducts($data);
}

$products = array();

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_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_review_status')) {
$rating = $result['rating'];
} else {
$rating = false;
}

$products[] = 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) . '..',
'weight' => round($result['weight'], 2),
'weight_class_id' => $result['weight_class_id'],
'price' => $price,
'special' => $special,
'rating' => $rating,
'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']),
);
}

$this->data['tabs'][] = array(
'title' => $tab['title'][$this->config->get('config_language_id')],
'products' => $products
);
}
}
// end tab

$this->data['module'] = $module++;

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/boss_homefilter.tpl')) {
$this->template = $this->config->get('config_template') . '/template/module/boss_homefilter.tpl';
} else {
$this->template = 'default/template/module/boss_homefilter.tpl';
}

$this->render();
}
}
?>

 

Что мне прописать в контроллере, что бы в категории отображалась моя запись?

Share this post


Link to post
Share on other sites

Разобрался, айдишник не правильно в контроллере передавал, всем спасибо за внимание)

 

С темой полностью разобрался, можно закрывать!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.