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

siteed

  • Новичок
  • 6
  • 0 / 0
Доброго времени суток , господа!
В рнр я полный профан , подскажите как вырезать (вернее что именно ) Авторизацию , Выставить счёт и Способ доставки .

Я  догадываюсь что рыть надо тут com_virtuemart - views - cart - tmpl - default_pricelist.php
Порыл - прогресс на лицо  Убрал "Выставить счёт" и "Изменить адрес доставки"
кому нужно код ниже (с вырезанными кусками)


Код: php
<?php defined('_JEXEC') or die('Restricted access');

?>
<div class="billto-shipto">
<div class="width50 floatleft">



<?php // Output Bill To Address ?>
<div class="output-billto">
<?php

foreach($this->cart->BTaddress['fields'] as $item){
if(!empty($item['value'])){
if($item['name']==='agreed'){
$item['value'] =  ($item['value']===0)? JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_NO'):JText::_('COM_VIRTUEMART_USER_FORM_BILLTO_TOS_YES');
}
?>

<?php if ($item['name'] != 'title' and $item['name'] != 'first_name' and $item['name'] != 'middle_name' and $item['name'] != 'zip') { ?>
<br class="clear" />
<?php
}
}
} ?>
<div class="clear"></div>
</div>


<input type="hidden" name="billto" value="<?php echo $this->cart->lists['billTo']; ?>"/>
</div>

<div class="width50 floatleft">





<?php if(!isset($this->cart->lists['current_id'])) $this->cart->lists['current_id'] = 0; ?>


</div>

<div class="clear"></div>
</div>

<fieldset>
<table
class="cart-summary"
cellspacing="0"
cellpadding="0"
border="0"
width="100%">
<tr>
<th align="left"><?php echo JText::_('COM_VIRTUEMART_CART_NAME')?></th>
<th align="left"><?php echo JText::_('COM_VIRTUEMART_CART_SKU')?></th>
<th
align="center"
width="60px"><?php echo JText::_('COM_VIRTUEMART_CART_PRICE')?></th>
<th
align="right"
width="140px"><?php echo JText::_('COM_VIRTUEMART_CART_QUANTITY')?>
/ <?php echo JText::_('COM_VIRTUEMART_CART_ACTION')?></th>


                                        <?php if ( VmConfig::get('show_tax')) { ?>
                                <th align="right" width="60px"><?php  echo "<span  class='priceColor2'>".JText::_('COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT')?></th>
<?php } ?>
                                <th align="right" width="60px"><?php echo "<span  class='priceColor2'>".JText::_('COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT')?></th>
<th align="right" width="70px"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL')?></th>
</tr>



<?php
$i=1;
// vmdebug('$this->cart->products',$this->cart->products);
foreach( $this->cart->products as $pkey =>$prow ) { ?>
<tr valign="top" class="sectiontableentry<?php echo $i ?>">
<td align="left" >
<?php if ( $prow->virtuemart_media_id) {  ?>
<span class="cart-images">
<?php
if(!empty($prow->image)) echo $prow->image->displayMediaThumb('',false);
?>
</span>
<?php } ?>
<?php echo JHTML::link($prow->url, $prow->product_name).$prow->customfields; ?>

</td>
<td align="left" ><?php  echo $prow->product_sku ?></td>
<td align="center" >
<?php
// vmdebug('$this->cart->pricesUnformatted[$pkey]',$this->cart->pricesUnformatted[$pkey]['priceBeforeTax']);
echo $this->currencyDisplay->createPriceDiv('basePrice','', $this->cart->pricesUnformatted[$pkey],false);
// echo $prow->salesPrice ;
?>
</td>
<td align="right" ><form action="<?php echo JRoute::_('index.php'); ?>" method="post" class="inline">
<input type="hidden" name="option" value="com_virtuemart" />
<input type="text" title="<?php echo  JText::_('COM_VIRTUEMART_CART_UPDATE')?>" class="inputbox" size="3" maxlength="4" name="quantity" value="<?php echo $prow->quantity ?>" />
<input type="hidden" name="view" value="cart" />
<input type="hidden" name="task" value="update" />
<input type="hidden" name="cart_virtuemart_product_id" value="<?php echo $prow->cart_item_id  ?>" />
<input type="submit" class="vmicon vm2-add_quantity_cart" name="update" title="<?php echo  JText::_('COM_VIRTUEMART_CART_UPDATE')?>" align="middle" value=" "/>
 </form>
<a class="vmicon vm2-remove_from_cart" title="<?php echo JText::_('COM_VIRTUEMART_CART_DELETE')?>" align="middle" href="<?php echo JRoute::_('index.php?option=com_virtuemart&view=cart&task=delete&cart_virtuemart_product_id='.$prow->cart_item_id  )?>"> </a>
</td>

<?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo "<span class='priceColor2'>".$this->currencyDisplay->createPriceDiv('taxAmount','', $this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity)."</span>" ?></td>
                                <?php } ?>
