Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 7808 Просмотров
*

Alsabel

  • Новичок
  • 3
  • 0 / 0
Надеюсь, пишу в нужный раздел ^-^

VM 2.0.2, Joomla 2.5.4

Открываю, значит, Virtuemart->Настройки->Шаблоны. Ставлю галку "показывать производителей". Открываю продукт - ничего (производитель в карточке товара, разумеется, прописан).
 :o

Лезу в шаблон, там все в порядке:
Код
		<?php
// Manufacturer of the Product
if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) {
    $this->loadTemplate('manufacturer');
}
?>
Лежит в диве spacer-buy-area вместе с ценой, кнопкой добавления в корзину и так далее. Вроде ничего не ковырял в этом шаблоне, странно. Пробовал убрать проверку на галку, вдруг чего. Не помогло. Открываю manufacturer_default, в который я тоже не лез, и там тоже все на месте:
Код
<div class="manufacturer">
    <?php
    $link = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $this->product->virtuemart_manufacturer_id . '&tmpl=component');
    $text = $this->product->mf_name;

    /* Avoid JavaScript on PDF Output */
    if (strtolower(JRequest::getWord('output')) == "pdf") {
echo JHTML::_('link', $link, $text);
    } else {
?>
        <span class="bold"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL')?></span><a class="modal" rel="{handler: 'iframe', size: {x: 700, y: 550}}" href="<?php echo $link ?>"><?php echo $text ?></a>
    <?PHP } ?>
</div>

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

Спасибо.
*

Hlistdubovij

  • Захожу иногда
  • 63
  • 8 / 0
  • it-creativ.com
Joomla! 2.5.8 + VirtueMart 2.0.16 + шаблон квикстарт
1. Столкнулся с такой же проблемой:
    - Как вывести производителя в VirtueMart 2 или не выводится производитель в товаре VirtueMart 2
2. Решил добавить до кучи:
    - Как вывести артикул в VirtueMart 2 или как вывести артикул в (карточке) товара VirtueMart 2
    - Вывод названия производителя в списке товаров (в категории)
    - Вывод артикля в списке товаров (в категории) в VirtueMart 2
-----------

1. Все дело в использовании VirtueMart 2 - файлов шаблона, а не компонента. Особенно если вы ставили qvikstart.
Видимо разработчики забыли(ют) добавить(ять) строчки вывода производителя в PHP файл о продукте или делают это намеренно.

Скопировал кусок кода отвечающего за вывод производителя по этому пути:
ваш сайт/components/com_virtuemart/views/productdetails/tmpl/default.php   из файла  default.php
Код
<?php
// Manufacturer of the Product
if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) {
   echo $this->loadTemplate('manufacturer');
}
?>
И вставил в div класс отвечающий за вывод начальной информации о товаре по такому пути:
ваш сайт/templates/ваш шаблон/html/com_virtuemart/productdetails/  в файл default.php
<?php
// BEGIN Product Short Description
if (!empty($this->product->product_s_desc)) {
?>

<div class="bt_vm_pdet_short_desc"> (у вас класс естесн другой)
             < Вот сюда >
<div class="product-short-description">
-----------------------

2. Добавляем вывод артикля (кода) товара, ниже или выше  (по желанию)
вставленного нами нового куска кода - такой строчкой:
Код
Код товара: <?php echo $this->product->product_sku ?>

Вывод названия производителя в списке товаров (в категории) делаем так:
  - Редактируем файл default.php по такому пути ваш сайт/templates/ваш шаблон/html/com_virtuemart/category/
в моем шаблоне после строчки -                     <div class="bt_prices">
Код
<?php 
                        // BEGIN: Product Details Button
if (!empty($product->product_s_desc)) {
                         echo '<p class="bt_product_details_15">'.JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'bt_details_dark')).'</p>'; }else{
echo '<p class="bt_product_details_more">'.JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'bt_details_dark')).'</p>';
}
                        // END: Product Details Button
                        ?>
                            
                    </div>
                    
                    <div class="bt_prices">
