Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

neGODnic

  • Захожу иногда
  • 140
  • 4 / 0
День добрый коллеги. Уже сломал себе всю голову. Вкратце:

есть плагин для выставления счета - Банковский платеж для юридических лиц.

это его вывод, не могу никак вывести артикул. Выводит только пустое поле.
Подскажите пожалуйста, где я затупил. Пробовал уже разные варианты, но все равно не получается.
Бональная вставка - <?php echo $product_sku; ?> не помогает.

вот сама строка

Код
<!--  ! ВОТ ТУТ !  -->   <td align="center"><p style="font-size:11px; padding-right:5px;"><?php echo $product_sku; ?><?php $dbcart->f("product_sku");?><?php $dbcart->p("product_sku");?> </p></td>

ниже код целиком

Код
<?php    class num2str
{
    var $nums = array(
        1 => array( 'один', 'одна' ),
        2 => array( 'два', 'две' ),
        3 => 'три',
        4 => 'четыре',
        5 => 'пять',
        6 => 'шесть',
        7 => 'семь',
        8 => 'восемь',
        9 => 'девять',
        10 => 'десять',
        11 => 'одиннадцать',
        12 => 'двенадцать',
        13 => 'тринадцать',
        14 => 'четырнадцать',
        15 => 'пятнадцать',
        16 => 'шестнадцать',
        17 => 'семнадцать',
        18 => 'восемнадцать',
        19 => 'девятнадцать',
        20 => 'двадцать',
        30 => 'тридцать',
        40 => 'сорок',
        50 => 'пятьдесят',
        60 => 'шестьдесят',
        70 => 'семьдесят',
        80 => 'восемьдесят',
        90 => 'девяносто',
        100 => 'сто',
        200 => 'двести',
        300 => 'триста',
        400 => 'четыреста',
        500 => 'пятьсот',
        600 => 'шестьсот',
        700 => 'семьсот',
        800 => 'восемьсот',
        900 => 'девятьсот',
    );
    var $names = array(
        1000 => array( 'тысяча', 'тысячи', 'тысяч', '', 'sem' => 1 ),
        1000000 => array( 'миллион', 'миллиона', 'миллионов', '', 'sem' => 0 ),
        1000000000 => array( 'миллиард', 'миллиарда', 'миллиардов', '', 'sem' => 0 )
    );
    var $out = array();
    function semantic( $num, $words )
    {
        $des = false;
        $num = $num % 100;
        if( $num > 20 )
        {
            $num = $num % 10;
            if( !$num ){
                $des= true;
            }
        }
        if ( 1 == $num ){
            return $words[0];
        }elseif( $des ){
            return $words[2];
        }elseif( !$num ){
            return $words[3];
        }elseif( $num <= 4  ){
            return $words[1];
        }else{
           return $words[2];
        }
    }
    function small_nums( $num, $sem )
    {
        if( $num < 21 )
        {  
            if( $num <= 2 )
            {
                $this->out[] =  $this->nums[$num][$sem];
            }else{
                $this->out[] =  $this->nums[$num];
            }
        }else{
            $this->out[] = $this->nums[$num - ( $num % 10 )];
            if( ( $num % 10 ) <= 2 )
            {
                $this->out[] = $this->nums[$num % 10][$sem];
            }else{
                $this->out[] =  $this->nums[$num % 10];
            }
        }
    }
    function work( $num, $all_sem )
    {
        foreach( array( 1000000000, 1000000, 1000 ) as $order )
        {
            $temp = floor( $num / $order );
            if( ( $temp - ( $temp % 100 ) ) > 0 ){
                $this->out[] = $this->nums[$temp - ( $temp % 100 )];
            }
            $this->small_nums( $temp % 100, $this->names[$order]['sem'] );
            $this->out[] = $this->semantic( $temp, $this->names[$order] );
            $num -= $temp * $order;
        }
        $temp = $num;
        if( ( $temp - ( $temp % 100 ) ) > 0 ){
            $this->out[] = $this->nums[$temp - ( $temp % 100 )];
        }
        $this->small_nums( $temp % 100, $all_sem );
        $temp = implode( ' ', $this->out );
        $this->out = array();
        return $temp;
    }
}
class money2str
{
    var $names = array(
        1 => array( 'рубль', 'рубля', 'рублей', 'рублей', 'sem' => 0 ),
        2 => array( 'копейка', 'копейки', 'копеек', 'копеек', 'sem' => 1 )
    );
    var $out = array();
    function money2str()
    {
        $this->num2str = new num2str();
    }
    function work( $money, $kopnum = false )
    {
        $kop = substr( $money, -2 );
        $rub = substr( $money, 0, -3 );
        if( !$rub )
        {
            $this->out[] = 'ноль';
        }else{
            $this->out[] = $this->num2str->work( $rub, $this->names[1]['sem'] );
        }
        $this->out[] = $this->num2str->semantic( $rub, $this->names[1] );
        if( !$kopnum )
        {
            if( !$kop )
            {
                $this->out[] = 'ноль';
            }else{
                $this->out[] = $this->num2str->work( $kop, $this->names[2]['sem'] );
            }
        }else{
            $this->out[] = $kop;
        }
        $this->out[] = $this->num2str->semantic( $kop, $this->names[2] );
        $temp = implode( ' ', $this->out );
        $this->out = array();
        return $temp;
    }
}
?>
<?php
$name=fsch_name;
$KPP=fsch_KPP;
$INN=fsch_INN;
$Rch=fsch_Rch;
$Rch_v=fsch_Rch_v;
$BIK=fsch_BIK;
$Kch=fsch_Kch;
$IND=fsch_IND;
$obl=fsch_obl;
$gor=fsch_gor;
$ul=fsch_ul;
$dom=fsch_dom;
$office=fsch_office;
$tel=fsch_tel;
$fax=fsch_fax;
$url_img=fsch_url;
$width_img=fsch_width;
$height_img=fsch_height;
?>
<script>
function Load2(){
text = document.getElementById('result2').innerHTML;
printwin = open('', 'printwin', 'width=600,height=800');
printwin.document.open();
printwin.document.writeln('<html><head><title></title></head><body onload=print();close()>');
printwin.document.writeln(text);
printwin.document.writeln('</body></html>');
printwin.document.close();
}
</script>
<table width="560px" border="0" cellspacing="0" cellpadding="0" id=result2>
<tr>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" rowspan="2" valign="top" style="border-bottom:none;">
<p style="font-size:12px; padding:2px;"> <?php echo $Rch_v;?></p></td>
<td><p style="font-size:12px; padding:2px;">БИК</p></td>
<td><p style="font-size:12px; padding:2px;"><?php echo $BIK;?></p></td>
</tr>
<tr>
<td style="border-bottom:none;"><p style="font-size:12px; padding:2px;">Сч. №</p></td>
<td style="border-bottom:none;"><p style="font-size:12px; padding:2px;"><?php echo $Kch;?></p></td>
</tr>
<tr>
<td colspan="2" style="border-top:none;"><p style="font-size:10px; padding:2px;">Банк получателя</p></td>
<td style="border-top:none;">&nbsp;</td>
<td style="border-top:none;">&nbsp;</td>
</tr>
<tr>
<td><p style="font-size:12px; padding:2px;">ИНН <?php echo $INN; ?></p></td>
<td><p style="font-size:12px; padding:2px;">КПП <?php echo $KPP; ?></p></td>
<td rowspan="3" valign="top"><p style="font-size:12px; padding:2px;">Сч. №</p></td>
<td rowspan="3" valign="top"><p style="font-size:12px; padding:2px;"><?php echo $Rch; ?></p></td>
</tr>
<tr>
<td colspan="2" style="border-bottom:none;"><p style="font-size:12px; padding:2px;"><?php echo $name; ?></p></td>
</tr>
<tr>
<td colspan="2" style="border-top:none;"><p style="font-size:10px; padding:2px;">Получатель</p></td>
</tr>
</table></td>
</tr>
<tr>
<td>
<table height="40" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="border-bottom:2px solid #000000;"><p style="font-size:16px;"><strong>Счет на оплату № ВГС<?php printf("%04d", $db->f("order_id")); ?> от <?php echo vmFormatDate($db->f("cdate"), "%d.%m.%Y");?>г.</strong></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center"><p style="font-size:12px;">Поставщик:</p></td>
<td><p style="font-size:12px;"><strong>
              <?php if ($INN!="") echo "ИНН $INN,"; ?>
              <?php if ($KPP!="") echo "КПП $KPP,"; ?>
              <?php if ($name!="") echo "$name,"; ?>
              <?php if ($IND!="") echo "$IND,"; ?>
              <?php if ($obl!="") echo "$obl,"; ?><br>
              <?php if ($gor!="") echo "$gor,"; ?>
              <?php if ($ul!="") echo "$ul,"; ?>
              <?php if ($dom!="") echo "$dom,"; ?>
              <?php if ($office!="") echo "$office,"; ?><br>
              <?php if ($tel!="") echo "тел.: $tel"; ?>
              <?php if ($fax!="") echo ", факс: $fax"; ?>
