InstantShop подробное описание товара

InstantCMS 1.X
#1 1 февраля 2023 в 12:25

Здравствуйте. Подскажите, как можно сделать копию подробного описания. Т.е. мне нужно, что бы на карточке товара было два\три таких блока с разным описанием. Понимаю что теоретически нужно скопировать код и создать ячейки в базе данных (если правильно выражаюсь), но далека от этого. Буду благодарна за помощь.

#2 1 февраля 2023 в 16:20

Здравствуйте. Подскажите, как можно сделать копию подробного описания. Т.е. мне нужно, что бы на карточке товара было два\три таких блока с разным описанием. Понимаю что теоретически нужно скопировать код и создать ячейки в базе данных (если правильно выражаюсь), но далека от этого. Буду благодарна за помощь.

Полина Емелина

Так еще пару полей создайте — это если разные описания у одного товара. Ели одинаковое, то просто вывести одно и тоже поле ещё пару раз в шаблоне записи или списка. 

#3 1 февраля 2023 в 17:18

поля разные, но как сделать не знаю, копирования одной формы в админке явно недостаточно

#4 1 февраля 2023 в 19:30

поля разные, но как сделать не знаю, копирования одной формы в админке явно недостаточно

Полина Емелина

В настройках типа контента есть вкладка поля, там есть кнопка создать поле 

#5 1 февраля 2023 в 20:03

 Happy, речь идёт о старой (первой) ветке Instantcms, там немного по-другому устроено, понятия «типы контента» там нет, есть компоненты, модули, плагины и конструктор форм.

#6 1 февраля 2023 в 20:37

 Happy, речь идёт о старой (первой) ветке Instantcms, там немного по-другому устроено, понятия «типы контента» там нет, есть компоненты, модули, плагины и конструктор форм.

Нил™

 Сорян, не обратил внимание на ветку в вопросе . 

#7 1 февраля 2023 в 20:37

там есть кнопка создать поле

Happy

Да, только выглядит и работает она немного иначе. 

Полина Емелина, открываете файл admin\components\shop\backend.php

ищете строки с кодами и дублируете их сколько надо раз с переименованием слов description и show_full_desc

  1. <div style="margin-top:12px"><strong>Подробное описание</strong></div>
  2. <div><?php $inCore->insertEditor('description', $mod['description'], '400', '100%'); ?></div>
  3. ...
  4.  
  5. <tr>
  6. <td><strong>Показывать подробное описание: </strong></td>
  7. <td>
  8. <input name="show_full_desc" type="radio" value="1" <?php if (@$cfg['show_full_desc']) { echo 'checked="checked"'; } ?>/> Да
  9. <input name="show_full_desc" type="radio" value="0" <?php if (@!$cfg['show_full_desc']) { echo 'checked="checked"'; } ?>/> Нет
  10. </td>
  11. </tr>
  12. ...
  13.  
  14. <option value="description">Подробное описание</option>

Это добавит поля в форму товара.

Затем в файле вашего шаблона templates\_default_\components\com_inshop_item.tpl выводите эти поля дублированием этих строк (не забываем про переименование слов на те, что добавляли ранее)

  1. {if $cfg.show_full_desc}
  2. <div class="description">{$item.description}</div>
  3. {/if}
  4.  

И потом надо создать столбцы в базе данных в таблице «префикс_таблиц»_shop_items с теми названиями, что вы придумали в файле backend.php

#8 2 февраля 2023 в 14:53

