Новости Joomla

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

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

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

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

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

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

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
  • 1579
  • 185 / 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
  • 10451
  • 863 / 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
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Прикрепление файла и текстбокс
« Ответ #18 : 16.12.2013, 18:25:23 »
если свободные атрибуты то есть такое решение
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор r0m4n

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

Автор Dorfman

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

Автор spmash

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

Автор Modis

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

Автор crack

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