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

Ссылка на определенные страницы

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

Хочу сделать ссылки в хедере на нужные мне страницы

в файле header.tpl написал:

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

В контроллере:

$data['informations'] = array();

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

Но теперь страницы сайта выдают 500 ошибку. Без условия if все работает. 

Спасибо!

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


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

У вас есть условие 

if ($result['bottom']) {

Сделайте такое же, но уже не для подвала, а для шапки. И по чекбоксу в админке будут вам выводиться нужные страницы в меню, без костылей

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


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, wbDev сказал:

У вас есть условие 


if ($result['bottom']) {

Сделайте такое же, но уже не для подвала, а для шапки. И по чекбоксу в админке будут вам выводиться нужные страницы в меню, без костылей

Спасибо за идею! 

Но вот у меня что то не получилось. Вот что сделал:

1. Выполнил завпрос в бд:

ALTER TABLE oc_information ADD COLUMN top INT(1) NOT NULL DEFAULT '0' AFTER bottom

2. Для админки:

admin/controller/catalog/information.php

Добавил:

$data['entry_top'] = $this->language->get('entry_top');
$data['help_top'] = $this->language->get('help_top');
if (isset($this->request->post['top'])) {
            $data['top'] = $this->request->post['top'];
        } elseif (!empty($information_info)) {
            $data['top'] = $information_info['top'];
        } else {
            $data['top'] = 0;
        }

Добавил перевод:

admin/language/ru-ru/catalog/information.php

$_['entry_top']           = 'Отображать сверху';
$_['help_top']  = 'Показывать в верхней части сайта (хеадер, шапка)';

admin/model/catalog/information.php

Строку

$this->db->query("INSERT INTO " . DB_PREFIX . "information SET sort_order = '" . (int)$data['sort_order'] . "', bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "'");

Заменил на 

$this->db->query("INSERT INTO " . DB_PREFIX . "information SET sort_order = '" . (int)$data['sort_order'] . "', bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', top = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', status = '" . (int)$data['status'] . "'");

И эту строку 

$this->db->query("UPDATE " . DB_PREFIX . "information SET sort_order = '" . (int)$data['sort_order'] . "', bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', status = '" . (int)$data['status'] . "' WHERE information_id = '" . (int)$information_id . "'");

заменил на

$this->db->query("UPDATE " . DB_PREFIX . "information SET sort_order = '" . (int)$data['sort_order'] . "', bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "', top = '" . (isset($data['top']) ? (int)$data['top'] : 0) . "', status = '" . (int)$data['status'] . "' WHERE information_id = '" . (int)$information_id . "'");

admin/view/template/catalog/information_form.tpl

Добавил:

<div class="form-group">
                <label class="col-sm-2 control-label" for="input-top"><span data-toggle="tooltip" title="<?php echo $help_top; ?>"><?php echo $entry_top; ?></span></label>
                <div class="col-sm-10">
                  <div class="checkbox">
                    <label>
                      <?php if ($top) { ?>
                      <input type="checkbox" name="top" value="1" checked="checked" id="input-top" />
                      <?php } else { ?>
                      <input type="checkbox" name="top" value="1" id="input-top" />
                      <?php } ?>
                      &nbsp; </label>
                  </div>
                </div>
              </div>

3. Вывел на сайте

catalog/controller/common/header.php

Перед

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

Добавил:

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

        $data['informations'] = array();

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

catalog/view/theme/ТЕМА/template/common/header.tpl

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

И обновил кеш модификаторов

В итоге в админке на странице редактирования статей :

Notice: Undefined index: top in /admin/controller/catalog/information.php on line 422 

На странице сайта:

Notice: Undefined index: top in system/storage/modification/catalog/controller/common/header.php on line 97

При сохранении статьи выдает 500 ошибку.

В чем я ошибся? :(

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


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

В контроллере где добавили?

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


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

В admin/controller/catalog/information.php

после этой строки

$data['entry_bottom'] = $this->language->get('entry_bottom');

добавил

$data['entry_top'] = $this->language->get('entry_top');

После этой 

$data['help_bottom'] = $this->language->get('help_bottom');

добавил ниже

$data['help_top'] = $this->language->get('help_top');

После этих строк

if (isset($this->request->post['bottom'])) {
            
$data['bottom'] = $this->request->post['bottom'];
        } elseif (!empty(
$information_info)) {
            
$data['bottom'] = $information_info['bottom'];
        } else {
            
$data['bottom'] = 0;
        }

ниже добавил:

if (isset($this->request->post['top'])) {
            
$data['top'] = $this->request->post['top'];
        } elseif (!empty(
$information_info)) {
            
$data['top'] = $information_info['top'];
        } else {
            
$data['top'] = 0;
        }
Изменено пользователем wlll

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


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

Уже разобрался! Вставил колонку в не ту базу данных :D 

Если кому то пригодится, то решение рабочее. 

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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