[Помогите] Вывод своих полей

Тема в разделе "OpenCart", создана пользователем Ever, 21 янв 2014.

  1. Ever

    Ever

    Регистрация:
    4 сен 2013
    Сообщения:
    63
    Симпатии:
    10
    Для статей добавил новую опцию (такую же как и "Статус") также добавил свое поле в БД (в таблицу oc_information) в админ части все работает, опция переключается и запись в бд происходит нормально, вообщем в admin панели все работает, поле нужно для работы с ним в header-е в frontend-е.
    Как теперь работать с этой переменной в frontend-е?
    Не понятен запрос в модели:
    Код:
        public function getInformation($information_id) {
            $query = $this->db->query("SELECT DISTINCT * 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 i.information_id = '" . (int)$information_id . "' AND 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'");
       
            return $query->row;
        }
    Он возвращает строки или выбранные значения? То есть достает ли он содержимое из моего новоиспеченного поля?
    Если достает то как с ним дальше работать?
     
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    звездочка означает что выбираются все стобики из перечмсленных таблиц конечно со всеми условиями...
    return $query->row - означает что ф-ция возвращает все столбики, короче кури контроллер
     
  3. Ever

    Ever

    Регистрация:
    4 сен 2013
    Сообщения:
    63
    Симпатии:
    10
    Судя по условия достает только со статусом 1 правильно (тоесть включенные)?
    --- Добавлено, 21 янв 2014 ---
    Как работать с этим значением в контроллере?
    такое прокатит $this->data['newpole'] = $information_info['newpole']; ?
     
  4. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    ну вопше ето правильно, достает только включенные, если вам надо все, то поменяйте так
    PHP:
        public function getInformation($information_id) {
            
    $query $this->db->query("SELECT DISTINCT * 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 i.information_id = '" . (int)$information_id "' AND id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
      
            return 
    $query->row;
        }
    или задайте конкретно вопрос что нужно и выложыте части кода!
    сомневаюсь что в админке работает если вы не знаете как в фронте сделать
     
  5. Ever

    Ever

    Регистрация:
    4 сен 2013
    Сообщения:
    63
    Симпатии:
    10
    В админке работает! Там контроллер и шаблон изменялись да и запросы поправил в модели и изменения в базу нормально записываются.
    Нужно получить значение нового поля для работы с ним в header.tpl для статей, вот собственно и вся задача
     
  6. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    не тут 2 варианта либо мой русский вопше не понятен либо вы непонемающий* человек...
    сказал выше что запрос тащит все поля из указанных таблиц
    курите контроллер того елемента который вам нужен!
    нет исходников - нет гадания на пустой кружке.
     
  7. Ever

    Ever

    Регистрация:
    4 сен 2013
    Сообщения:
    63
    Симпатии:
    10
    Модель которая получает записи из бд, в ней все норм.
    Контроллер в котором я не знаю как обработать нужно мне поле 'newpole':
    Я незнаю как получить значение записанное в БД для расботы с ним в header.tpl вот он:
    также вот контроллер header:
     
  8. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    во первых я не вижу чтоб в хедере была хотя бы подключена модель информации, во вторых напишите как называется колонка которую вы добавили в БД и в 3 - лучше напишите полное задания что нужно сделать
     
  9. Ever

    Ever

    Регистрация:
    4 сен 2013
    Сообщения:
    63
    Симпатии:
    10
    Задача стояла такая: Для статей нужно было сделать переключатель в админке такой же как 'status' только немного для других целей. Оперировать данными из нового поля newpole созданного в таблице oc_information нужно в хедере (header.tpl - frontend) и только для статей (В зависимости от состояния "включено/отключено" выполнялось определенное условие). В админке все получилось и нормально работает. А вот в frontend не сразу и не уверен что правильно.
    Зделал следующим образом:

    В файле catalog\controller\information\information.php после строки $this->data['heading_title'] = $information_info['title']; добавил $this->document->setNewpole($information_info['newpole']);

    в файле catalog\controller\common\header.php после стоки $this->data['title'] = $this->document->getTitle(); добавил строку $this->data['newpole'] = $this->document->getNewpole();

    в файл system\library\document.php после строки private $title; добавил private $newpole; также после функции
    PHP:
    public function getTitle() {
            return 
    $this->title;
        }
    добавил
    PHP:
    public function setNewpole($newpole) {
            
    $this->newpole $newpole;
        }
     
        public function 
    getNewpole() {
            return 
    $this->newpole;
        }
    в файле catalog\view\theme\my_theme\template\common\header.tpl после <title><?php echo $title; ?></title> обработал полученные значения
    <?php
    if (isset($newpole)) {
    if ($newpole == 1) { echo '1111'; }
    else { echo '2222'; }
    } ?>

    Таким способом все работает только немного не нравится то что полез в system\library\document.php
    Вопросы:
    Есть альтернативные варианты чтобы не вмешивать в system\library\document.php?
    Чем в будущем грозит то что я изменил system\library\document.php (при обновлениях)?
     
    Последнее редактирование: 22 янв 2014