Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

как вывести название и ссылку на категорию в которую входит статья 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
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.