Решила взять за основу разновидности товара, уж очень удобно если что добавлять любое кол-во. И вроде даже разобралась, но вот в чем проблема. Мне нужно что бы там был редактор, даже добавила, но у меня в каждом текстовом полне одно и тоже значение (((

  1. <input type="text" name="vars_title[]" style="width:99%" value="<?php echo htmlspecialchars($var['title']); ?>" />

 Сверху оригинал (из функции разновидности товара)
Снизу как сделала я (взяла код из подробного писания) в базе поменяла тип на longtext

  1. <?php $inCore->insertEditor('vars_title[]', $var['title[]'], '400', '100%'); ?>

Подскажите что я сделала не так? :(

Изображение

#9 2 февраля 2023 в 17:14

Подскажите что я сделала не так? :(

Полина Емелина

Не перешли на двойку :)

#10 2 февраля 2023 в 18:24

Подскажите что я сделала не так? :(

Полина Емелина

Не перешли на двойку :)

Loadырь

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

Вот полный код. Подскажите что поменять, что бы поле «название» было с редактором и многострочное.Готова оплатить.

  1. <div style="margin-top:10px"><strong>Разновидности товара</strong></div>
  2. <div style="padding:5px;background:#ECECEC;margin-top:10px;margin-bottom:10px;margin-right:0px;">
  3.  
  4. <table border="0" cellpadding="5" cellspacing="0" width="100%" id="variants">
  5. <tr>
  6. <td width="53">Артикул</td>
  7. <td>Название</td>
  8. <td width="63">Цена</td>
  9. <td width="63">На складе</td>
  10. <td width="17" class="char_del">&nbsp;</td>
  11. </tr>
  12. <?php if (!$mod['vars']){ ?>
  13. <tr class="var">
  14. <td><input type="text" name="vars_art_no[]" style="width:50px" /></td>
  15. <td><input type="text" name="vars_title[]" style="width:99%" /></td>
  16. <td><input type="text" name="vars_price[]" style="width:60px" /></td>
  17. <td><input type="text" name="vars_qty[]" style="width:60px" /></td>
  18. <td width="17" class="char_del">
  19. <a href="javascript:" onclick="deleteVariant(this)" title="Удалить вариант">
  20. <img src="/admin/images/actions/delete.gif" alt="Удалить вариант" border="0">
  21. </a>
  22. </td>
  23. </tr>
  24. <?php } else { ?>
  25. <?php foreach($mod['vars'] as $var){?>
  26. <tr class="var">
  27. <td><input type="text" name="vars_art_no[]" style="width:50px" value="<?php echo htmlspecialchars($var['art_no']); ?>" /></td>
  28. <td><input type="text" name="vars_title[]" style="width:99%" value="<?php echo htmlspecialchars($var['title']); ?>" /></td>
  29. <td><input type="text" name="vars_price[]" style="width:60px" value="<?php echo htmlspecialchars($var['price']); ?>" /></td>
  30. <td><input type="text" name="vars_qty[]" style="width:60px" value="<?php echo htmlspecialchars($var['qty']); ?>" /></td>
  31. <td width="17" class="char_del">
  32. <a href="javascript:" onclick="deleteVariant(this)" title="Удалить разновидность">
  33. <img src="/admin/images/actions/delete.gif" alt="Удалить разновидность" border="0">
  34. </a>
  35. </td>
  36. </tr>
  37. <?php } ?>
  38. <?php } ?>
  39. </table>
  40.  
  41. <script type="text/javascript">
  42. updateVariants();
  43. </script>
  44.  
  45. <div style="margin:5px;margin-bottom:10px;">
  46. <a href="javascript:addVariant()">Добавить разновидность</a>
  47. </div>
  48. </div>
  49.  
#11 2 февраля 2023 в 18:47

Строку 

  1. <td><input type="text" name="vars_title[]" style="width:99%" /></td>

заменить на 

  1. <td><textarea name="vars_title[]" style="width:99%"></textarea></td>
  2. или на
  3. <td><?php $inCore->insertEditor('vars_title[]', '', '400', '100%'); ?></td>

И строку 

  1. <td><input type="text" name="vars_title[]" style="width:99%" value="<?php echo htmlspecialchars($var['title']); ?>" /></td>

На это

  1. <td><textarea name="vars_title[]" style="width:99%"><?php echo htmlspecialchars($var['title']); ?></textarea></td>
  2. или на
  3. <td><?php $inCore->insertEditor('vars_title[]', $var['title'], '400', '100%'); ?></td>
#12 2 февраля 2023 в 19:37

к сожалению проблема та же, что и на картнике выше. Начинает отображать одинаковое значение, даже если создаешь новое. Т.е. если в первом написать «123» этот же текст отображается во всех остальных, в т.ч. сразу при добавлении нового варианта. ((

Может как то отвечать фаил admin/backend.php ? Там упоминание vars_title тоже встречается 

#13 2 февраля 2023 в 19:56

Там скорее всего проблема в js. Откройте файл admin\components\shop\js\common.js

замените это 

  1. function addVariant(){
  2. $('table#variants tr').eq(1).clone().appendTo('table#variants').find('input').val('');
  3. if ($('table#variants tr.var').length > 1){
  4. $('table#variants td.char_del').show();
  5. }
  6. }

на что-то такое (пишу наугад)

  1. function addVariant(){
  2. var new_variant = $('table#variants tr').eq(1).clone().appendTo('table#variants');
  3. new_variant.find('input').val('');
  4. new_variant.find('textarea').html('');
  5. if ($('table#variants tr.var').length > 1){
  6. $('table#variants td.char_del').show();
  7. }
  8. }
#14 2 февраля 2023 в 20:17

В обычном варианте сработало, а вот те что с insertEditor не хочет

#15 2 февраля 2023 в 20:21

Тогда в этой строке

  1. new_variant.find('textarea').html('');

сделать так

  1. new_variant.find('textarea').html('').triggerHandler('change');

и обновить страницу с очисткой кэша в браузере

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.