вставил этот код
Код
<?php
if(!empty($product->mf_name)){
    $link = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $product->virtuemart_manufacturer_id . '&tmpl=component');
    $text = $product->mf_name;
 
    if (strtolower(JRequest::getWord('output')) == "pdf") {
          echo JHTML::_('link', $link, $text);
    } else {
?>
          <span class="bold"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_DETAILS_MANUFACTURER_LBL')?></span><a class="modal" rel="{handler: 'iframe', size: {x: 700, y: 550}}" href="<?php echo $link ?>"><?php echo $text ?></a>
<?php } } ?>
для вывода артикля в списке товаров (в категории) в VirtueMart 2 - также как и в товаре добавляем строчку:
Код
Код товара: <?php echo $this->product->product_sku ?>
ниже или выше  (по желанию) вставленного нами нового куска кода
--------------------
Если строчка артикля залазиет на строчку с производителем то можно подставить перед ней тег <br>  (т.е. пробел)
--------------------
P.S.
Не забывайте сохранять редактируемые файлы в кодировки UTF-8 (без BOM)
Всем отличных продаж!
« Последнее редактирование: 16.01.2013, 12:11:17 от Hlistdubovij »
*

Anas25

  • Новичок
  • 1
  • 0 / 0
У меня не получаеться вывести производителя, производитель создан и в карточке товара тоже указан производитель, вот мой код:

