Jump to content
Sign in to follow this  
glka

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

 

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

Share this post


Link to post
Share on other sites

выводите по 

if ($result['sort_order']) {

 

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

 

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

  • +1 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

выводите по 

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'])
				);
			}

Share this post


Link to post
Share on other sites

ravilr, ага :)

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

Share this post


Link to post
Share on other sites

ravilr, ага :)

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

 

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
В 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.