0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 4097 Просмотров
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Доброго времени суток!

Во-первых, хотел бы поблагодарить создателей за титанический труд по созданию, имхо, лучшего интернет-магазина для Joomla! Испробовал VM и Tienda, - остановился на JS как на наиболее сбалансированном и продуманном.

Теперь к сути.
Магазин для заказа сувенирной продукции с фото клиента.
В связи с чем необходимы следующие атрибуты на этапе заказа (страница товара):
1. Поле прикрепление файла (в идеале, несколько). Реализации не нашел.
2. Поле текстбокса для ввода клиентом произвольного текста (необходимо для задания пользовательских подписей к фотографиям). Реализацию наблюдаю здесь: http://www.maxx-marketing.online.de/joomla-shop/en/shop/cars/coupe.html в качестве поля "Title".

Скажите, пожалуйста, как это счастье реализовать?
Кода и доработок вручную не боюсь.

Буду очень признателен за помощь!
*

victorantoniak

  • Moderator
  • 1534
  • 182 / 2
  • JoomShopping Team
Re: Прикрепление файла и текстбокс
« Ответ #1 : 07.07.2011, 19:23:01 »
1. Нужно дописывать
2.
administrator/index.php?option=com_jshopping&controller=config&task=adminfunction - включите "Free attributes"

administrator/index.php?option=com_jshopping&controller=freeattributes - добавляйте нужное
и активируйте в продукте
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #2 : 07.07.2011, 20:29:43 »
1. Ок, буду пробовать, если Вы не против.
2. О! Надо лечить косоглазие. Большое спасибо!
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #3 : 09.07.2011, 02:09:05 »
Уважаемый victorantoniak!

Прошу помощи!
Больше суток мучаюсь - моих познаний не достаточно.
Необходим компонент прикрепления файла на этапе страницы товара (т.е., чтобы к каждому товару можно было прикрепить файл)

Готов оплатить Ваши труды!

Жизненно необходима такая доработка!
Заранее благодарю!
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #4 : 11.07.2011, 04:31:29 »
2 victorantoniak

Не даёт отправить сообщение.

Сабж: дорого.
Есть мотивация мучиться самому.
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #5 : 11.07.2011, 06:46:44 »
Прикрепление файла реализовано.
victorantoniak, спасибо за стимул :)

если кому-то нужно, и разработчик не будет против, выложу код
*

alexdolg1967

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #6 : 04.08.2011, 14:03:28 »
очень нужно - так как прикрепить файл с возможностью скачки не получается.... выдает 404-страницу   ;D
*

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Re: Прикрепление файла и текстбокс
« Ответ #7 : 04.08.2011, 20:17:34 »
Цитировать
если кому-то нужно, и разработчик не будет против, выложу код
Конечно выкладывайте. Глядишь , может быть, в какой из следующих версий Ваш код появиться в стандартном дистрибутиве магазина.
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #8 : 14.08.2011, 17:56:46 »
Коллеги, письма читаю, просто очень занят.
Постараюсь сегодня ночью выложить своё решение.
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #9 : 15.08.2011, 11:58:01 »
Ночь не удалась...

Итак.
Задача: реализовать возможность загрузки файлов пользователем на этапе заказа позиции (Добавить в корзину)

Не мудрствуя лукаво (и, к слову, на момент открытия этой темы, не зная php), я подумал, что наиболее разумным будет использовать уже имеющиеся в магазине возможности.
1. Есть библиотека загрузки файлов (/components/com_jshopping/lib/uploadfile.class.php)
2. Есть так называемые свободные атрибуты, которые прекрасно скрываются от глаз пользователей.
Поэтому, этим и будем пользоваться, дабы не изобретать велосипед.

Файл 1: Шаблон страницы позиции находится тут: /components/com_jshopping/templates/default/product/product_default.php
Файл 2: Контроллер добавления позиции в корзину находится тут: /components/com_jshopping/controllers/cart.php

