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

Краткое описание товаров для OCStore


Recommended Posts

Итак, все что написано в этой теме, мне подошло частично, перерыл много информации, в итоге получил то, что хотел.
Делал все на версии OCSTORE 1.5.4.1.2
Первый, второй и третий пункт как и в той теме остается таким же:
Итак:
 
Создаем дополнительное поле short_description в базе данных в таблице product_description. Располагаться оно должно перед полем description. Если не знаете как это сделать, посмотрите в этой статье.
 
Дальше идем по пути: магазин/admin/controller/catalog и открываем файл product.php
Ищем в нем строку
$this->data['entry_description'] = $this->language->get('entry_description');
После нее добавляем:
$this->data['entry_short_description'] = $this->language->get('entry_short_description');
Идем по пути: магазин/admin/language/russian/catalog и открываем файл product.php
Ищем строку
$_['entry_description']   = 'Описание:';
Перед ней добавляем:
$_['entry_short_description']   = 'Краткое описание:';
Идем по пути: магазин/admin/view/template/catalog и открываем файл product_form.tpl
Ищем:
<tr><td><?php echo $entry_description; ?></td><td><textarea name="product_description[<?php echo $language['language_id']; ?>][description]" id="description<?php echo $language['language_id']; ?>"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['description'] : ''; ?></textarea></td></tr>
Перед этим делом вставляем:
<tr><td><?php echo $entry_short_description; ?></td><td><textarea name="product_description[<?php echo $language['language_id']; ?>][short_description]" id="short_description<?php echo $language['language_id']; ?>"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['short_description'] : ''; ?></textarea></td></tr>
В этом же файле, для того, чтобы подключить CKEditor для краткого описания ищем:
<script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script> <script type="text/javascript"><!--<?php foreach ($languages as $language) { ?>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>
И заменяем это дело на вот это:
<script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script> <script type="text/javascript"><!--<?php foreach ($languages as $language) { ?>CKEDITOR.replace('short_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>
Идем в магазин/catalog/model/catalog открываем файл product.php
Ищем строчку (У меня она 14)
$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'],
После нее дописываем:
'short_description'   => $query->row['short_description'],
 
Идем по пути: магазин/admin/model/catalog открываем файл product.php
Ищем:
$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']) . "'");
В этом же файле ищем:
$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']) . "'");
В этом же файле ищем:
'meta_description' => $result['meta_description']
Ставим в конце строки запятую (Если не стоит) и ниже добавляем:
'short_description' => $result['short_description']
 
Теперь нам нужно вывести блок краткого описания, я выводил в категориях, поэтому идем по пути: магазин/catalog/controller/product открываем файл category.php
Ищем строчку
'product_id'  => $result['product_id'],
После нее вставляем:
'short_description'  => mb_substr(html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8'), 0, 380),
Где 380 в моем случае максимальное колличество знаков в кратком описании
Далее идем в магазин/catalog/view/theme/ваш_шаблон/template/product  открываем файл category.tpl
Ищем в нем:
<div class="description"><?php echo $product['description']; ?></div>
И заменяем ее на:
<div class="description"><?php echo $product['short_description']; ?></div>
 
Вроде бы все.
У меня вывод товаров идет сеткой, другие варианты не проверял, но думаю должно работать.
 
PS. Надеюсь все пути правильно написал, голова не варит уже :)

html_short_desc.jpg

html_short_desc.jpg

post-668979-0-68665400-1377018960_thumb.jpg

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


Все бы так! Сам нашёл решение  выложил для всех.Респект.Мне не надо , но плюсанул!)

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

Поправьте вот эту часть:
 

Идем по пути: магазин/admin/model/catalog открываем файл product.php
Ищем:

$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']) . "'");


У вас там код должен на два блока разбиваться ;)

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

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

Поправьте вот эту часть:

 

Идем по пути: магазин/admin/model/catalog открываем файл product.php

Ищем:

$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']) . "'");

У вас там код должен на два блока разбиваться ;)

Тоже ставлю плюс за проделанную огромную работу по написании инструкции

Тему наверное стоит переименовать в "Краткое описание товаров для OCStore"

Спасибо, подправил.

 

Сделал бы xml для vQmod и выложил в разделе "Дополнения" - совсем красавец был был.

Да я как раз думал, но это все таки ответственность перед скачавшими, а на форуме я не так часто (пока). Поэтому, возможно, кто то на основе этих данных сам сделает VQ MOD и выложит его. Надеюсь бесплатно :)

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


  • 2 months later...

А как в карточку продукта вставить?

делаю как в категорию, выдает ошибку

