Перейти к содержанию
glka

[Решено] Добавление статей в меню 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

Поделиться сообщением


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

mrvira хорошо, когда хорошо знаешь SQL, голова не думает о контролере   :-D

Поделиться сообщением


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

выводите по 

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

Поделиться сообщением


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

у всех голова по разному работает

Вот что правда, то правда... :ph34r:

Поделиться сообщением


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

 

Вроде получилось ;)) Спасибо 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']   > =  число   или   < =  число   

Поделиться сообщением


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

На версии 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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.