</strong></p></td>
</tr>
<tr>
<td width="80" align="center"><p style="font-size:12px;">Покупатель:</p></td>
<td><p style="font-size:12px;"><strong>
              <?php $INN_P=$dbbt->f("bank_sort_code"); if ($INN_P!="") echo "ИНН $INN_P,";?>
              <?php $KPP_P=$dbbt->f("vm_kpp"); if ($KPP_P!="") echo "КПП $KPP_P,";?>
              <?php $company=$dbbt->f("company"); if ($company!="") echo "$company,";?>
              <?php $zip=$dbbt->f("zip"); if ($zip!="") echo "$zip,";?>
              <?php $vm_state=$dbbt->f("vm_state"); if ($vm_state!="") echo "$vm_state,";?><br>
              <?php $city=$dbbt->f("city"); if ($city!="") echo "$city,";?>
              <?php $address_1=$dbbt->f("address_1"); if ($address_1!="") echo "$address_1,";?>
              <?php $address_2=$dbbt->f("address_2"); if ($address_2!="") echo "$address_2,";?>
              <?php $office_P=$dbbt->f("vm_office"); if ($office_P!="") echo "$office_P,";?>
              <?php $phone=$dbbt->f("phone_1"); if ($phone!="") echo "тел.: $phone"; ?>
              <br>Контактное лицо:
              <?php echo $dbbt->f("last_name");?>
              <?php echo $dbbt->f("first_name");?>
              <?php echo $dbbt->f("middle_name");?>
              <?php $phone_2=$dbbt->f("phone_2"); if ($phone_2!="") echo "моб. тел.: $phone_2"; ?>