Notice: Undefined variable: product in /home/users/o/one/domains/site.ru/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 202

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


Не хорошо чужие модули продавать, да в два раза дешевле официальной цены.

А он мне и бесплатно не нужен...

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


Я ничего не продаю.Я дал ссылку на модуль который на тот момент стоил 10 долларов.Не нужен бесплатно,  сделай сам.

 

http://prntscr.com/25xd7v

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

уже сделал.

За

Не хорошо чужие модули продавать, да в два раза дешевле официальной цены.А он мне и бесплатно не нужен...

извиняюсь. Я не знал что цена 10 была.

 

А модуль этот мне не нужен т.к. часть админки уже была сделана. Оставалось только в продукт вывести

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


Круто! Но подскажите пожалуйста, как вывести на странице товара краткое описание?

Просто написать вместо обычного краткое  :-D

Зачем вам это?

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

Приветствую всех!

Ребята, подскажите, как это краткое описание вставить в модули, например Рекомендуемые, хиты продаж и т.д... в модуле в место description пишу short_description и вылазит ошибка Undefined variable: entry_short_description in....... как это сделать?? Поисковик уже облазил вдоль и в поперек...

Заранее огромное спасибо!

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


Приветствую всех!

Ребята, подскажите, как это краткое описание вставить в модули, например Рекомендуемые, хиты продаж и т.д... в модуле в место description пишу short_description и вылазит ошибка Undefined variable: entry_short_description in....... как это сделать?? Поисковик уже облазил вдоль и в поперек...

Заранее огромное спасибо!

 

Это легче сделать, чем то, что нужно мне)

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


Тему свою создавай. Я тут жду ответ на свой вопрос, а он ещё и свой задаёт.

Здесь все предельно просто изложено, имея минимальные знания php и архитектуры опенкарта, можно все это сделать и без инструкции. Также я уже вам писал как вывести краткое описание в карточке товара, если нет даже таких знаний, то может все таки не стоит лезть самому в код?

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


Здесь все предельно просто изложено, имея минимальные знания php и архитектуры опенкарта, можно все это сделать и без инструкции. Также я уже вам писал как вывести краткое описание в карточке товара, если нет даже таких знаний, то может все таки не стоит лезть самому в код?

 

Попробуйте сами вывести.

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


Попробуйте сами вывести.

Ок, я действительно немного не дописал. В catalog/controller/product/product.php после

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

вставляете

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

теперь в шаблоне карточки товара product.tpl выводите краткое описание в любом нужном месте

 через переменную

<?php echo $short_description; ?>
  • +1 1
Надіслати
Поділитися на інших сайтах


 

Ок, я действительно немного не дописал. В catalog/controller/product/product.php после

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

вставляете

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

теперь в шаблоне карточки товара product.tpl выводите краткое описание в любом нужном месте

 через переменную

<?php echo $short_description; ?>

 

Огромное вам спасибо. Уже завтра попробую. Если получится, цены вам нет!

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


 

Ок, я действительно немного не дописал. В catalog/controller/product/product.php после

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

вставляете

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

теперь в шаблоне карточки товара product.tpl выводите краткое описание в любом нужном месте

 через переменную

<?php echo $short_description; ?>

 

Огромное спасибо, всё пошло!!!

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


 

Ок, я действительно немного не дописал. В catalog/controller/product/product.php после

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

вставляете

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

теперь в шаблоне карточки товара product.tpl выводите краткое описание в любом нужном месте

 через переменную

<?php echo $short_description; ?>

 

Скажите пожалуйста, как вывести заголовок "Краткое описание" вместе с кратким описанием на странице товара. Чтобы если нет краткого описания, заголовок не отображался. Спасибо!

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


Скажите пожалуйста, как вывести заголовок "Краткое описание" вместе с кратким описанием на странице товара. Чтобы если нет краткого описания, заголовок не отображался. Спасибо!

 

Это уже смотря как вы хотите его вывести, какое оформление и шаблон. Можно как-то так:

<?php if ($short_descriprion) { ?>
<h2>Краткое описание</h2>
<?php echo $short_descriprion; ?>
<?php } ?>
Надіслати
Поділитися на інших сайтах


 

Это уже смотря как вы хотите его вывести, какое оформление и шаблон. Можно как-то так:

<?php if ($short_descriprion) { ?>
<h2>Краткое описание</h2>
<?php echo $short_descriprion; ?>
<?php } ?>

 

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

Вроде ставить нужно тут 'short_description'  => mb_substr(html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8'), 0, 30),

Но, какое бы число я не ставил, текст вообще не обрезается. Сколько напишешь текста, столько и будет.

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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