Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Добавить поддержку html к полю attribute


Гость
 Поделиться

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

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

Тоесть сейчас на сайте необходимо реализовать атрибут - состав, где указано около 20 параметров товара, все эти данные есть в виде таблиц.

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

так а зачем там нтмл ? сделайте группу атрибутов состав

потом через импортэкспорт банально в экселе добавьте свои составы да и все к тому же они у Вас уже в таблицах

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

так а зачем там нтмл ? сделайте группу атрибутов состав

потом через импортэкспорт банально в экселе добавьте свои составы да и все к тому же они у Вас уже в таблицах

У товара порядка 20 параметров в составе, при том некоторые идут в подразделах. они все есть в виде таблиц что идут на упаковке продуктов. в данный момент атрибуты даже не поддерживают перенос на след строку :(
Ссылка на комментарий
Поделиться на других сайтах

ну наверно мы просто более уперты :-) и вдолбили руками

было бы 100 товаров вбил бы, а их 500 при том не у всех одно и тоже в составе)) придется ручками более 100 параметров вбивать
Ссылка на комментарий
Поделиться на других сайтах

Да :-) но это при заполнении товаров еще на старой версии :-) в итоге около 5000 товаров получилось около 100к характеристик к ним :-) на новую все удалось перенести без перезаполнения но первый раз пришлось все вбить

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

  • 3 недели спустя...

В файле admin/view/template/catalog/product_form.tpl

после строки

<script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script>
добавить строку

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

после блока

<?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 } ?>
добавить

$('#attribute textarea').ckeditor({
	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; ?>'
});

после строки

attributeautocomplete(attribute_row);
добавить

$('#attribute-row' + attribute_row + ' textarea').ckeditor({
		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; ?>'
	});
  • +1 6
Ссылка на комментарий
Поделиться на других сайтах

а вот немного сложный способ который позволяет забить атрибуты из таблиц этот способ хорош только при большом количестве товаров и их атрибутов

1)набиваем вручную несколько товаров с их атрибутами

2)экспортируем данные с помощью модуля import /export

3)INTERNET EXPLOREROM заходим на сайт к соторого хотим взять данные

4)Таблицу с названиями атрибутов и их значениями копируем и вставляем в эксел переходим к следующему товару и повторяем процедуру вторую таблицу вставляем под первой и так много раз

5) открываем таблицу экспортированную из опенкарт и вставляем в нужные столбцы те данные которые мы собрали в пункте 4

5.1)

6)в екселе включаем автофильтр и делаем фильтрацию по одному из названий атрибутов

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

7)пункт 6 выполняем для всех названий атрибутов

8) отключаем автофильтр и улаживаем вопрос с нумерацией product_id

9) переходим во вкладку products и под номером product_id который получила та или иная таблица вводим название товара который ей соответствует

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


  • 5 месяцев спустя...
  • 4 месяца спустя...
  • 2 месяца спустя...

Маленькое дополнение к посту от Yesvik.

Что бы наш html не превращался в обычный текст, а оставался html.

В файле admin/model/catalog/product.php

ищем строку

foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {

после нее добавляем

$product_attribute_description['text'] = html_entity_decode($product_attribute_description['text'], ENT_QUOTES, 'UTF-8');

По скольку <p> в редакторе вставляется везде, а после </p> у нас идет пустое место, то это не очень красиво смотрится, поэтому:

В файле catalog/view/theme/default/stylesheet/stylesheet.css нужно добавить в любое место или после.tab-content { ... }

.tab-content p { margin-bottom:0px; }

После .compare-info .price-new { ... } или в любое другое место добавляем

.compare-info p { margin-bottom: 0px; }

Таким образом мы задали отступ снизу для тэга p равный 0 (на странице продукта и странице сравнения).

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


  • 5 месяцев спустя...

Маленькое дополнение к посту от Yesvik.

Что бы наш html не превращался в обычный текст, а оставался html.

В файле admin/model/catalog/product.php

ищем строку

foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {
после нее добавляем

$product_attribute_description['text'] = html_entity_decode($product_attribute_description['text'], ENT_QUOTES, 'UTF-8');

 

В файле admin/model/catalog/product.php строка 

foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {

присутствует два раза. 

Добавлял также два раза. Ничего не произошло :(

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

  • 1 год спустя...

РЕСПЕКТОС - СРАБОТАЛО НА ОКСТОРЕ 1.5.5.1.2

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

  • 1 год спустя...

Если атрибуты закинули импортом в товары, то на странице отображается просто текстом всё.

Для того чтобы сразу появлялась html разметка в файле:

\catalog\view\theme\so-shoppystore\template\product\product.php

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

 

Перед 

<?php echo $attribute['text']; ?>

 

добавил

<?php
$attribute['text'] = html_entity_decode($attribute['text'], ENT_QUOTES, 'UTF-8');
?>
 
Данный вывод атрибута встречается три раза - для вывода в разных местах...
opencart 2.1 у меня
Ссылка на комментарий
Поделиться на других сайтах


  • 2 месяца спустя...
  • 5 месяцев спустя...
В 30.07.2012 в 20:17, Tom сказал:

На ocStore 2.1.0.2.1 не работает, а очень нужно. Может быть есть другие аналогичные решения?

 

В идеале, чтобы было как здесь (только там мод для опций)

Мод изменяет вывод опций картинок, теперь текст выводится при наведении тултипом

post-711086-0-05070900-1470162407_thumb.pngpost-711086-0-26449400-1470162420_thumb.png

 

То есть, чтобы атрибут не просто выводился картинкой, а еще при наведении на него выпадало бы подробное описание.

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


6 часов назад, Paint сказал:

На ocStore 2.1.0.2.1 не работает, а очень нужно. Может быть есть другие аналогичные решения?

 

Прошу прощения, работает. Не увидел редактора текста в поле Текст на вкладке Атрибуты в карточке товара и решил, что не работает. Прочитал инструкцию. Оказалось, редактор текста вызывается двойным кликом на поле Текст.

 

Подскажите пример HTML кода, чтобы было как на примере выше, т.е. при клике (или наведении) на картинку, чтобы выше в окошке текст с описанием выпадал.

post-711086-0-26449400-1470162420_thumb.png

Изменено пользователем Paint
Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
В 30.07.2012 в 21:17, Tom сказал:

Поставил этот модуль. Он работает, но с summernote. А в меня включен редактор CKEDITOR. Подскажите пожалуйста, что надо изменить чтобы вызывался редактор CKEDITOR.

 

<file path="admin/view/template/catalog/product_form.tpl">
    <operation>
        <search><![CDATA[
        <?php echo $footer; ?>
        ]]></search>
        <add position="before"><![CDATA[
        <script type="text/javascript"><!--
        function htmlProductAttribute(textarea) {
            if (!textarea.hasClass('htmlProductAttribute')) {
                textarea.addClass('htmlProductAttribute');
                textarea.tooltip({'title': 'Double Click for HTML'});
                textarea.on('dblclick', function() {
                    textarea.summernote({height: 100});
                    $('#attribute .note-editor.note-frame.panel').css('margin-bottom', '1px');
                });
            }
        }

        $('#attribute textarea[name^="product_attribute["]').each(function(i, e) {
            htmlProductAttribute($(this));
        });

        $('#attribute').on('click', function() {
            $(this).find('textarea[name^="product_attribute["]').each(function(i, e) {
                htmlProductAttribute($(this));
            });
        });
        //--></script>
        ]]></add>
    </operation>
</file>
<file path="catalog/model/catalog/product.php">
    <operation>
        <search><![CDATA[
        $product_attribute_data[] = array(
        ]]></search>
        <add position="before"><![CDATA[
        $product_attribute['text'] = html_entity_decode($product_attribute['text'], ENT_QUOTES, 'UTF-8');
        ]]></add>
    </operation>
</file>
</modification>

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


  • 1 месяц спустя...
В 23.12.2018 в 14:57, tadi сказал:

Поставил этот модуль. Он работает, но с summernote. А в меня включен редактор CKEDITOR. Подскажите пожалуйста, что надо изменить чтобы вызывался редактор CKEDITOR.

 

Удалось решить эту проблему? Я меня тоже CKEditor, который функциональнее summernote

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


Как мне объяснили, перевести на CKEditor сложно. Лучше сделать, чтобы к полям описания саммерноут не подцеплялся, а подцеплялся только к атрибутам. В общем будут работать оба редактора -  summernote на атрибуты, CKEditor  остальное. Но я пока решил не менять себе шаблон под такое.

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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