Marianna

[Решено] убрать картинку подкатегории

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

Marianna    57

В гугле ответа на свой вопрос не нашла.

В опенкарте есть изображения категорий, это изображение можно выводить как на родительских категориях, так и на подкатегориях, понятное дело если мы не хотим чтобы картинка была в подкатегории, мы просто не будет ее на категорию добавлять. Если доработать вывод этих картинок, то можно сделать вывод в главной категории картинок для подкатегорий, а не просто ссылкой (как изначально идет в дефолтном шаблоне), но как быть, если картинка нужна подкатегории только в списке главной категории, а не на самой странице подкатегории? На картинках прикрепленных показала в чем смысл.

post-20204-0-81179700-1443965963_thumb.jpg

post-20204-0-89563400-1443965971_thumb.jpg

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

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


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

решила сделать так:

  if ($category_id == 4) {
         
$template $this->config->get('config_template') . '/template/product/category_new.tpl';
       } else {
         
$template $this->config->get('config_template') . '/template/product/category.tpl';
       }

       if (
file_exists(DIR_TEMPLATE $template)) {
         
$this->template $template;
       } else {
         
$this->template 'default/template/product/category.tpl';
       }

 

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

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

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


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

 if ($category_id == 45 || $category_id == 46 || $category_id == 29 || $category_id == 59) {

 

это если нужно несколько айди категорий

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


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

if ($category_id == 45 || $category_id == 46 || $category_id == 29 || $category_id == 59) {
>>

$validCategories = array(45,46,29,59);
if (in_array($category_id, $validCategories)) {
Изменено пользователем afwollis

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


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

В чем разница и как правильнее это написать?

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


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

в полотнах, читабельности и удобстве изменения списка "нужных категорий".

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


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

спасибо большое :)

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


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

к сожалению данное решение работает только до двух вложенных категорий :( для третей нет

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


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

не вижу связи.

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


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

не вижу связи.

нужно для категории 3 уровня подлючить еще совсем другой шаблон. Пишу так:

$validCategories = array(45,46,29,59,62);
if (in_array($category_id, $validCategories)) {
         $template = $this->config->get('config_template') . '/template/product/subcategory.tpl';
if (in_array($category_id, $validCategories)) {
       } else {
         $template = $this->config->get('config_template') . '/template/product/category.tpl';
       }
$validCategories = array(63);
if (in_array($category_id, $validCategories)) {
         $template = $this->config->get('config_template') . '/template/product/subcategory-2.tpl';
if (in_array($category_id, $validCategories)) {
       } else {
         $template = $this->config->get('config_template') . '/template/product/category.tpl';
       }

 

для 63 айди категории не работает так

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


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

$template = 'category';

$validCategories = array(

'template_1' => array(45,46,29,59),

'template_2' => array(63),

'template_N' => array(111,222,333,666,777),

);

foreach ($validCategories as $tmpl => $categoriesList) {

if (in_array($category_id, $categoriesList)) {

$template = $tmpl;

break;

}

}

...

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$template.'.tpl')) {

$this->template = $this->config->get('config_template') . '/template/product/'.$template.'.tpl'; // fixed

} else {

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {

$this->template = $this->config->get('config_template') . '/template/product/category.tpl';

} else {

$this->template = 'default/template/product/category.tpl';

}

}

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

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


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

Notice: Error: Could not load template /home/pytjofuk/flower.radiance.com.ua/catalog/view/theme//home/pytjofuk/flower.radiance.com.ua/catalog/view/theme/moneymaker/template/product/category.tpl! in

 

не могу понять из-за чего не правильный путь пишется

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


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

код свой итоговый покажи (под спойлером)

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


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

class ControllerProductCategory extends Controller {
public function index() {
$this->language->load('product/category');

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

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

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

if (isset($this->request->get['filter'])) {
$filter = $this->request->get['filter'];
} else {
$filter = '';
}

if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
$sort = 'p.date_added';
}

if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'DESC';
}

if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
} else {
$page = 1;
}

if (isset($this->request->get['limit'])) {
$limit = $this->request->get['limit'];
} else {
$limit = $this->config->get('config_catalog_limit');
}

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

$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home'),
'separator' => false
);

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

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$path = '';

$parts = explode('_', (string)$this->request->get['path']);

$category_id = (int)array_pop($parts);

foreach ($parts as $path_id) {
if (!$path) {
$path = (int)$path_id;
} else {
$path .= '_' . (int)$path_id;
}

$category_info = $this->model_catalog_category->getCategory($path_id);

if ($category_info) {
$this->data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path . $url),
'separator' => $this->language->get('text_separator')
);
}
}
} else {
$category_id = 0;
}