1. Создаем свободный атрибут "Файл" (file) (в нём, в скрытом виде, мы будем передавать имя загруженного файла куда угодно)
2.1. В файл1 прописываем
Код
<input type="file" name="file" />
в любое удобное Вам место. (это поле загрузки файла у пользователя на фронтэнде)
2.2. Туда же, вместо
Код
<td width="110"><?php print $freeattribut->name;?> <?php if ($freeattribut->required){?><span>*</span><?php }?></td> 
<td><input type="text" class="inputbox" size="40" name="freeattribut[<?php print $freeattribut->id?>]" value="" /></td>
пишем:
Код
<?php if ($freeattribut->name=="Файл") {?> 
<td><input type="hidden" class="inputbox" size="40" name="freeattribut[<?php print $freeattribut->id?>]" value="af33cc0cf625db880fa28" /></td>
<?php }
else {?>
<td width="110"><?php print $freeattribut->name;?> <?php if ($freeattribut->required){?><span>*</span><?php }?></td>
<td><input type="text" class="inputbox" size="40" name="freeattribut[<?php print $freeattribut->id?>]" value="" /></td>
<?php } ?>
(Проверяем, если нужный нам свободный атрибут, созданный на этапе 1, присутствует, скрываем его и запихиваем в него какое-либо значение, желательно, такое, что просто так и не воспроизвести. Запоминаем его, оно нам понадобиться.)
3. В файл2 прописываем:
3.1. В функцию add(), после хэдера, но до строки
Код
$product_id = JRequest::getInt('product_id');
(!), мы прописываем нашу заливку:
Код
require_once ($jshopConfig->path.'lib/uploadfile.class.php');
$upload = new UploadFile($_FILES['file']);
$upload->setDir("orderfiles");
$upload->setNameWithoutExt($order_id);
if ($upload->upload()){
  $filelink = $upload->getName();
}
(Функция загрузки файла, последующего его переименования (расширение остается) и запихивания имени в переменную)
3.2. Сразу после
Код
$freeattribut = JRequest::getVar("freeattribut"); if (!is_array($freeattribut))
, добавляем:
Код
if ($filelink != "") {
$freeattribut = str_replace("af33cc0cf625db880fa28", $filelink, $freeattribut);  
}
else {
$freeattribut = str_replace("af33cc0cf625db880fa28", "нет", $freeattribut);  
}

(здесь мы в общем массиве данных атрибутов меняем то самое неполиткорректное выражение из пункта 2 на имя файла, если, конечно, он вообще был загружен)

В общем-то всё.
Далее уже идут навороты: проверка размера и расширений файлов, монтаж ссылок из имени файла и т.п.. Самое основное, вроде, не забыл)))

Вопросы будут - пишите.
*

seredaav

  • Новичок
  • 2
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #10 : 11.12.2011, 15:02:39 »
Внес все изменения в файлы как описано. Вроде бы поле для загрузки файлы появилось, но не ясно куда загружаются файлы? В корзине пишет "Файл : нет". Таким образом, как я понимаю, файл вообще не загружается? Ошибок не выдает, что файл не загружен. В файле uploadfile.class.php может нужно что изменять?
В файле product_default.php:
Код
       <?php if (count($this->product->freeattributes)){?>
        <div class="prod_free_attribs">
          <table class = "jshop">
            <?php foreach($this->product->freeattributes as $freeattribut){?>
            <tr>
<?php if ($freeattribut->name=="Файл") {?>
<td>Ваша картинка<input type="hidden" class="inputbox" size="50" name="freeattribut[<?php print $freeattribut->id?>]" value="af33cc0cf625db880fa28" /></td>
<td><input type="file" name="file" /></td>
<?php }
else {?>
<td width="50"><?php print $freeattribut->name;?> <?php if ($freeattribut->required){?><span>*</span><?php }?></td>
<td><input type="text" class="inputbox" size="40" name="freeattribut[<?php print $freeattribut->id?>]" value="" /></td>
<?php } ?>
            </tr>
            <?php }?>
          </table>
          <?php if ($this->product->freeattribrequire) {?>
          <div class="requiredtext">* <?php print _JSHOP_REQUIRED?></div>
          <?php }?>
        </div>
        <?php }?>
