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

[Решено] Добавление статей в меню ocStore


Recommended Posts

Всем добрый вечер. Очень долго искал модуль для добавления статей в главное меню сайта (где обычно выводится категории товара). Но что та дельного нечего не нашел.

Проблема в том что в магазине только две категории и надо добить в меню дополнительные разделами (не категории товара).

 

Решил я к выводу меню, добавить вывод статей. Сделал я это по средствам

 

В файл /catalog/controller/common/header.php добавил строки

$this->load->model('catalog/information');		$this->data['informations'] = array();		foreach ($this->model_catalog_information->getInformations() as $result) {      		$this->data['informations'][] = array(        		'title' => $result['title'],	    		'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])      		);    	}

Потом в файле /catalog/view/theme/ваша тема/template/common/header.tpl

Где вывод моего основного меню добавил

      <?php foreach ($informations as $information) { ?>      <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>      <?php } ?>    

После этих махинаций я получил вывод всех категорий товара + вывод всех статей. Но вывод всех статей мне не нужен. Следовательно пошел в БД и начал смотреть по каким параметром можно отсортировать. В админке я знаю что при добавлении статей мы ставим галочку (Показывать ссылку в футере). В бд иду таблицу "oc_information" и вижу что при постановке галочки в поле "bottom" парметр 1/0. Из этого следует если параметр 1 то выводим в футоре если 0 то выводим в шапке. Канешно можно добавить доп. поле в админке, но что замарачиваться не хочется.

 

Следовательно вопрос: Где отсортировать выборку по этому параметру.  (/catalog/view/theme/ваша тема/template/information)

 

Особо не шарю в доработке движков. Помогите доделать выборку по этому параметру. А то вообще что та непонятное пошло для меня в этих файлах. С структурой и построением движка не знаком =(  Заранее Спасибо!

Надіслати
Поділитися на інших сайтах


Ну, например так:

напишите в catalog/model/catalog/information.php

public function getHeaderInformations() {		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "information i LEFT JOIN " . DB_PREFIX . "information_description id ON (i.information_id = id.information_id) LEFT JOIN " . DB_PREFIX . "information_to_store i2s ON (i.information_id = i2s.information_id) WHERE id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1' AND i.bottom = '0' AND i.sort_order <> '-1' ORDER BY i.sort_order, LCASE(id.title) ASC");				return $query->rows;	} 

А в catalog/controller/common/header.php замените

foreach ($this->model_catalog_information->getInformations() as $result) {

на

foreach ($this->model_catalog_information->getHeaderInformations() as $result) {
  • +1 1
Надіслати
Поділитися на інших сайтах


выводите по 

if ($result['sort_order']) {

 

сделаете например if ($result['sort_order'] == 10) {

 

и будет счастье. ))

 

Вроде получилось ;)) Спасибо ravilr

Всем большое спасибо кто откликнулся. Сделал так. Все статьи которые имеют (Порядок сортировки) = 0 выводим в меню.

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

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

			foreach ($this->model_catalog_information->getInformations() as $result) {
			
			
			if ($result['sort_order'] == 0) {
				$this->data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
				);
			}
Надіслати
Поділитися на інших сайтах


ravilr, ага :)

И расширять, если идти от модели, мне кажется легче - добавить флажок "Выводить в меню" и т.п.

 

у всех голова по разному работает. Одни мыслят по MVC , а другие (как я) по СVM  или VCМ    :-D

Надіслати
Поділитися на інших сайтах

  • 1 year later...

 

Вроде получилось ;)) Спасибо ravilr

Всем большое спасибо кто откликнулся. Сделал так. Все статьи которые имеют (Порядок сортировки) = 0 выводим в меню.

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

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

			foreach ($this->model_catalog_information->getInformations() as $result) {
			
			
			if ($result['sort_order'] == 0) {
				$this->data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
				);
			}

 

 

Скобочку закрывающую  " } " в самом конце не забыть дописать :-)

Красиво получилось, спасибо.

Можно отсортировать часть статей в вверх, а часть вниз задавая

 

            if ($result['sort_order']   > =  число   или   < =  число   

Надіслати
Поділитися на інших сайтах


  • 2 years later...

На версии ocStore 2.3.0.2.2  не получается так сделать, либо я что то  делаю неправильно либо что то поменялось.. Может подскажет кто?

Согласно выше написанному пытаюсь добавить следующий код 

<?php foreach ($informations as $information) { ?>
      <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
<?php } ?>

в файл /catalog/view/theme/ваша тема/template/common/header.tpl

 

и код

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

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

			foreach ($this->model_catalog_information->getInformations() as $result) {
			
			
			if ($result['sort_order'] == 0) {
				$this->data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
				);
			}
}

в файл /catalog/controller/common/header.php

 

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

Надіслати
Поділитися на інших сайтах


  • 2 months later...
В 28.06.2017 в 16:29, Hunt0rr сказал:

На версии ocStore 2.3.0.2.2  не получается так сделать, либо я что то  делаю неправильно либо что то поменялось.. Может подскажет кто?

Согласно выше написанному пытаюсь добавить следующий код 


<?php foreach ($informations as $information) { ?>
      <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
<?php } ?>

в файл /catalog/view/theme/ваша тема/template/common/header.tpl

 

и код


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

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

			foreach ($this->model_catalog_information->getInformations() as $result) {
			
			
			if ($result['sort_order'] == 0) {
				$this->data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
				);
			}
}

в файл /catalog/controller/common/header.php

 

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

Замени $this->data на $data

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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