Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

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

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

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

 

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

 

В файл /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)

 

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

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


выводите по 

if ($result['sort_order']) {

 

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

 

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

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

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

напишите в 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, ага :)

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

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


ravilr, ага :)

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

 

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

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

  • 1 год спустя...

 

Вроде получилось ;)) Спасибо 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 года спустя...

На версии 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 месяца спустя...
В 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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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