<td align="right"><?php echo "<span class='priceColor2'>".$this->currencyDisplay->createPriceDiv('discountAmount','', $this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity)."</span>" ?></td>
<td colspan="1" align="right">
<?php
if (VmConfig::get('checkout_show_origprice',1) && !empty($this->cart->pricesUnformatted[$pkey]['basePriceWithTax']) && $this->cart->pricesUnformatted[$pkey]['basePriceWithTax'] != $this->cart->pricesUnformatted[$pkey]['salesPrice'] ) {
echo '<span class="line-through">'.$this->currencyDisplay->createPriceDiv('basePriceWithTax','', $this->cart->pricesUnformatted[$pkey],true,false,$prow->quantity).'</span><br />' ;
}
echo $this->currencyDisplay->createPriceDiv('salesPrice','', $this->cart->pricesUnformatted[$pkey],false,false,$prow->quantity)?></td>
</tr>
<?php
$i = 1 ? 2 : 1;
} ?>
<!--Begin of SubTotal, Tax, Shipment, Coupon Discount and Total listing -->
                  <?php if ( VmConfig::get('show_tax')) { $colspan=3; } else { $colspan=2; } ?>
<tr>
<td colspan="4">&nbsp;</td>

<td colspan="<?php echo $colspan ?>"><hr /></td>
</tr>
 <tr class="sectiontableentry1">
<td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL'); ?></td>

                        <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('taxAmount','', $this->cart->pricesUnformatted,false)."</span>" ?></td>
                        <?php } ?>
<td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('discountAmount','', $this->cart->pricesUnformatted,false)."</span>" ?></td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPrice','', $this->cart->pricesUnformatted,false)?></td>
 </tr>

<?php
if (VmConfig::get('coupons_enable')) {
?>
<tr class="sectiontableentry2">
<td colspan="4" align="left">
   <?php if(!empty($this->layoutName) && $this->layoutName=='default') {
  // echo JHTML::_('link', JRoute::_('index.php?view=cart&task=edit_coupon',$this->useXHTML,$this->useSSL), JText::_('COM_VIRTUEMART_CART_EDIT_COUPON'));
   echo $this->loadTemplate('coupon');
   }
?>

<?php if (!empty($this->cart->cartData['couponCode'])) { ?>
<?php
echo $this->cart->cartData['couponCode'] ;
echo $this->cart->cartData['couponDescr'] ? (' (' . $this->cart->cartData['couponDescr'] . ')' ): '';
?>

</td>

<?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv('couponTax','', $this->cart->pricesUnformatted['couponTax'],false); ?> </td>
<?php } ?>
<td align="right">&nbsp;</td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPriceCoupon','', $this->cart->pricesUnformatted['salesPriceCoupon'],false); ?> </td>
<?php } else { ?>
<td colspan="6" align="left">&nbsp;</td>
<?php }

?>
</tr>
<?php } ?>


<?php
foreach($this->cart->cartData['DBTaxRulesBill'] as $rule){ ?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo $rule['calc_name'] ?> </td>

                                   <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"> </td>
                                <?php } ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?></td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
</tr>
<?php
if($i) $i=1; else $i=0;
} ?>

<?php

foreach($this->cart->cartData['taxRulesBill'] as $rule){ ?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo $rule['calc_name'] ?> </td>
<?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
<?php } ?>
<td align="right"><?php ?> </td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
</tr>
<?php
if($i) $i=1; else $i=0;
}

foreach($this->cart->cartData['DATaxRulesBill'] as $rule){ ?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo   $rule['calc_name'] ?> </td>

                                     <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"> </td>

                                <?php } ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?>  </td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv($rule['virtuemart_calc_id'].'Diff','', $this->cart->pricesUnformatted[$rule['virtuemart_calc_id'].'Diff'],false); ?> </td>
</tr>
<?php
if($i) $i=1; else $i=0;
} ?>


<tr class="sectiontableentry1">
                    <?php if (!$this->cart->automaticSelectedShipment) { ?>

<?php /* <td colspan="2" align="right"><?php echo JText::_('COM_VIRTUEMART_ORDER_PRINT_SHIPPING'); ?> </td> */?>
<td colspan="4" align="left">
<?php echo $this->cart->cartData['shipmentName']; ?>
   <br />
<?php
if(!empty($this->layoutName) && $this->layoutName=='default' && !$this->cart->automaticSelectedShipment  )
echo JHTML::_('link', JRoute::_('index.php?view=cart&task=edit_shipment',$this->useXHTML,$this->useSSL), $this->select_shipment_text,'class="button"');
else {
   JText::_('COM_VIRTUEMART_CART_SHIPPING');
}
} else { ?>
                                <td colspan="4" align="left">
<?php echo $this->cart->cartData['shipmentName']; ?>
</td>
                                 <?php } ?>

                                     <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('shipmentTax','', $this->cart->pricesUnformatted['shipmentTax'],false)."</span>"; ?> </td>
                                <?php } ?>