$category_info = $this->model_catalog_category->getCategory($category_id);

if ($category_info) {
$this->document->setTitle($category_info['name']);
$this->document->setDescription($category_info['meta_description']);
$this->document->setKeywords($category_info['meta_keyword']);
$this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');

$this->data['heading_title'] = $category_info['name'];

$this->data['text_refine'] = $this->language->get('text_refine');
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['text_quantity'] = $this->language->get('text_quantity');
$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
$this->data['text_model'] = $this->language->get('text_model');
$this->data['text_price'] = $this->language->get('text_price');
$this->data['text_tax'] = $this->language->get('text_tax');
$this->data['text_points'] = $this->language->get('text_points');
$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
$this->data['text_display'] = $this->language->get('text_display');
$this->data['text_list'] = $this->language->get('text_list');
$this->data['text_grid'] = $this->language->get('text_grid');
$this->data['text_sort'] = $this->language->get('text_sort');
$this->data['text_limit'] = $this->language->get('text_limit');

$this->data['button_cart'] = $this->language->get('button_cart');
$this->data['button_wishlist'] = $this->language->get('button_wishlist');
$this->data['button_compare'] = $this->language->get('button_compare');
$this->data['button_continue'] = $this->language->get('button_continue');

// Set the last category breadcrumb
$url = '';

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$this->data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']),
'separator' => $this->language->get('text_separator')
);

if ($category_info['image']) {
$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
} else {
$this->data['thumb'] = '';
}

$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
$this->data['compare'] = $this->url->link('product/compare');

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

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

$results = $this->model_catalog_category->getCategories($category_id);

foreach ($results as $result) {
$data = array(
'filter_category_id' => $result['category_id'],
'filter_sub_category' => true
);

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

$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['products'] = array();

$data = array(
'filter_category_id' => $category_id,
'filter_filter' => $filter,
'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'][] = 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'] . $url)
);
}

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

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

$this->data['sorts'][] = array(
'text' => $this->language->get('text_default'),
'value' => 'p.date_added-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=DESC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_name_asc'),
'value' => 'pd.name-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_name_desc'),
'value' => 'pd.name-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_price_asc'),
'value' => 'p.price-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_price_desc'),
'value' => 'p.price-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)
);

if ($this->config->get('config_review_status')) {
$this->data['sorts'][] = array(
'text' => $this->language->get('text_rating_desc'),
'value' => 'rating-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_rating_asc'),
'value' => 'rating-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)
);
}

$this->data['sorts'][] = array(
'text' => $this->language->get('text_model_asc'),
'value' => 'p.model-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url)
);

$this->data['sorts'][] = array(
'text' => $this->language->get('text_model_desc'),
'value' => 'p.model-DESC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url)
);

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

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

$limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100));

sort($limits);

foreach($limits as $value){
$this->data['limits'][] = array(
'text' => $value,
'value' => $value,
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value)
);
}

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->text = $this->language->get('text_pagination');
$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');

$this->data['pagination'] = $pagination->render();

$this->data['sort'] = $sort;
$this->data['order'] = $order;
$this->data['limit'] = $limit;

$this->data['continue'] = $this->url->link('common/home');

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

$template = 'category';
$validCategories = array(
'template_1' => array(45,46,29,59),
'template_2' => array(63),
//'template_N' => array(111,222,333,666,777),
);
foreach ($validCategories as $tmpl => $categoriesList) {
if (in_array($category_id, $categoriesList)) {
$template = $tmpl;
break;
}
}
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$template.'.tpl')) {
$this->template = DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$template.'.tpl';
} else {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
}
}


$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);

$this->response->setOutput($this->render());
} else {
$url = '';

if (isset($this->request->get['path'])) {
$url .= '&path=' . $this->request->get['path'];
}

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_error'),
'href' => $this->url->link('product/category', $url),
'separator' => $this->language->get('text_separator')
);

$this->document->setTitle($this->language->get('text_error'));

$this->data['heading_title'] = $this->language->get('text_error');

$this->data['text_error'] = $this->language->get('text_error');

$this->data['button_continue'] = $this->language->get('button_continue');

$this->data['continue'] = $this->url->link('common/home');

$this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 404 Not Found');

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

$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);

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

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


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

исправлен код в сообщении - затесалось лишнее

DIR_TEMPLATE .
(в сообщении отмечено комментарием "// fixed")

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


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

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

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

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

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

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

Войти

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

Войти


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

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