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

вывести из базы

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

Ребят, сделал в админке значение. С админки оно сохраняется в базе. Но никак не получается вывести значение этого поля в каждой странице (

 

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

 

То есть понятно, что для каждой категории, инфостраницы, продукта создано дополнительное поле. С админки данные удается передать в это поле, но не получается его значение передать в страницу с темплейтом. ((

 

Помогите, пожалуйста, с решением. Или пните в нужном направлении, измучался уже.

 

Спасибо.

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


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

покажите как, где, куда вы что-то в базе сохраняете и где хотите вывести

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


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

покажите как, где, куда вы что-то в базе сохраняете и где хотите вывести

раз уж тема создана.... как вывести поле РАСПОЛОЖЕНИЕ в карточку товара и в категории

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


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

раз уж тема создана.... как вывести поле РАСПОЛОЖЕНИЕ в карточку товара и в категории

в данном модуле https://opencartforum.com/files/file/1364-замена-кнопки-купить-на-реф-ссылку-openreflink/   первая часть инструкций именно это делает.

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


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

может я что то не так делаю..хз... убираю ссылку , оставляю только 

<?php echo $product['location']; ?>

все равно кнопка купить перекидывает.... мне нужно вот тут вывести location

post-22469-0-01343300-1378711849_thumb.png

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


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

catalog/controller/product/product.php после



$product_info['points'];

вставить



			$this->data['location'] = $product_info['location'];

catalog/view/theme/*/template/product/product.tpl в нужное место вставить



<?php echo $location; ?>

catalog/controller/product/category.php после



$result['name'],

вставить



					'location'    	 => $result['location'],

catalog/view/theme/*/template/product/category.tpl в нужно место вставить 



<?php echo $product['location']; ?>

+ в category.tpl возможно надо будет подружить со скриптами "grid/list"

  • +1 2

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


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

спасибо дружище... плюсик в репу

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


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

вывалоло после всех зтих действий ...

Notice: Undefined variable: product in /home/*********/data/www/*************/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 39 

PS разобрался....

 вместо <?php echo $product['location']; ?>  нужно <?php echo $location; ?>  

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


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

вывалоло после всех зтих действий ...

Notice: Undefined variable: product in /home/*********/data/www/*************/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 39 

PS разобрался....

 вместо <?php echo $product['location']; ?>  нужно <?php echo $location; ?>  

да, это была строка для сопутствующих, для самого товара просто $location, исправил.

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


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

Да, я на все страницы хотел добавить значение. То есть я добавил новое поле varchar в таблицы category_description, product_desription и information_description. В админе поменял код и она научилась писать в базу в соответвующие поля. А вот вывести никак не получается содержимое этих полей на страницы. То есть где в шаблоне менять - я понимаю,а вот как сделать переменную - не очень понимаю.

 

вроде надо менять вот в этих файлах:

catalog\model\catalog\product.php

catalog\controller\product\prduct.php (information.php, catagery.php)

 

Но пока безуспешно.

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


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

Посмотрите модель catalog/model/catalog/product.php метод getProduct(). Этот метод (а также аналогичные методы в этой и других моделях) должен возвращать ваши поля. Тогда, везде в контроллерах вы сможете их использовать и передавать в шаблоны. Возьмите за образец, например, поля description или meta_description (смотря в какую таблицу добавляли поля).

Т.е. надо исправить запрос, который выбирает нужные поля из базы, добавив туда ваши поля (если выборка делается не через * ). Затем передать значение из полученного query в результирующий массив (чаще всего), типа:

'product_desription' => $query->row['product_desription']
  • +1 1

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


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

Ой, а вы знаете, я так и делал, только это вызывало поломку магазина, потому что переменная не определена. То есть где-то ранее я её не упомянул или упомянул, но не правильно.

 

Ошибка получалась такая: Notice: "Undefined index: var1 in" и дальше куча мусора. Для вывода в информационных страницах и категориях, надо править состветвующие файлы? Например, catalog/model/catalog/information.php.

 

То есть уточню. В базе в таблицах категорий, продуктов и информации  добавил поле varchar, которое содержит что-то. Теперь нужно вывести значение этого поля в темплейтах информации, категории и продукта. Если нужна какая-то ещё информация - я дам все что нужно.

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


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

Переменная не определена - это вы далеко заехали. Лучше всё делать по шагам - сначала добавить в модель и посмотреть, что в результате метода getProduct() есть  нужное значение. Потом уже разбираться с контроллером и шаблоном.
 

Если нужна какая-то ещё информация - я дам все что нужно.

Напишите в какую таблицу вставляли поле product_desription.

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


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

Давайте, чтобы не путаться, обсуждать инфо-страницы. Делаю в базе:

CREATE TABLE IF NOT EXISTS `oc_information_description` (
  `information_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `title` varchar(64) NOT NULL,
  `description` text NOT NULL,
  `cptitle` varchar(255) NOT NULL,
  `myvar` varchar(1024) NOT NULL,
  `meta_description` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `meta_keyword` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`information_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Создалось поле myvar. Про админку писать не буду, тк в ней всё получилось относительно просто, и она умеет писать в базу в это поле Теперь содержимое myvar хочется выгружать на инфостраницу. Я так понимаю для этого необходимо в файле catalog/model/catalog/information.php определить переменную, которую потом вставить в файл темплейта. Ход мыслей правильный?

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


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

Ход мыслей правильный?

Нет. В модели берем значение из базы, передает в контроллер, а уже в контроллере объявляем переменную и выводим ее в темплейте.

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


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

То есть в модели (в данном случае catalog/model/catalog/information.php) должно быть "query бла-бла-бла", потом передача в контроллер, где я смогу задать имя переменной. Попробую получить с работы доступ к кода магаза, тогда смогу более точный ответ сформировать.

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


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

Да. Вполне достаточно будет модифицировать существующий уже запрос, добавив выборку из своего поля. А в контроллере уже объявлять переменную, забирая значение нужного элемента массива с данными, полученные из модели.

  • +1 1

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


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

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

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


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

Так добавил в модель (catalog/model/catalog/product.php):

'myvar' => $query->row['myvar'],

Теперь контроллер (catalog/controller/product/information.php):

if (!empty($information_info['myvar'])){$this->document->setMYVAR($information_info['myvar']);} else { $this->document->setMYVAR($information_info['title']);}....$this->data['heading_myvar'] = $information_info['myvar'];

Вот что-то неправильно я в контроллере делаю, потому что вызвать heading_myvar из шаблона не получается.

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


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

Вы пишите:

catalog/model/catalog/information.php

Потом:

catalog/model/catalog/product.php

Теперь контроллер (catalog/controller/product/information.php)

Все-таки, какая модель и какой контроллер?

  • +1 1

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


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

Извините, не подумал. До этого cptitle  руками вставлял, там только одну модель надо было редактировать. 

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


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

Не могу осилить: в моделях категории и информации нет упоминания о тайтлах и метах, но тем не менее они как-то туда попадают. В модели продукта вижу что-то похожее. Поеитесь примером каким на эту тему?

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


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

Вы вставили вашу переменную в модель и в контроллер передается значение из базы. Так?

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


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

Я вставляю переменную по аналогии с custom page title. То есть сперва в catalog/model/catalog/product.php:

'myvar' => $query->row['myvar'],

Далее планировалось в catalog/controller/product/information.php:

if (!empty($information_info['myvar'])){$this->document->setMYVAR($information_info['myvar']);} else { $this->document->setMYVAR($information_info['title']);}

....

$this->data['heading_myvar'] = $information_info['myvar'];

Ну и потом вывод в темплейт.

 

Для большей точности сейчас говорю именно о инфостраницах. Тут мне подсказывали, что тогда надо модель другую редактировать, но я пока не осилил это - сильно ещё не вникал, времени не было. Но тему добить стоило бы, я думаю такой вопрос в ФАКе очень бы пригодился многим. Я уверен в этом.

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


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

Я опять запутался.
Если вы хотите добавить поле к страницам информации, то откуда у вас catalog/controller/product/information.php? - у меня вообще такого файла нет. Проверял на 1.5.4 и 1.5.5.
Если все-таки добавлять к статьям, то нужно править catalog/controller/information/information.php. Там в методе index() найдите строку

$this->data['description'] = html_entity_decode($information_info['description'], ENT_QUOTES, 'UTF-8');

и после нее вставьте

$this->data['heading_myvar'] = $information_info['myvar'];

Тогда в шаблоне catalog/view/theme/[ваш шаблон]/template/information/information.tpl можно написать, например

<?php echo $heading_myvar; ?>

Остальное - аналогично.

  • +1 1

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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