Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Вывести описание категории на главную страницу


Recommended Posts

Спойлер

2018-02-14_20-56-50.thumb.png.fe92450ede8a11dedd73d256ca72b354.png

Имеется такая главная (common/home) страничка. Я с горем пополам научил выводить её не больше трех изображений категорий через   

{% for category in categories %}

{% if loop.index <= 3 %}

{{ category.thumb }}

{% endif %}
{% endfor %},

но вот с описанием категорий конкретная беда. Так и не смог понять какой конкретно код нужно написать в home php (а он у меня выглядит следующим образом после моего костыля:

Спойлер

<?php
class ControllerCommonHome extends Controller {
	public function index() {
		$this->document->setTitle($this->config->get('config_meta_title'));
		$this->document->setDescription($this->config->get('config_meta_description'));
		$this->document->setKeywords($this->config->get('config_meta_keyword'));

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

		if (isset($this->request->get['route'])) {
			$this->document->addLink($this->config->get('config_url'), 'canonical');
		}


		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) {
					$data['breadcrumbs'][] = array(
						'text' => $category_info['name'],
						'href' => $this->url->link('product/category', 'path=' . $path . $url)
					);
				}
			}
		} else {
			$category_id = 0;
		}
			
		if (isset($parts[0])) {
			$data['category_id'] = $parts[0];
		} else {
			$data['category_id'] = 0;
		}

		if (isset($parts[1])) {
			$data['child_id'] = $parts[1];
		} else {
			$data['child_id'] = 0;
		}

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

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

		$data['categories'] = array();

		$categories = $this->model_catalog_category->getCategories(0);

		foreach ($categories as $category) {
			$children_data = array();

			if ($category['category_id'] == $data['category_id']) {
				$children = $this->model_catalog_category->getCategories($category['category_id']);

				foreach($children as $child) {
					$filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true);

					$children_data[] = array(
						'category_id' => $child['category_id'],
						'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
						'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
					);
				}
			}

			$filter_data = array(
				'filter_category_id'  => $category['category_id'],
				'filter_sub_category' => true
			);
			$category_info = $this->model_catalog_category->getCategory($category_id);
			$data['categories'][] = array(
				'category_id' => $category['category_id'],
				'name' => $category['name'],
				'thumb' => $this->model_tool_image->resize($category['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_category_height')),
				'children' => $children_data,
				'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
			);
		}

			
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['column_right'] = $this->load->controller('common/column_right');
		$data['content_top'] = $this->load->controller('common/content_top');
		$data['content_bottom'] = $this->load->controller('common/content_bottom');
		$data['footer'] = $this->load->controller('common/footer');
		$data['header'] = $this->load->controller('common/header');

		$this->response->setOutput($this->load->view('common/home', $data));
	}
}

 

 

в $data['categories'][] = array, чтобы описания завелись. Пытался по аналогии из category.php выдернуть, но у меня ничего не вышло. наверное потому, что там for. Также не знаю как правильно в твиге написать, чтобы он в итоге его показал: {{ description }}, или {{ category.description }} или еще как-нибудь. Я только вчера верстать научился, а тут такое ( Помогите, пожалуйста

Edited by minertural
Link to post
Share on other sites

а что html + макеты забанили, нужно именно хардкоре? 

Link to post
Share on other sites

дело в том, что категорий будет чуть больше, чем 3, да и эти могут меняться, отчего и нужно, чтобы изменения были и на главной. С другой стороны - я согласен, что это хардкоре, и что он в принципе ненужон, просто раз уж картинки до ума довёл, хочется и этот момент обдумать. 

Edited by minertural
Link to post
Share on other sites

Также описание нужно будет выводить на другой странице. Помогите, пожалуйста, понять как запихнуть в array еще и description

Edited by minertural
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.