Jump to content

Recommended Posts

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

 

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

 

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

 

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

 

Спасибо.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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; ?>  

Share this post


Link to post
Share on other sites

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

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, исправил.

Share this post


Link to post
Share on other sites

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

 

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

catalog\model\catalog\product.php

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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 определить переменную, которую потом вставить в файл темплейта. Ход мыслей правильный?

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Так добавил в модель (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 из шаблона не получается.

Share this post


Link to post
Share on other sites

Вы пишите:

catalog/model/catalog/information.php

Потом:

catalog/model/catalog/product.php

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Я вставляю переменную по аналогии с 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'];

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

 

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

Share this post


Link to post
Share on other sites

Я опять запутался.
Если вы хотите добавить поле к страницам информации, то откуда у вас 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

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.