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

[РЕШЕНО] Расширенное описание категории


MasterAlex

Recommended Posts

Всем доброго времени суток, очень понравился данный двиг, но хочется немного дополнить описание категорий, для начала попытаюсь описать чего хочу добиться и что для этого уже сделал (ЗЫ если честно в пыхе полный 0 хотя и люблю програмить на delphi)))

Задача: добавить дополнительное описание категории, основное описание как и раньше сверху + дополнительное описание под вложеными категориями

скрин как должно быть Изображение

что уже сделал:

в файле catalog\controller\product\category.php после строки

$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
добавил

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

в файле catalog\view\theme\sancart\template\product\category.tpl в нужном месте добавил

<?php if ($description1) { ?>
	<div style="margin-bottom: 15px;"><?php echo $description1; ?></div>
<?php } ?>

еще добавил в БД в таблице oc_category_description дополнительное поле description1

если заносить данные в БД в это поле вручную то все отлчно работает НО теперь хочется автоматизировать все это дело и дополнить админку...

начал ковярять код админки но это оказалось не так просто...

файл admin\view\template\catalog\category_form.tpl

после

<tr>
  <td><?php echo $entry_description; ?></td>
  <td><textarea name="category_description[<?php echo $language['language_id']; ?>][description]" id="description<?php echo $language['language_id']; ?>"><?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['description'] : ''; ?></textarea></td>
</tr>

добавил

<tr>
  <td><?php echo $entry_description; ?></td>
  <td><textarea name="category_description[<?php echo $language['language_id']; ?>][description1]"  id="description1<?php echo $language['language_id']; ?>"><?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['description1'] : ''; ?></textarea></td>
</tr>

и еще добавил кусок кода для CKEDITOR

CKEDITOR.replace('description1<?php echo $language['language_id']; ?>', {
	language: '<?php echo $lang; ?>',
	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; ?>'
});

вот что вышло скрин

Изображение

Решил сегодня на свежую голову еще раз подумать и получилось все доделать для этого нужно:

файл admin\model\catalog\category.php

в нем:

строка 13 было:

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description (category_id, language_id, name, meta_keywords, meta_description, description, title, h1) VALUES ('" . (int)$category_id . "', '" . (int)$language_id . "', '" . $this->db->escape($value['name']) . "', '" . $this->db->escape($value['meta_keywords']) . "', '" . $this->db->escape($value['meta_description']) . "', '" . $this->db->escape($value['description']) . "', '" . $this->db->escape($value['title']) . "', '" . $this->db->escape($value['h1']) . "')");
стало:

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description (category_id, language_id, name, meta_keywords, meta_description, description, title, h1, description1) VALUES ('" . (int)$category_id . "', '" . (int)$language_id . "', '" . $this->db->escape($value['name']) . "', '" . $this->db->escape($value['meta_keywords']) . "', '" . $this->db->escape($value['meta_description']) . "', '" . $this->db->escape($value['description']) . "', '" . $this->db->escape($value['title']) . "', '" . $this->db->escape($value['h1']) . "', '" . $this->db->escape($value['description1']) . "')");

строка 41:

было:

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description (category_id, language_id, name, meta_keywords, meta_description, description, title, h1) VALUES ('" . (int)$category_id . "', '" . (int)$language_id . "', '" . $this->db->escape($value['name']) . "', '" . $this->db->escape($value['meta_keywords']) . "', '" . $this->db->escape($value['meta_description']) . "', '" . $this->db->escape($value['description']) . "', '" . $this->db->escape($value['title']) . "', '" . $this->db->escape($value['h1']) . "')");
стало:

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description (category_id, language_id, name, meta_keywords, meta_description, description, title, h1, description1) VALUES ('" . (int)$category_id . "', '" . (int)$language_id . "', '" . $this->db->escape($value['name']) . "', '" . $this->db->escape($value['meta_keywords']) . "', '" . $this->db->escape($value['meta_description']) . "', '" . $this->db->escape($value['description']) . "', '" . $this->db->escape($value['title']) . "', '" . $this->db->escape($value['h1']) . "', '" . $this->db->escape($value['description1']) . "')");

и последнее строка 136-143 в foreach ($query->rows as $result) {

после 'h1' => $result['h1'],

добавил

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

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

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


  • 11 months later...

Спасибо тебе огромное.

Только хотел это же делать :-)