В файле cart.php:
Код
    function add(){
        header("Cache-Control: no-cache, must-revalidate");
        $jshopConfig = &JSFactory::getConfig();
        if ($jshopConfig->user_as_catalog) return 0;

        $ajax = JRequest::getInt('ajax');
require_once ($jshopConfig->path.'lib/uploadfile.class.php');
$upload = new UploadFile($_FILES['file']);
$upload->setDir("orderfiles");
$upload->setNameWithoutExt($order_id);
if ($upload->upload()){
  $filelink = $upload->getName();
}
        $product_id = JRequest::getInt('product_id');
        $category_id = JRequest::getInt('category_id');
        $quantity = JRequest::getInt('quantity',1);
        $to = JRequest::getVar('to',"cart");
        if ($to!="cart" && $to!="wishlist") $to = "cart";
Код
        $freeattribut = JRequest::getVar("freeattribut");
        if (!is_array($freeattribut))        
        if ($filelink != "") {
$freeattribut = str_replace("af33cc0cf625db880fa28", $filelink, $freeattribut);  
}
else {
$freeattribut = str_replace("af33cc0cf625db880fa28", "нет", $freeattribut);  
}
$freeattribut = array();
Может что-то не туда вставил, так как в php не силен :(
« Последнее редактирование: 11.12.2011, 18:04:49 от seredaav »
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #11 : 11.12.2011, 22:04:40 »
Делайте все точно так, как я написал, все описано максимально подробно.
Файлы заливаю в директорию "orderfiles"/
Директория прописывается в п.3:
Код
$upload->setDir("orderfiles");

Если сделали все так, как описано, но файл не загружается, проверьте права на папку (0777), максимальный размер файла для загрузки, - и дожидайтесь уведомления о том, что товар добавлен в корзину.
*

seredaav

  • Новичок
  • 2
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #12 : 12.12.2011, 00:42:39 »
Да вроде бы сделал все так, как и написано. не работает все равно. Могли бы Вы скинуть Ваши файлы product_default.php и cart.php для сравнения? Спасибо.
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #13 : 12.12.2011, 01:56:52 »
В файлах больше ничего не менял
Сейчас проверил, все сходится.
Проверьте листинг кода, где-то допустили ошибку.
*

sandr62

  • Новичок
  • 5
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #14 : 16.12.2012, 17:37:15 »
А как то же самое сделать в шаблоне на DIV-ах?
*

nevigen

  • Moderator
  • 10262
  • 855 / 25
  • http://n*****n.com
Re: Прикрепление файла и текстбокс
« Ответ #15 : 16.12.2012, 17:41:23 »
точно также вставив все это на нужные места шаблона.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

antoxa7

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #16 : 24.11.2013, 15:50:19 »
Для JoomShopping 4.4.0 те же действия нужно выполнять?

Не выходит ничего. Не появляется кнопка для выбора файла. (скриншот)
*

Agapofff

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Прикрепление файла и текстбокс
« Ответ #17 : 16.12.2013, 18:17:14 »
Для JoomShopping 4.4.0 те же действия нужно выполнять?

Не уверен, с 4.4.0 пока не работал.
Разумеется, многое могло поменяться, от местоположения файлов до включения библиотек.
Но есть же аддон от разработчиков, с его помощью эта проблема решается.

upd
мне кажется, вы создаете просто текстбокс, а не поле для выбора файла
*

nevigen

  • Moderator
  • 10262
  • 855 / 25
  • http://n*****n.com
Re: Прикрепление файла и текстбокс
« Ответ #18 : 16.12.2013, 18:25:23 »
если свободные атрибуты то есть такое решение
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расположение файла скрипта на сервере

Автор r0m4n

Ответов: 3
Просмотров: 275
Последний ответ 12.12.2019, 16:32:28
от kit2m2
Добавление файла покупателем!

Автор Dorfman

Ответов: 2
Просмотров: 288
Последний ответ 29.03.2019, 08:22:14
от Dorfman
Как изменить поведение функции sendmail из файла ordermail.php через аддон?

Автор spmash

Ответов: 2
Просмотров: 507
Последний ответ 29.04.2018, 09:11:03
от nevigen
Вложение файла в письмо при покупке

Автор Modis

Ответов: 10
Просмотров: 998
Последний ответ 22.04.2017, 19:13:27
от dmitry_stas
вместо загрузки файла ссылка

Автор crack

Ответов: 5
Просмотров: 802
Последний ответ 03.02.2016, 13:01:16
от nevigen