Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[РЕШЕНО] Краткое описание в модулях Рекомендуем Последнее и т.д.


Recommended Posts

  • 3 weeks later...

А можно сделать вывод этого поля краткого описания, в списке товаров, только если оно заполнено, точнее не пустое?

А то если сейчас включить краткое описание то все товары магазина надо проходить и заполнять, чтоб постоты не было.

Магазин действующий, товаров много.

Наверное тут надо прописать условие, что при заполненном поле short_description оно отображается в шаблоне, или как-то так.

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Кто решил проблему с ошибкой 196

Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in/home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in/home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in/home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196Notice: Undefined index: short_description in /home/itradeby/www/telescop.by/catalog/controller/product/category.php on line 196

в 1.5.4.1 ?

Надіслати
Поділитися на інших сайтах


Кто решил проблему с ошибкой 196

в 1.5.4.1 ?

Весьма странно. В базу значение записывается. А вывести его не получается. Загадочная хрень.

Вроде как вот этот код в контроллере

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

задает значение из MYSQL таблицы переменной short_description

Почему ошибка, понять не могу

Надіслати
Поділитися на інших сайтах


Кто решил проблему с ошибкой 196

в 1.5.4.1 ?

в файле product.php который находиться в catalog > model > catalog

в 14 строке дописываем pd.short_description

$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

должно получиться

$query = $this->db->query("SELECT DISTINCT *, pd.short_description, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

ниже находим

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

и дописываем

'description'	  => $query->row['description'],
'short_description'	  => $query->row['short_description'],

  • +1 1
Надіслати
Поділитися на інших сайтах


....

Так заработало!

Расшифруйте, если не сложно, что за файл product.php который находится в catalog > model > catalog

на будущее, если понадобится вытащить из базы какое-нить значение

за что отвечает папка model?

Но теперь пропали теги товара, не сохраняются в базу

Змінено користувачем 123red
Надіслати
Поділитися на інших сайтах


изменил вид шаблона в сетке, добавил вывод $product["reward"] (баллы за покупку) и $product["sku"] (код товара). Но при смене вида у всех товаров выводится один и тот же SKU и одинаковое кол-во баллов. Не сталкивались с подобным?

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Если в админке CKEDITOR у вас уже появился (как вставлять было написано в этой теме ранее nsvik от 10 Декабрь 2012 - 15:28), но на странице текст идёт в одну строку, то в файлах (.php) в сылках необходимо добавлять html_entity_decode, например, в category.php

вместо 'short_description' => $result['short_description'],

вообще правильно писать

'description' => $result['short_description'],

вставляйте

'description' => html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8'),

Текст не пишите большой, т.к. ограничений по объёму нет, а когда текста много, то некрасиво.

По аналогии можно везде так исправить.

И будет у вас нормальный html текст

У меня не выводиться CKEDITOR в админке таким способом.

Надіслати
Поділитися на інших сайтах


  • 3 months later...

 Если я проделаю все пункты описаны выше, то поле с кратким описанием будет видно только на вкладке русского языка или же на всех существующих ( у меня их 3: ру, укр, анг.) и будет ли текст переводиться на сайте?

Надіслати
Поділитися на інших сайтах


Присоединяюсь к вопросу как подключить CKEDITOR к краткому описанию товара?

Всем добрый день!

Проблема еще не решена?

Надіслати
Поділитися на інших сайтах

Всем доброе утро! ocStore 1.5.3.1

Сделал краткое описание товара как описано в данной статье. У меня вместо "short_ " стоит "mini_". Задался вопросом как к нему подключить CKEditor.








<tr>
    <td><?php echo $entry_short_description; ?></td>
    <td><textarea name="product_description[<?php echo $language['language_id']; ?>][short_description]" cols="40" rows="5"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['short_description'] : ''; ?></textarea></td>
	 </tr>

 

Открыл файл product_form.tpl (../admin/view/template/catalog)

и вместо cols="40" rows="5" вставил это  id="mini_description<?php echo $language['language_id']; ?>id="description<?php echo $language['language_id']; ?>
 

Далее в этом же файле дописал вот это

 

<script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script>
<script type="text/javascript">

<?php foreach ($languages as $language) { ?>

CKEDITOR.replace('mini_description<?php echo $language['language_id']; ?>', {
filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>'
});


CKEDITOR.replace('description<?php echo $language['language_id']; ?>', {
filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>'
});
<?php } ?>
</script>

 

Любые изменения работают, сохраняются, но в браузере отображаются тэги html/

 

Что не так сделал?

 

Всем спасибо!

Надіслати
Поділитися на інших сайтах

Если в админке CKEDITOR у вас уже появился (как вставлять было написано в этой теме ранее nsvik от 10 Декабрь 2012 - 15:28), но на странице текст идёт в одну строку, то в файлах (.php) в сылках необходимо добавлять html_entity_decode, например, в category.php

'description' => html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8'),

Текст не пишите большой, т.к. ограничений по объёму нет, а когда текста много, то некрасиво.

По аналогии можно везде так исправить.

И будет у вас нормальный html текст

Спасибо!

Сначала почему-то не выходило :-)