Остается еще один вопрос, как вывести длинное описание только на первой странице категории?

Как убрать дубляж текста при паджинации?

Тоесть нужно чтоб текст под товаром выводился только на первой странице.

А при переходе на вторую и последующие текста под товарами не было.

Тем самым текст индексируется только на одной странице и в поиске ей будет основной вес.

И в индексе будет только эта категория по выбранным запросам а не будт проскакивать страницы с окончанием ?page=8

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


Вот наверное по типу кода для вывода текста в определенных категориях

<?php $categories = $this->model_catalog_product->getCategories($product_id); ?>
<?php foreach($categories as $category) { ?>
<?php if($category['category_id'] == 1 || $category['category_id'] == 2 || $category['category_id'] == 3) { ?>
text 1
<?php } else { ?>
text 2
<?php } ?>
<?php } ?>
Так вот как можно задать не определенные категории а главная страница категории? и не учитывать паджинацию?
Надіслати
Поділитися на інших сайтах


  • 3 months later...

Сделал вывод текста только на первой странице.

В файле catalogviewthemeВаша Темаtemplateproductcategory.tpl

<?php } ?>
  <?php if ($description1) { ?>
 
	    <div style="margin-bottom: 15px; margin-top: 35px;"><?php if (!isset($_GET['page'])) {echo $description1; }?></div>
<?php } ?>

А теперь задаюсь вопросом а нужно ли это?

Если страницы вида ?page=2 спрятаны в роботс, не будет ли это только хуже?

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


  • 4 months later...

Сделал вывод текста только на первой странице.

В файле catalog\view\theme\Ваша Тема\template\product\category.tpl

<?php } ?>
 <?php if ($description1) { ?>

	<div style="margin-bottom: 15px; margin-top: 35px;"><?php if (!isset($_GET['page'])) {echo $description1; }?></div>
<?php } ?>

А теперь задаюсь вопросом а нужно ли это?

Если страницы вида ?page=2 спрятаны в роботс, не будет ли это только хуже?

Спасибо, добрый человек. Единственно косяк, что при возвращении на первую страницу клиент не видит текст (добавляется этот самый ?page=1).

Как исправить?

Еще такой вопрос (я тут в оптимизации новенькая), прятать ?page=2 и т.д. действительно резон? Это потому, что товары будут убираться (или там сортировка другая будет включена) и по этим ссылкам будет вылазить "Нет такой страницы" или еще из каких-то соображений?

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


  • 2 months later...
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

для версии 1.5.4.1 чуть по другому в модели

файл admin\model\catalog\category.php

 

