Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Вывод названия и ссылки главной категории в блоге окстор 3.0.2.0


AlexMax13
 Поделиться

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

как вывести название и ссылку на категорию в которую входит статья https://prnt.sc/7m-Nuru-iDB- в стандартном модуле блога от окстор 3.0.2.0, например на странице блога https://prnt.sc/fjPCV0Qc2z7t

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


контроллер (как пример, модуль вывода последних добавленных статей) /controller/extension/module/blog_latest.php

Прихований текст
<?php
// *	@source		See SOURCE.txt for source and other copyright.
// *	@license	GNU General Public License version 3; see LICENSE.txt

class ControllerExtensionModuleBlogLatest extends Controller {
	public function index($setting) {
		$this->load->language('extension/module/blog_latest');

		$this->load->model('blog/article');

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

		$this->document->addStyle('catalog/view/javascript/jquery/swiper/css/swiper.min.css');
		$this->document->addStyle('catalog/view/javascript/jquery/swiper/css/opencart.css');
		$this->document->addScript('catalog/view/javascript/jquery/swiper/js/swiper.jquery.js');

		$data['heading_title'] = $setting['name'];
		$data['sid'] = $setting['sid'];

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

		$filter_data = array(
			'sort'  => 'p.date_added',
			'order' => 'DESC',
			'start' => 0,
			'limit' => $setting['limit']
		);

		$results = $this->model_blog_article->getArticles($filter_data);

		if ($results) {
			foreach ($results as $result) {
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']);
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']);
				}

				if ($this->config->get('configblog_review_status')) {
					$rating = $result['rating'];
				} else {
					$rating = false;
				}

				$data['articles'][] = array(
					'article_id'  => $result['article_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => html_entity_decode($result['meta_description'], ENT_QUOTES, 'UTF-8'),
					'rating'      => $rating,
					'date_added'  => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
					'viewed'      => $result['viewed'],
					'href'        => $this->url->link('blog/article', 'article_id=' . $result['article_id'])
				);
			}

			return $this->load->view('extension/module/blog_latest', $data);
		}
	}
}

 

 

твиг /catalog/view/theme/default/template/extension/module/blog_latest.twig

Прихований текст
<div id="bl{{ sid }}_box" class="blog_las_box">
  <h3>{{ heading_title }}</h3>
  <div class="swiper-viewport" id="bl{{ sid }}">
    <div id="carousel_bl{{ sid }}" class="swiper-container">
      <div class="swiper-wrapper">
        {% for article in articles %}
          <div class="swiper-slide relative">
            <div class="image"><a href="{{ article.href }}"><img src="{{ article.thumb }}" alt="{{ article.name }}"></a></div>
            <div class="caption">
              <h4><a href="{{ article.href }}">{{ article.name }}</a></h4>
              <p>{{ article.description }}</p>
            </div>
            <div class="w40">
              <div class="w41 text-left">
                <span>{{ article.date_added }}</span>
                <span><img src="/image/catalog/icons/eye.png">{{ article.viewed }}</span>
              </div>
              <div class="w42 text-right ani">
                <a href="{{ article.href }}">{{ button_more }}<img src="/image/catalog/icons/arrow2.png"></a>
              </div>
             </div>
          </div>
        {% endfor %}
      </div>
    </div>
    <div class="swiper-pagination carousel_bl{{ sid }}"></div>
    <div class="swiper-pager hidden">
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>
  </div>
  <script type="text/javascript">
    $('#carousel_bl{{ sid }}').swiper({
      mode: 'horizontal',
      slidesPerView: 1,
      pagination: '.carousel_bl{{ sid }}',
      paginationClickable: true,
      nextButton: '.swiper-button-next',
      prevButton: '.swiper-button-prev',
      autoplay: 10000,
      speed: 2500,
      spaceBetween: 75,
      pauseOnMouseEnter: true,
      dynamicBullets: true,
      loop: false
    });
  </script>
</div>

 

 

модель: model/blog/category.php

Прихований текст
<?php
// *	@source		See SOURCE.txt for source and other copyright.
// *	@license	GNU General Public License version 3; see LICENSE.txt

class ModelBlogCategory extends Model {
	public function getCategory($blog_category_id) {
		return $this->getCategories((int)$blog_category_id, 'by_id');
	}

	public function getCategories($id = 0, $type = 'by_parent') {
		static $data = null;

		if ($data === null) {
			$data = array();

			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "blog_category c LEFT JOIN " . DB_PREFIX . "blog_category_description cd ON (c.blog_category_id = cd.blog_category_id) LEFT JOIN " . DB_PREFIX . "blog_category_to_store c2s ON (c.blog_category_id = c2s.blog_category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.parent_id, c.sort_order, cd.name");

			foreach ($query->rows as $row) {
				$data['by_id'][$row['blog_category_id']] = $row;
				$data['by_parent'][$row['parent_id']][] = $row;
			}
		}

		return ((isset($data[$type]) && isset($data[$type][$id])) ? $data[$type][$id] : array());
	}

	public function getCategoriesByParentId($blog_category_id) {
		$category_data = array();

		$categories = $this->getCategories((int)$blog_category_id);

		foreach ($categories as $category) {
			$category_data[] = $category['blog_category_id'];

			$children = $this->getCategoriesByParentId($category['blog_category_id']);

			if ($children) {
				$category_data = array_merge($children, $category_data);
			}
		}

		return $category_data;
	}

	public function getCategoryLayoutId($blog_category_id) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "blog_category_to_layout WHERE blog_category_id = '" . (int)$blog_category_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");

		if ($query->num_rows) {
			return $query->row['layout_id'];
		} else {
			return $this->config->get('config_layout_category');
		}
	}

	public function getTotalCategoriesByCategoryId($parent_id = 0) {
		return count($this->getCategories((int)$parent_id));
	}
}
?>

 

 

в админ панели значение записывается в main_blog_category_id 

https://prnt.sc/2o38MtnbMkU4

 

Изменено пользователем AlexMax13
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.