Надіслати
Поділитися на інших сайтах

  • 2 months later...

А кто нибудь размещал информацию из short_description в category.tpl \ category.php, так чтобы к стандартному обрезанному описанию товара можно было добавить ещё информацию из краткого описания товара, то есть description + short_description на станице категории, где товары идут списком. Я просто не понимаю, то ли у меня руки растут не оттуда... но у меня ничего не получается. Пожалуйста, напишите, что нужно дополнительно ко всем вышеозвученным шагам делать, чтобы так получилось?

 

p.s. дополнительно к вышеозвученным предыдушими участниками дискуссии и автором статьи "addnews"

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Друзья, скажите, кто-нибудь пробовал потом эти поля прикрутить к Batch Editor'y? Поля в админке добавить получается, но почему-то инфа в переменную не кладётся, но затирает имеющуюся (добавленную обычным способом, через карточку товара).

Надіслати
Поділитися на інших сайтах


  • 9 months later...

делаю краткое описание в карточке товара. Все вводится и сохраняется в БД. А вывести его не получается :((

Я из этой статьи все перепробовал, перелопатил весь код. И всеравно получаю ошибку NOTICE: UNDEFINED VARIABLE: PRODUCT_INFO IN C:\OPENSERVER\DOMAINS\OPENCART\CATALOG\VIEW\THEME\AND_BUILDING\TEMPLATE\PRODUCT\PRODUCT.TPL ON LINE 42

 

код в product.tpl такой      <?php echo $product_info['mini_description']; ?></div>

я так понимаю, что $product_info не знает про mini_description.

Помогите, где его прописать, я уже все облазил, везде где можно уже прописал, но всеравно не видит он mini_description

Надіслати
Поділитися на інших сайтах


Нашел ошибку. те у кого не выводится идите в opencart\catalog\controller\product\product.php и добавляйте строчку $this->data['mini_description'] = $product_info['mini_description'];

без нее это не переменная и ничего не выводится, или выводится с ошибкой.

Строку можно добавить после    $this->data['points'] = $product_info['points'];

Надіслати
Поділитися на інших сайтах


  • 5 months later...

Вот решил поделиться, т.к. кто-то спрашивал "как вывести краткое описание в модуль рекомендуем?"

1. В шаблоне в папке module открываем файл featured.tpl

2. Определяемся в каком месте выводим описание, допустим после наименования товара.

3.Находим в файле featured.tpl строку

<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
после нее вставляем следующее

<div id="short-dis"><?php echo $product['description']; ?></div>
По аналогии делаем с другими файлами latest.tpl bestseller.tpl special.tpl

4. Далее идем в папку catalog > controller > module и открываем файл featured.php .

5. Находим кусок кода

$this->data['products'][] = array(
	 'product_id' => $product_info['product_id'],
	 'thumb'	 => $image,
	 'name'	  => $product_info['name'],
	 'price'	 => $price,
	 'special'   => $special,
	 'rating'	 => $rating,
	 'reviews'	=> sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']),
	 'href'	  => $this->url->link('product/product', 'product_id=' . $product_info['product_id']),
и после
'product_id' => $product_info['product_id'],
вставляем следующую строку

'description' => mb_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
в файлах latest.php bestseller.php special.php вставить

строку

'description' => mb_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
Что означает строка
'description' => mb_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
она выводит описание с максимальным кол-вом символов 100, поэтому если вам надо больше символов или меньше, то меняете в конце строки число 100 на свое.

6. В файле стилей, т.е. в stylesheet.css в самом низу добавляем стили для нового блока short-dis

например такой:


#short-dis{
	display: block;
	color:#000000;
	font:12px;
  
}
Вроде все...

 

Благодаря вашей статье я наконец-то понял как осуществить что задумал, спасибо вам)))