<?php
       // Product Short Description
       if (!empty($this->product->product_s_desc)) {
         ?>
         <div class="product-short-description">
           <?php
      // Manufacturer of the Product
      if (VmConfig::get('show_manufacturers', 1) && !empty($this->product->virtuemart_manufacturer_id)) {
      echo $this->loadTemplate('manufacturer');
      }
              ?>   
           <?php
                echo nl2br($this->product->product_s_desc);
         ?>
      </div>

Что я делаю не так?
*

Tyler_Durden

  • Осваиваюсь на форуме
  • 39
  • 3 / 0
Hlistdubovij +++  Все помогло!
*

Sergey170

  • Новичок
  • 3
  • 0 / 0
Подскажите почему у меня нет папки  com_virtuemart  если иду по пути   templates/ваш шаблон/html/com_virtuemart  :( :( VM стоит 2ой, ничего не понимаю, видимо у всех она там есть у меня нету(
*

Tyler_Durden

  • Осваиваюсь на форуме
  • 39
  • 3 / 0
Подскажите почему у меня нет папки  com_virtuemart  если иду по пути   templates/ваш шаблон/html/com_virtuemart  :( :( VM стоит 2ой, ничего не понимаю, видимо у всех она там есть у меня нету(
Если у Вас там ее нету, то скорее всего в шаблоне сайта используются стандартные формы Vituemart. Смотрите эти формы в сайт/components/com_virtuemart/views/productdetails/tmpl/default.php (для карточки товара). Можете также сделать поиск по папке с сайтом на запрос: com_virtuemart (автор шаблона мог затолкать эти формы куда угодно)
*

danem

  • Осваиваюсь на форуме
  • 15
  • 2 / 0
Здравствуйте, уважаемые форумчане.
После прочтение данной темы и темы с другого форума - http://joomla-support.ru/post164868.htm так, и не смог справится с проблемкой одновременного вывода описания и товаров производителя на одной странице. Захожу через меню, по ссылке на конкретного производителя. Фаил отвечающий за вывод производителя нашёл - /components/com_virtuemart/views/manufacturer/tmpl/default.php . очень хочу вывести товары производителя после его описания (или кода - строка 50):
Код
   <?php // Manufacturer Description
   if(!empty($this->manufacturer->mf_desc)) { ?>
      <div class="manufacturer-description">
         <?php echo $this->manufacturer->mf_desc ?>
      </div>
   <?php } ?>
Перепробовал много вариантов. Не чего не выходит (вместо страницы - белая простыня, или просто не чего не происходит).
Или наоборот в файле вывода товаров производителя, вывести описание.
код:
Код
<?php echo $this->manufacturer->mf_desc ?>
не чего не выводит. Другие копированные коды тоже не чего не дают.
Подскажите пожалуйста - как вывести товары вместе с описанием производителя?
*

danem

  • Осваиваюсь на форуме
  • 15
  • 2 / 0
Сам-шучу сам смеюсь.
После долгих изысков по простору интернета (поскольку я далеко не программист-профессионал) решение было найдено. Во всяком случае у меня оно заработало.
Задача: вывести описание производителя вместе с его товарами.

1. Водим переменные в фале components/com_virtuemart/views/category/view.html.php (примерно 182 строка)
После кода:
Код
$virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id',0 );
Вставляем код:
Код
	// get manufacturer models
$model = VmModel::getModel('manufacturer');
if ($virtuemart_manufacturer_id !=0 ) {

$manufacturer = $model->getManufacturer();
$model->addImages($manufacturer,1);

$manufacturerImage = $manufacturer->images[0]->displayMediaThumb('class="manufacturer-image"',false);

$this->assignRef('manufacturerImage', $manufacturerImage);
$this->assignRef('manufacturer', $manufacturer);
$pathway->addItem(strip_tags($manufacturer->mf_name));
}

2. Далее переадресуем ссылку в компоненте магазина - components/com_virtuemart/views/manufacturer/tmpl/default.php (ну или в меню, или в модуле, или от куда нам надо получить ссылку на страницу с товарами производителя):
Находим код:
Код
index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=
Меняем на:
Код
index.php?option=com_virtuemart&view=category&virtuemart_manufacturer_id=
т.е. заменяем ссылку со страницы описания производителя, на страницу с товарами производителя.

3. Вставляем практически в любое место переменные отображения информации о производителе (описание, url, изображение) в фаил  - components/com_virtuemart/views/category/tmpl/default.php
Я вставил в конце страници.
Переменные производителя выглядят следующим образом и находятся в файле - /components/com_virtuemart/views/manufacturer/tmpl/details.php :
<?php echo $this->manufacturer->mf_desc ?> - описание
<?php echo $this->manufacturerImage; ?> - изображение
ну и т.д

Оригинал топика с забугорного форума - http://forum.virtuemart.net/index.php?topic=106733.0
*

lnexus

  • Новичок
  • 2
  • 0 / 0
3. Вставляем практически в любое место переменные отображения информации о производителе (описание, url, изображение) в фаил  - components/com_virtuemart/views/category/tmpl/default.php
Я вставил в конце страници.
Переменные производителя выглядят следующим образом и находятся в файле - /components/com_virtuemart/views/manufacturer/tmpl/details.php :
<?php echo $this->manufacturer->mf_desc ?> - описание
<?php echo $this->manufacturerImage; ?> - изображение
ну и т.д
Не могу понять что нужно, чтобы переменная брала значение текущего производителя?
*

kasper9820

  • Захожу иногда
  • 127
  • 4 / 6
  • ...ISponsor!
Извините, если не в тему.
Есть такой код при добавлении товара (в форме)
Код
	echo '<dt><label for="formmanufacturer">'.JText::_('COM_VMVENDOR_VMVENADD_MANUFACTURER').'</label></dt>';
    echo '<dd><div class="form-group><select id="formmanufacturer"></select>';
echo '<select id="formmanufacturer" name="formmanufacturer" class="form-control chosen"><option value="0">'.JText::_('COM_VMVENDOR_VMVENADD_FORM_CHOOSEMANUFACTURER').'</option>';
$manufacturers = VmvendorModelAddproduct::getManufacturers();
foreach($manufacturers as $manufacturer)
{
echo '<option value="'.$manufacturer->virtuemart_manufacturer_id.'">'.$manufacturer->mf_name.'</option>';
}
echo '</select></div></dd>';

если из этого кода убрать лишний <select id="formmanufacturer"></select> то весь селектор рушиться и превращается в список.

Что может быть. Остальные работают как часы
*

fsv

  • Moderator
  • 2782
  • 411 / 2
если из этого кода убрать лишний <select id="formmanufacturer"></select>
а если убрать
Код: php
<select id="formmanufacturer"></select>';
echo '
?
Веб-разработка: заказ. Только новая разработка.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Эффект добавления товара в корзину VM3

Автор bassez

Ответов: 0
Просмотров: 2872
Последний ответ 05.06.2020, 12:28:26
от bassez
Вывод краткого описания товара в корзине

Автор PavelK

Ответов: 2
Просмотров: 3189
Последний ответ 04.04.2020, 16:34:10
от PavelK
Редактирование карточки товара VirtueMart

Автор muserun

Ответов: 2
Просмотров: 5125
Последний ответ 31.10.2019, 12:53:51
от Sandruk1
Изменение количества товара в корзине

Автор 1AZ1

Ответов: 18
Просмотров: 3904
Последний ответ 23.09.2019, 15:41:49
от draff
Как добавить артикул в категориях и карточке товара?

Автор alexj69

Ответов: 22
Просмотров: 14558
Последний ответ 16.06.2019, 18:41:53
от AndTaran