</strong></p>
</td>
</tr>
</table></td>
</tr>
<tr>
<td><table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center"><p style="font-size:12px;"><strong>№</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Артикул</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Товары (услуги, работы)</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Кол-во</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Ед.</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Цена</strong></p></td>
<td align="center"><p style="font-size:12px;"><strong>Сумма</strong></p></td>
</tr>
<?php
$dbcart = new ps_DB;
$q  = "SELECT * FROM #__vm_order_item ";
$q .= "WHERE #__vm_order_item.order_id='$order_id' ";
$dbcart->query($q);
$subtotal = 0;
$dbi = new ps_DB;
$dbdel = new ps_DB;
while ($dbcart->next_record()) {
?>
<tr>
<td align="center"><?php $nomer=$nomer+1; echo $nomer;?></td>


<!--  ! ВОТ ТУТ !  -->   <td align="center"><p style="font-size:11px; padding-right:5px;"><?php echo $product_sku; ?><?php $dbcart->f("product_sku");?><?php $dbcart->p("product_sku");?> </p></td>


<td>
<p style="font-size:12px; line-height:12px; margin:0px; padding:0px; padding-left:2px; padding-right:2px;">
<?php $dbcart->p("order_item_name");?></p>
<p style="font-size:10px; line-height:11px; margin:0px; padding:0px; padding-left:10px;">
<?php echo $dbcart->f("product_attribute");?></p>
</td>
<td align="right"><p style="font-size:11px; padding-right:5px;">
<?php $dbcart->p("product_quantity");?></p></td>
<td align="center">шт.</td>
<td align="right"><p style="font-size:11px; padding-right:5px;">
<?php if( $auth["show_price_including_tax"] ){
$item_price = $dbcart->f("product_final_price");
}
else {
$item_price = $dbcart->f("product_item_price");
}
$cena2=$dbcart->f("product_final_price");
echo number_format($cena2, 2, '.', ' ');
          ?></p></td>
<td align="right"><p style="font-size:11px; padding-right:5px;">
<?php $total = $dbcart->f("product_quantity") * $item_price; echo number_format($total, 2, '.', ' ');?></p>
</td>
</tr><?php } ?>
<?php $details = explode( "|", $db->f("ship_method_id"));
$dostavka=$details[3];
if ($dostavka!=0) {
?>
<tr>
<td align="center"><?php $nomer=$nomer+1; echo $nomer;?></td>
<td align="center">-</td>
<td><p style="font-size:12px; padding-left:2px;">Вариант доставки:<br>
<?php echo $details[1];?></p></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="right"><p style="font-size:12px; padding-right:5px;"><?php echo number_format($dostavka, 2, '.', ' ');?></p></td>
<td align="right"><p style="font-size:12px; padding-right:5px;"><?php echo number_format($dostavka, 2, '.', ' ');?></p></td>
</tr>
<?php }?>
</table></td>
</tr>
<tr>
<td>
<table width="100%" height="50" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100">&nbsp;</td>
<td width="360" height="20" align="right" valign="bottom">
<p style="font-size:12px; padding-right:5px;"><strong>Итого:</strong></p></td>
<td width="100" align="right" valign="bottom">
<p style="font-size:12px; padding-right:5px;"><strong><?php $total_sum = $db->f("order_total");
echo number_format($total_sum, 2, '.', ' ');?></strong></p>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td height="20" align="right">
<p style="font-size:12px; padding-right:5px;">В том числе НДС:</p></td>
<td align="right">
<p style="font-size:12px; padding-right:5px;"><?php $tax_total = $db->f("order_tax") + $db->f("order_shipping_tax"); echo number_format($tax_total, 2, '.', ' ');?></p></td>
</tr>
<tr>
<td>&nbsp;</td>
<td height="20" align="right">
<p style="font-size:12px; padding-right:5px;">Без налога (НДС):</p></td>
<td align="right">
<p style="font-size:12px; padding-right:5px;">
<?php $summa_bez_nalogov=$total_sum-$tax_total;
echo number_format($summa_bez_nalogov, 2, '.', ' ');?></p></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="40" style="border-bottom:2px solid #000000;">
<p style="font-size:12px; padding-left:10px;">Всего наименований <strong><?php echo $nomer;?></strong>, на сумму <strong><?php echo number_format($total_sum, 2, '.', ' ');?> руб.<br>
<?php
$m = new money2str();
echo $m->work( $total_sum, true );
?>
</strong></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center">
<img src="<?php echo $url_img; ?>" width="<?php echo $width_img; ?>" height="<?php echo $height_img; ?>">
</td>
</tr>
</table>
<br>
<input type=submit onclick=Load2() value="Распечатать счет">
« Последнее редактирование: 08.02.2011, 13:03:31 от neGODnic »
*

neGODnic

  • Захожу иногда
  • 140
  • 4 / 0
Сам разобрался...
нужно было вставлять другую переменную:
Код
<?php $dbcart->p("order_item_sku"); ?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Добавить модуль в товар

Автор Tokyo

Ответов: 2
Просмотров: 3013
Последний ответ 11.05.2015, 20:43:32
от tierex
В VirtueMart как добавить капчу ко всем формам?

Автор tiptopvkr

Ответов: 0
Просмотров: 1250
Последний ответ 02.03.2014, 13:25:17
от tiptopvkr
Как в VirtueMart 1.1.9 stable добавить на товар картинку «новинка»?

Автор blade86

Ответов: 12
Просмотров: 16699
Последний ответ 14.09.2013, 18:45:16
от blade86
Как добавить в выподающий список сортировки - "По производителю"?

Автор al982

Ответов: 1
Просмотров: 1500
Последний ответ 10.06.2013, 20:44:58
от al982
Как добавить товар по артикулу в корзину. Готов на 90% - остальное?

Автор duhduhduh

Ответов: 10
Просмотров: 3184
Последний ответ 30.03.2013, 02:42:00
от duhduhduh