Надіслати
Поділитися на інших сайтах


  • 8 months later...

Инструкция по добавлению дополнительного поля "Краткое описание" к товару и его вывод в модулях "Рекомендуем", "Последнее", "Популярное" и других, которые выводятся на главную страницу. При желании это краткое описание можно выводить после этих изменений где угодно. За основу была взята статья Владислава Храмцова для добавления такого же поля но для OpenCart <1.5. Данный гайд составлен и точно работает на OpenCart 1.5.1.3.

1. Создаем дополнительное поле short_description в базе данных в таблице product_description. Распологаться оно должно перед полем description. Первый шаг совпадает с первым шагом статьи от Влада. Там можно посмотреть скриншоты.

2. Открываем файл product.php (../admin/controller/catalog) и после строки 544

$this->data['entry_description'] = $this->language->get('entry_description');
вставляем строку

$this->data['entry_short_description'] = $this->language->get('entry_short_description');
3. Открываем файл product.php (../admin/language/russian/catalog) и перед этой строкой (32):

$_['entry_description']	  = 'Описание:';
вставляем строку

$_['entry_short_description']	  = 'Краткое описание:';
4. Далее открываем файл product_form.tpl (../admin/view/template/catalog) и после этих строк (47-50):

<tr>
			    <td><?php echo $entry_meta_description; ?></td>
			    <td><textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" cols="100" rows="2"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea></td>
			  </tr>
вставляем

<tr>
    <td><?php echo $entry_short_description; ?></td>
    <td><textarea name="product_description[<?php echo $language['language_id']; ?>][short_description]" cols="40" rows="5"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['short_description'] : ''; ?></textarea></td>
	 </tr>
5. Открываем файл product.php (../admin/model/catalog) и строку 13:

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
заменяем на

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', short_description = '" . $this->db->escape($value['short_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Далее строку 139

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
заменяем на

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', short_description = '" . $this->db->escape($value['short_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
И наконец после строки 473

'meta_description' => $result['meta_description'],
вставляем

'short_description'      => $result['short_description']
Не забудьте поставить после строки 473 запятую в конце.

После этого идем в админку на страницу редактирования товара, должно появиться поле "Краткое описание" как на изображении ниже

8.jpg

6. Далее выведем значение этого поля в нужные нам места, рассмотрим на примере вывода в популярных товарах, для других модулей вы сможете сделать это по аналогии, процесс совершенно идентичен.

Откройте файл featured.php (../catalog/controller/module) и после строки 48

'product_id' => $product_info['product_id'],
вставьте

'short_description' => $product_info['short_description'],
7. Далее откройте файл featured.tpl (../catalog/view/theme/default/template/module) и после этой строки (9):

	    <div class="product-name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
вставьте

<div class="shortdesc"><?php echo $product['short_description']; ?></div>

Если вы выполнили все шаги правильно, вы увидите приблизительно следующее

5.jpg

 

 

Подскажите, как справиться с такой проблемой:

У меня OpenCart Ostore 2.1.0.1

Я все сделал по вашей схеме, в админке  все нормально, появилось окошко "Краткое описание", в базу данных информация из этого окна заноситься, но при выводе в блоке "Рекомендуемые" на главной странице, пишет такую ошибку:

Notice: Undefined index: short_description inC:\OpenServer\domains\otkris.ru\catalog\view\theme\coloring\template\module\featured.tpl on line 21

Кто может подсказать ????

Надіслати
Поділитися на інших сайтах


6 пункт попробуйте вставить строку вот так:

 'short_description' =>  $result['short_description'], 
Змінено користувачем Vetal
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.