<td></td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv('salesPriceShipment','', $this->cart->pricesUnformatted['salesPriceShipment'],false); ?> </td>
</tr>

<tr class="sectiontableentry1">
                          <?php if (!$this->cart->automaticSelectedPayment) { ?>

<td colspan="4" align="left">
<?php echo $this->cart->cartData['paymentName']; ?>
    <br />
<?php if(!empty($this->layoutName) && $this->layoutName=='default') echo JHTML::_('link', JRoute::_('index.php?view=cart&task=editpayment',$this->useXHTML,$this->useSSL), $this->select_payment_text,'class="button"'); else JText::_('COM_VIRTUEMART_CART_PAYMENT'); ?> </td>

</td>
                         <?php } else { ?>
                                    <td colspan="4" align="left"><?php echo $this->cart->cartData['paymentName']; ?> </td>
                                 <?php } ?>
                                     <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"><?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('paymentTax','', $this->cart->pricesUnformatted['paymentTax'],false)."</span>"; ?> </td>
                                <?php } ?>
<td align="right"><?php // Why is this commented? what is with payment discounts? echo "<span  class='priceColor2'>".$this->cart->pricesUnformatted['paymentDiscount']."</span>"; ?></td>
<td align="right"><?php  echo $this->currencyDisplay->createPriceDiv('salesPricePayment','', $this->cart->pricesUnformatted['salesPricePayment'],false); ?> </td>
</tr>
 <tr>
<td colspan="4">&nbsp;</td>
<td colspan="<?php echo $colspan ?>"><hr /></td>
 </tr>
 <tr class="sectiontableentry2">
<td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL')?>: </td>

                        <?php if ( VmConfig::get('show_tax')) { ?>
<td align="right"> <?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('billTaxAmount','', $this->cart->pricesUnformatted['billTaxAmount'],false)."</span>" ?> </td>
                        <?php } ?>
<td align="right"> <?php echo "<span  class='priceColor2'>".$this->currencyDisplay->createPriceDiv('billDiscountAmount','', $this->cart->pricesUnformatted['billDiscountAmount'],false)."</span>" ?> </td>
<td align="right"><strong><?php echo $this->currencyDisplay->createPriceDiv('billTotal','', $this->cart->pricesUnformatted['billTotal'],false); ?></strong></td>
 </tr>
   <?php
   if ( $this->totalInPaymentCurrency) {
?>

      <tr class="sectiontableentry2">
   <td colspan="4" align="right"><?php echo JText::_('COM_VIRTUEMART_CART_TOTAL_PAYMENT')?>: </td>

   <?php if ( VmConfig::get('show_tax')) { ?>
   <td align="right">  </td>
   <?php } ?>
   <td align="right">  </td>
   <td align="right"><strong><?php echo $this->totalInPaymentCurrency;   ?></strong></td>
     </tr>
     <?php
   }
   ?>


</table>
</fieldset>
А вот где логин грохнуть ..... :'(
« Последнее редактирование: 18.08.2012, 06:19:00 от siteed »
*

marozz1k

  • Захожу иногда
  • 316
  • 8 / 0
Настройки / оформление заказа / Регистрация во время оформлениия заказа
*

mogutov666

  • Осваиваюсь на форуме
  • 29
  • 2 / 3
тема подымалась ан форуме и была решена
*

Polosat

  • Захожу иногда
  • 202
  • 7 / 0
  • Мечты - это то, из чего сделано будущее
убираем лишнее из 
/components/com_virtuemart/views/cart/tmpl
 default_pricelist.php

+ настройки VM
+ ищем на форуме, ответы есть
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] VM2 Метод доставки "по умолчанию"

Автор d0ublezer0

Ответов: 17
Просмотров: 16293
Последний ответ 15.11.2017, 20:14:22
от nden
Как обнулить или выставить всегда кол-во "0" зарезервированных товаров на складе?

Автор One

Ответов: 1
Просмотров: 869
Последний ответ 15.06.2017, 08:21:13
от One
Форма оформления заказа + Корзина. Всё в одном модальном окне на VirtueMart 2

Автор Strikerus

Ответов: 0
Просмотров: 1782
Последний ответ 19.04.2017, 08:13:30
от Strikerus
Редактируем счет invoice и order

Автор RaftermaN

Ответов: 0
Просмотров: 1035
Последний ответ 06.03.2017, 01:08:21
от RaftermaN
МОДУЛЬ - Корзина товаров с оформлением заказа на любой странице

Автор WooSuuP

Ответов: 10
Просмотров: 3024
Последний ответ 12.04.2016, 16:39:10
от WooSuuP