Интернет магазин

InstantCMS 2.X
#1 3 мая 2022 в 22:29

Приветствую! Ребят кто разумеющие — подскажите пожалуйста как в интернет магазине (https://instantcms.ru/addons/shop-for-instantcms.html) в поля оформления заказа добавить свой тип поля — подгрузка файла? В стандартных имеющихся такого нет (доступны только текстовое, флажок, телефон, список).

Заранее благодарю за помощь и уделенное время! Всем труженникам кодерам — респект!

#2 4 мая 2022 в 08:19

Вероятно сюда добавить нужный тип. Но файлы грузит могут только авторизованные пользователи. «Гостям» это недоступно.

#3 4 мая 2022 в 09:22

 Loadырь, приветствую! Благодарю за обратную связь! В это место добавлял на 211 строку

  1. 'file' => 'Файл',

но по факту это ничего не дало, в админке в настройках полей для оформления заказа появилось поле «Файл» и добавилось — но оно не функционирует полностью. Предположил, что параллельно также нужно в ./templates/default/controllers/showcase/fields/cart_fields создать файл с именем file и прописать там всё необходимое по input — так как в этой папке лежат все шаблоны полей интернет магазина. Но что вот прописать в этом файле — хз ((((( что только не пробовали, всё какая-то ересть выходит 😀

А если просто только добавить 'file' => 'Файл', в /system/controllers/showcase/frontend.php то итог получается такой (на скрине)

Изображение

#4 4 мая 2022 в 12:02

Да, нужен файлик шаблона для file. Сожержимое может быть таким же, как в этом без 3-7 строки и тип — file

  1. <?php
  2. $value = !empty($values[$field['name']]) ? $values[$field['name']] : '';
  3. ?>
  4. <input
  5. id="<?php html($field['name']); ?>"
  6. name="<?php html($field['name']); ?>"
  7. <?php if (!empty($field['is_fixed'])){ ?>required <?php } ?>
  8. <?php if ($field['attributes'] && is_array($field['attributes'])){ ?>
  9. <?php foreach ($field['attributes'] as $key => $val){ ?>
  10. <?php if ($key == 'id' || $key == 'name'){ continue; } ?>
  11. <?php html($key); ?>="<?php html($val); ?>"
  12. <?php } ?>
  13. <?php } ?>
  14. type="file"
  15. value="<?php html($value); ?>"
  16. />
  17. <style>.sc_cField_value #<?php html($field['name']); ?>{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style>
#5 4 мая 2022 в 13:31

Да, нужен файлик шаблона для file. Сожержимое может быть таким же, как в этом без 3-7 строки и тип — file

  1. <?php
  2. $value = !empty($values[$field['name']]) ? $values[$field['name']] : '';
  3. ?>
  4. <input
  5. id="<?php html($field['name']); ?>"
  6. name="<?php html($field['name']); ?>"
  7. <?php if (!empty($field['is_fixed'])){ ?>required <?php } ?>
  8. <?php if ($field['attributes'] && is_array($field['attributes'])){ ?>
  9. <?php foreach ($field['attributes'] as $key => $val){ ?>
  10. <?php if ($key == 'id' || $key == 'name'){ continue; } ?>
  11. <?php html($key); ?>="<?php html($val); ?>"
  12. <?php } ?>
  13. <?php } ?>
  14. type="file"
  15. value="<?php html($value); ?>"
  16. />
  17. <style>.sc_cField_value #<?php html($field['name']); ?>{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style>
Loadырь

Да, такую конструкцию пробовали в первую очередь, но в итоге получили что после завершения заказа (на странице просмотра заказа) загруженный  файл отображается как C:\fakepath\kartinka.zip 🧐

Тут походу еще чет нужно толи  в файле \templates\default\controllers\showcase\order_view.tpl.php колдавать, толи файл всё-таки не загрузился (во всяком случае не смог найти его на сервере нигде)... 

Посмотрел сейчас в БД в таблице заказов тоже значение поля записано как file: C:\fakepath\kartinka.zip значит загрузка не прошла видимо

Добавлено спустя 3 минуты

Советуют посмотреть в эту сторону https://makitweb.com/how-to-upload-image-file-using-ajax-and-jquery/ но не пойму что там полезного конкретно для этого случая 👀

#6 5 мая 2022 в 17:00

почему вместо загрузки файла и соответственно записи нормального пути заливается эта дрянь file: C:\fakepath\kartinka.zip? 😆

#7 5 мая 2022 в 17:22

 Baza, так браузер передает сайту данные о поле загрузки. А сам файл передается отдельно.

#8 5 мая 2022 в 17:34

 Zau4man, приветствую! Проблема в том что и сам файл на сервер как будто не загрузился. Во всяком случае сделал поиск по серверу по имени файла — не нашел загруженного файла, вручную тоже перешерстил папки куда логически мог прийти файл — тоже ничего на нашел. А после оформления заказа в карточке заказа вместо самого файла тоже показывается «C:\fakepath\kartinka.zip»

#9 5 мая 2022 в 19:26

Проблема в том что и сам файл на сервер как будто не загрузился.

Baza

Не загрузился, потому что вы вывели только поле в форму заказа. Но у вас это поле не обрабатывается с остальными полями. Так как этого поля нет в классе поля github.com/my-instantcms/icms2_showcase/blob/master/package/system/controllers/showcase/forms/form_preorder.php.

#10 5 мая 2022 в 19:50

 Loadырь, form_preorder.php. — это же вроде как форма предзаказа, которая при заказе не используется вообще, каков смысл вносить в неё что-либо, если форма заказа работает даже при удаленном этом файле вообще?

#11 5 мая 2022 в 19:52

Тогда всё ещё печальнее. Какое название у формы в которую пытаетесь вставить файл. Аттрибуты id и name у формы в исходном коде какие?

#12 5 мая 2022 в 20:02

 Loadырь, стандартная страница корзины в адресной строке значится как /showcase/cart/2 фрагмент исходного кода приложил

  1. ...........................
  2. <span itemprop="name">
  3. Корзина </span>
  4. </a>
  5. <meta itemprop="position" content="3" />
  6. </li>
  7. <li class="breadcrumb-item active d-none d-lg-inline-block" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  8. <span itemprop="name">
  9. Поля контакты покупателя </span>
  10. <meta itemprop="position" content="4" />
  11. </li>
  12. </ol> </div>
  13. </div>
  14. </div>
  15. <section class="container">
  16. <main class="row">
  17. <article class="col-lg order-2 mb-3 mb-md-4">
  18. <h1 id="sc_cart_title">Корзина (1 товар)</h1>
  19. <div class="sc_cart_fields wd_sc_cart sc_style_big">
  20. <div class="sc_cart_field sc_field_name">
  21. <div class="sc_cField_title">
  22. <label for="name">Заказчик</label>
  23. <span>Укажите Ф.И.О. для физ. лица, или наименование и ОГРН для юр. лица, ИП</span> </div>
  24. <div class="sc_cField_value">
  25.  
  26. <input
  27. id="name"
  28. name="name"
  29. required type="text"
  30. value=""
  31. />
  32. <style>.sc_cField_value #name{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style> </div>
  33. </div>
  34. <div class="sc_cart_field sc_field_vidlica">
  35. <div class="sc_cField_title">
  36. <label for="vidlica">Вид лица</label>
  37. </div>
  38. <div class="sc_cField_value">
  39. <select
  40. id="vidlica"
  41. name="vidlica"
  42. >
  43. <option value="fl" selected>Физическое лицо</option>
  44. <option value="yul" >Юридическое лицо, ИП</option>
  45. </select>
  46. <style>.sc_cField_value #vidlica{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none;height: auto;box-shadow: none;}</style> </div>
  47. </div>
  48. <div class="sc_cart_field sc_field_email">
  49. <div class="sc_cField_title">
  50. <label for="email">Электронная почта</label>
  51. </div>
  52. <div class="sc_cField_value">
  53.  
  54. <input
  55. id="email"
  56. name="email"
  57. required type="email"
  58. type="text"
  59. value=""
  60. />
  61. <style>.sc_cField_value #email{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style> </div>
  62. </div>
  63. <div class="sc_cart_field sc_field_paid">
  64. <div class="sc_cField_title">
  65. <label for="paid">Способ оплаты</label>
  66. </div>
  67. <div class="sc_cField_value">
  68.  
  69. <select
  70. id="paid"
  71. name="paid"
  72. >
  73. <option value="0" selected>Прислать счет на оплату</option>
  74. <option value="1">С баланса аккаунта (Ваш баланс: 5060)</option>
  75. </select>
  76. <style>.sc_cField_value #paid{width:100%;padding:6px 8px;border:1px solid #FFC107;background:#fbee81;outline:none;height: auto;box-shadow: none;color:#a06200}.sc_field_payment{background:#fdf292;border:1px solid #f1dc27;color:#d8860e;padding:10px}</style>
  77. </div>
  78. </div>
  79. <div class="sc_cart_field sc_field_agreement">
  80. <div class="sc_cField_value">
  81. <label><input
  82. id="agreement"
  83. name="agreement"
  84. required checked=""
  85. type="checkbox"
  86. value=""
  87. />
  88. <span class="checkmark"></span> Согласен на обработку <a href="/pagessi/3-politika-konfidencialnosti.html" target="_blank">Персональных данных</a></label><style>
  89. .sc_field_agreement .sc_cField_value label{
  90. display: block;
  91. position: relative;
  92. padding-left: 35px;
  93. height: 25px;
  94. line-height: 26px;
  95. margin-bottom: 0;
  96. cursor: pointer;
  97. font-size: 14px;
  98. -webkit-user-select: none;
  99. -moz-user-select: none;
  100. -ms-user-select: none;
  101. user-select: none;
  102. }
  103.  
  104. .sc_field_agreement .sc_cField_value label input {
  105. position: absolute;
  106. opacity: 0;
  107. cursor: pointer;
  108. height: 0;
  109. width: 0;
  110. }
  111.  
  112. .sc_field_agreement .sc_cField_value label .checkmark {
  113. position: absolute;
  114. top: 0;
  115. left: 0;
  116. height: 25px;
  117. width: 25px;
  118. background-color: #eee;
  119. }
  120.  
  121. .sc_field_agreement .sc_cField_value label:hover input ~ .checkmark {
  122. background-color: #ccc;
  123. }
  124.  
  125. .sc_field_agreement .sc_cField_value label input:checked ~ .checkmark {
  126. background-color: #2196F3 !important;
  127. }
  128.  
  129. .sc_field_agreement .sc_cField_value label .checkmark:after {
  130. content: "";
  131. position: absolute;
  132. display: none;
  133. }
  134.  
  135. .sc_field_agreement .sc_cField_value label input:checked ~ .checkmark:after {
  136. display: block;
  137. }
  138.  
  139. .sc_field_agreement .sc_cField_value label .checkmark:after {
  140. left: 9px;
  141. top: 5px;
  142. width: 5px;
  143. height: 10px;
  144. border: solid white;
  145. border-width: 0 3px 3px 0;
  146. -webkit-transform: rotate(45deg);
  147. -ms-transform: rotate(45deg);
  148. transform: rotate(45deg);
  149. }
  150. </style> </div>
  151. </div>
  152. <div class="sc_cart_field sc_field_file">
  153. <div class="sc_cField_title">
  154. <label for="file">Файл</label>
  155. </div>
  156. <div class="sc_cField_value">
  157. <input
  158. id="file"
  159. name="file"
  160. type="file"
  161. type="file"
  162. value=""
  163. />
  164. <style>.sc_cField_value #file{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style> </div>
  165. </div>
  166. <br />
  167. <div class="wd_scl_footer">
  168. <div class="wd_sclf_summ">
  169. <span>Итого: </span>
  170. <b>
  171. 30 руб. </b>
  172. </div>
  173. <a class="wd_sclf_checkout"
  174. rel="nofollow"
  175.  
  176. onClick="scValidateCartForm(this)"
  177. >Оформить заказ</a>
  178. </div></div>
  179. </article>
  180. </main>
  181. </section>
#13 5 мая 2022 в 20:50

стандартная страница корзины

Baza

Жутька жуткая. А где в коде строка начинающаяся на "<form ....>"?

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

Похожие темы

Интернет магазин

Компоненты Создана 4 года назад 9 сообщений

Яндекс убивает Интернет магазин

Компоненты Создана 3 года назад 29 сообщений

Интернет магазин

Компоненты Создана 3 года назад 5 сообщений

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