13 строка

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "',description1 = '" . $this->db->escape($value['description1']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

 

и 47 строка

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "', description1 = '" . $this->db->escape($value['description1']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

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

  • 3 months later...

Для того чтобы текст категории был внизу категории: (для версии 1.5.4.1)

 

в файле catalog\view\theme\sancart\template\product\category.tpl в нужном месте добавил:





<?php if ($description1) { ?>
<div style="margin-bottom: 15px;"><?php echo $description1; ?></div>
<?php } ?>
 

вставлять надо после строки:





<div class="pagination"><?php echo $pagination; ?></div>
 

Так как картинка с результатом удалена, возьму на себя смелость добавить ее сюда:

 

9869b3ff5048bcb04c0599b62541593e.png
 

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


  • 3 weeks later...

и все-таки не совсем понял. нужно ли убирать ?page=x в роботс? если нет то нужно ли отображать описание только на первой странице?

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

 

Я page=2 не убираю никогда это не 100% дубль и можно оставлять страницы в индексе.

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


Подскажите пожалуйста, у меня вообще описание категории не выводится, шо делать? версия 1.5.4.1

уточняю, описания категорий выводится, описание страниц производителей, нет...

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


Делала все по инструкции. Дополнительное поле для описания категории в админке появилось. Но пишет ошибку Notice: Undefined index: description1 in /home/ninas/public_html/pro/admin/view/template/catalog/category_form.tpl on line 57   в самом поле для описания.  

 

На страницу магазина дополнительное описание категории выводится внизу, как и хотела. Но в самом верху страницы выдает кучу ошибок:

 

Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259
 
В категориях, где нету товара, этой кучи ошибок нет.  
 
При повторной попытке редактировать описание категории дополнительного описания нету. Вместо этого описания ошибка:
Notice: Undefined index: description1 in /home/ninas/public_html/pro/admin/view/template/catalog/category_form.tpl on line 57
 
Что мне сделать, чтобы все работало? Заранее спасибо. Я, конечно, чайник, но благодаря хорошим инструкциям надеюсь справиться.
 
 
Надіслати
Поділитися на інших сайтах


  • 1 month later...

подскажите пожалуйста, а как этот модуль увязать с модулем export import товаров? не экспортирует новую колонку и естественно при импорте все затирает

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


  • 3 weeks later...
  • 1 month later...

 

для версии 1.5.4.1 чуть по другому в модели

файл admin\model\catalog\category.php

 

13 строка

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "',description1 = '" . $this->db->escape($value['description1']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

и 47 строка

$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "', description1 = '" . $this->db->escape($value['description1']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

сделал как написано но выдает

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /home/smartsto/smart-store.com.ua/www/vqmod/vqcache/vq2-admin_model_catalog_category.php on line 156

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


Есть проблема!!!!

Если в категории нет товаров, то нижний текст со второй категории не появляется, а надо

Можно както изменить?

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


  • 5 months later...

Спасибо огромнейшее! Все получилось (ocStore 1.5.4.1).

 

 

Делала все по инструкции. Дополнительное поле для описания категории в админке появилось. Но пишет ошибку Notice: Undefined index: description1 in /home/ninas/public_html/pro/admin/view/template/catalog/category_form.tpl on line 57   в самом поле для описания.  

 

На страницу магазина дополнительное описание категории выводится внизу, как и хотела. Но в самом верху страницы выдает кучу ошибок:

 

Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259Notice: Undefined index: description1 in /home/ninas/public_html/pro/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 259
 
В категориях, где нету товара, этой кучи ошибок нет.  
 
При повторной попытке редактировать описание категории дополнительного описания нету. Вместо этого описания ошибка:
Notice: Undefined index: description1 in /home/ninas/public_html/pro/admin/view/template/catalog/category_form.tpl on line 57
 
Что мне сделать, чтобы все работало? Заранее спасибо. Я, конечно, чайник, но благодаря хорошим инструкциям надеюсь справиться.

 

 

Нужно добавить в admin/model/category/category.php, там где:

foreach ($query->rows as $result) {
			$category_description_data[$result['language_id']] = array(

Строку:

'description1'     => $result['description1']

В файле admin/language/russian/catalog/category.php надо добавить:

$_['entry_description1']     = 'Подробное описание:';

И ошибок не будет, вроде ничего не забыл.

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


  • 3 months later...

Доброго дня.

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

Notice: Error: Unknown column 'description1' in 'field list'
Error No: 1054
INSERT INTO 1category_description SET category_id = '93', language_id = '1', name = 'Консоль', meta_keyword = '', meta_description = '', description = '',description1 = '', seo_title = '', seo_h1 = '' in /var/www/leva1981/data/www/______.ru/system/database/mysql.php on line 49

 

Поле "description1" в базе mysql есть, удалял и добавлял раздел несколько раз, ошибка остается:

Ошибка

SQL-запрос:

ALTER TABLE `oc_category_description` ADD `description1` INT( 11 ) NOT NULL

Ответ MySQL: b_help.png

#1060 - Duplicate column name 'description1'

 

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

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


  • 1 month later...

Для чистого OpenCart 1.5.4

 

В /admin/model/catalog/category.php

 

Строка 13 заменить на:

		$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "', description1 = '" . $this->db->escape($value['description1']) . "'");

Строка 47 заменить на:

		$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_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']) . "', description1 = '" . $this->db->escape($value['description1']) . "'");

После:

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

Добавить:

'description1'      => $result['description1']
Надіслати
Поділитися на інших сайтах

  • 4 weeks later...

Спасибо большое, этот вариант подошел для версии 1.5.5.1.2 сборки оксторе.

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


и еще добавил кусок кода для CKEDITOR 

CKEDITOR.replace('description1<?php echo $language['language_id']; ?>', {
	language: '<?php echo $lang; ?>',
	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; ?>'
});

Забыли тут в теме для не знающих еще добавить, куда это добавлять.

 

з.ы добрый человек подсказал что в файл  category_form.tpl

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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