Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать 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

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

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Кто знает, подскажите пожалуйста, как можно сделать, чтобы сопутствующие товары приходилось забивать не в ручную к каждому товару, а они брались бы  из категории в которой находится товар.
На форуме было решение к VM1.1.3 на  VM 1.1.4 не заработало...

*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
интересно стало, по какому принципу идет автозаполнение сопутствующих товаров?  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Сопутствующие товары лежат в таблице jos_vm_product_relations

Запись вида (пример):
product_id  = 23
related_products  = 33|24|8|25|37|29


То есть для продукта 23 сопутствующие товары - 33|24|8|25|37|29
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
интересно стало, по какому принципу идет автозаполнение сопутствующих товаров?  ^-^

чтобы рендомно  выбодились (например по 3 или 4 шт.) все товары из категории в которой находится товар

*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
http://joomlaforum.ru/index.php/topic,72740.0.html

я написал в первом сообщении - в 1.1.4 - этот метод не заработал...
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
чтобы рендомно  выбодились (например по 3 или 4 шт.) все товары из категории в которой находится товар
это неправильное заполнение сопутствующих товаров. Например сайт об играх. Сопутствующие товары это игры из этой же серии, ну никак не рэндомно  ^-^
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
По мне так наиболее правильный метод автозаполнения был бы на основе наименования товара, чтобы автоматом находил схожее наименование  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
http://joomlaforum.ru/index.php/topic,72740.0.html

Здесь исправлено.

Кстати по поводу наименования - думаю решение простое - основанное на указанном в ссылке.
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
http://joomlaforum.ru/index.php/topic,72740.0.html

Здесь исправлено.

Кстати по поводу наименования - думаю решение простое - основанное на указанном в ссылке.
было бы замечательно, я сам добавляю сопутствующие товары вручную. И тут такой момент возникает. Допустим по моей тематике пример. Поступила игра Starcraft 2. До неё был Старкрафт. Конечно когда завожу карточку игры Старкрафт 2 то в ней указываю сопутствующий товар Старкрафт. А потом приходится заходить в карточку игры Старкрафт и указывать сопутствующий товар Старкрафт 2. Вот это немного напрягает. Наименований игр более 2 тысяч поэтому всех игр не упомнишь, а вот если бы как нибудь по наименованию само добавлялось в сопутствующие товары было бы замечательно  ^-^
« Последнее редактирование: 23.09.2010, 13:13:30 от Infosakh »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Если пренебречь переводом, то можно вот это использовать:
Цитировать
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '.$product_name;
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';

ч
Соответсвенно отбор будет такой:
К прмеру - товар Старкрафт

тогда выбрать все товары имя которых включает слово Старкрафт
« Последнее редактирование: 23.09.2010, 13:56:38 от adjuster »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Я правильно понимаю, что надо глядеть вот этот пост: http://joomlaforum.ru/index.php/topic,72740.msg714481#msg714481
Все сделать так как там приведено, но вместо этого:
---
$category_id =  vmGet($_REQUEST, "category_id", null);  /* Получаем категорию в которой находится товар */
    /*Отбираем опубликованные продукты из данной категории*/
    $q='SELECT product.`product_id` , `product_name`';
    $q=$q.' FROM `#__{vm}_product` AS product, `#__{vm}_product_category_xref` AS category';
    $q=$q.' WHERE product.`product_id` = category.`product_id`';
    $q=$q.' AND category.category_id ='.$category_id;
    $q=$q.' AND `product_publish` = "Y"';
    $q=$q.' LIMIT 0 , 30';
---
вставить это:
---
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '.$product_name;
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
---
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Ага, только я с Лайком ошибся:
Цитировать
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';

Вот как-то так.
« Последнее редактирование: 23.09.2010, 14:10:51 от adjuster »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Ага, только я с Лайком ошибся:
Вот как-то так.
так, сейчас буду тестить, отпишусь   ^-^
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
все сделал как было указано, в файле relatedProducts.tpl.php заменил весь код на это
---
1) <?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); ?>

<hr/>

<h3><?php echo $VM_LANG->_('PHPSHOP_RELATED_PRODUCTS_HEADING')?></h3>
 
<table width="100%" align="center">
    <tr>
    <?php
    while( $products->next_record() ) { ?>
          <td valign="top">
              <?php echo $ps_product->product_snapshot2( $products->f('product_sku') )?>
          </td>
    <?php
    }
    ?>
    </tr>
</table>
---
2) В файле ps_product.php после этих строчек
---
class vm_ps_product extends vmAbstractObject {
   var $_key = 'product_id';
   var $_table_name = '#__{vm}_product';
---
добавил вот этот код:
---
function product_snapshot2( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {

         global $sess, $mm_action_url;
         
 $category_id =  vmGet($_REQUEST, "category_id", null);  /* Получаем категорию в которой находится товар */
    /*Отбираем опубликованные продукты из данной категории*/
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
   
    $db = new ps_DB;
$db->query( $q );
             
         require_once(CLASSPATH.'ps_product_category.php');
         $ps_product_category = new ps_product_category;

        /* $q = "SELECT product_id, product_name, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'"; */
         

$myres = $db->record;

    foreach ($myres as $rplist){
 // if ($myres->next_record()) {
       
            $product_id = $db->f("product_id" );
            $tpl = new $GLOBALS['VM_THEMECLASS']();
           
            $cid = $ps_product_category->get_cid( $product_id );

            $tpl->set( 'product_id', $product_id);
            $tpl->set( 'product_name', $db->f("product_name") );
            $tpl->set( 'show_product_name', $show_product_name );
           
            if ($db->f("product_parent_id")) {
                $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_parent_id"));
                $url .= "&product_id=" . $db->f("product_parent_id");
            } else {
                $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_id"));
                $url .= "&product_id=" . $db->f("product_id");
            }
            $product_link = $sess->url($mm_action_url. "index.php" . $url);
            $tpl->set( 'product_link', $product_link );
            $tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");

            if (_SHOW_PRICES == '1' && $show_price) {
                // Show price, but without "including X% tax"
                $price = $this->show_price( $db->f("product_id"), true );
                $tpl->set( 'price', $price );
            }
            if (USE_AS_CATALOGUE != 1 && $show_addtocart
                    && isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart
                    && !$this->product_has_attributes($product_id, true)  // Parent Products and Products with attributes can't be added to cart this way
                    ) {
                $url = "?page=shop.cart&func=cartAdd&product_id=" .  $db->f("product_id");
                $addtocart_link = $sess->url($mm_action_url. "index.php" . $url);
                $tpl->set( 'addtocart_link', $addtocart_link );
            }
            return $tpl->fetch( 'common/productsnapshot.tpl.php');
           
        }
       
         return '';
       
}
---
Итог. В тех карточках товара где выводился уже список сопутствующих товаров выдается ошибка. А в тех карточках где не было сопутствующих товаров они так и не появились  ^-^ З.Ы. немного синтаксис неправильный был тут:
---
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
---
я поправил, но все равно результат ноль  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Беда с запросом в базу - при чтении сформированного массива - работает только с первой записью.
Следи за указанной темой - в ней сначала нужно исправить запрос в базу и обработку.
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Беда с запросом в базу - при чтении сформированного массива - работает только с первой записью.
Следи за указанной темой - в ней сначала нужно исправить запрос в базу и обработку.

Слежу за обеими темами, после добавления кода - ничего не изменилось - сопутствующих как небыло, так и нет :(

Вы не могли-бы написать финальный вариант пошагово где и что менять, чтобы сопутствующие заполнялись автоматически товарами из категории, в которой находится просматриваемый товар...
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
при таком варианте - сопутствующие начинают показываться, если выбраны какие-либо сопутствующие товары.
причем, количество зависит от количества выбранных - тупость какая-то )))
кодить нужно лучше - следим за указанной темой.


Попробуй пока вариант, который не я предложил - только вместо указанного в варианте кода поставь свой - для выборки по имени.
« Последнее редактирование: 24.09.2010, 09:07:20 от adjuster »
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Вот нашел (проверял - работает)

выводит список всех оставшихся товаров текущего производителя в карточке товара.
Изменения вносим в файле компонента com_virtuemart\themes\default\templates\product_details\flypage.tpl.php

Вопрос - как сделать что бы отбирались все остальные товары, не по производителю, а из категории в которой выбран товар типа еще товары из этой категории

Код
<?php
            $my_manufacturer_id = vmRequest::getVar('manufacturer_id');
            $my_product_id = vmRequest::getVar('product_id');
           
            global $mosConfig_absolute_path, $sess;
            require_once( $mosConfig_absolute_path.'/components/com_virtuemart/virtuemart_parser.php' );
            require_once(CLASSPATH.'ps_product.php');
            $ps_product = new ps_product;
            $list  = "SELECT DISTINCT
                    #__{vm}_product.product_id,
                    product_parent_id,
                    product_name,
                    #__{vm}_category.category_id,
                    category_flypage,
                    #__{vm}_product_mf_xref.manufacturer_id
                        ";
            $list .= "FROM
                    #__{vm}_product,
                    #__{vm}_product_category_xref,
                    #__{vm}_category,
                    #__{vm}_product_mf_xref
                    WHERE ";
            $q = "#__{vm}_product.product_publish='Y' AND ";
            $q .= "#__{vm}_product_category_xref.product_id = #__{vm}_product.product_id AND ";
            $q .= "#__{vm}_product_category_xref.category_id = #__{vm}_category.category_id AND ";
            $q .= "#__{vm}_product_mf_xref.product_id = #__{vm}_product.product_id AND ";
            $q .= "#__{vm}_product_mf_xref.manufacturer_id='".$my_manufacturer_id."' AND ";
            $q .= "#__{vm}_product.product_id <> ".$my_product_id." ";
            $q .= "GROUP BY #__{vm}_product.product_name ";           
            $q .= "ORDER BY #__{vm}_product.product_name";
           
            $list .= $q;
           
            $db = new ps_DB;
            $db->query($list);           
            $i = 0;
           
            $mk = 0;
            echo '<div id="other-collection">';
            echo '<ul>';
                while ($db->next_record()) {
                    $flypage = $db->f('category_flypage');
                    $pid = $db->f("product_parent_id")? $db->f("product_parent_id") : $db->f("product_id"); ?>
                    <li>
                        <a href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $pid . "&category_id=" . $db->f("category_id"))?>">
                            <?php $db->p("product_name"); ?>
                        </a>
                    </li>               
                    <?php
                        if ( $mk >= 3 ) {
                            echo '</ul><ul>';
                            $mk = 0;
                        }
                    ?>
                    <?php $mk++; ?>
                <?php }
                echo '</ul>';
            echo '</div>';
        ?>

*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
нашел вывод товаров этого производителя:

Цитировать
$manufacturer_id = $ps_product->get_manufacturer_id($product_id);
$q = "SELECT product_sku FROM `#__{vm}_product` ";
$q .= "INNER JOIN  `#__{vm}_product_mf_xref` ON `#__{vm}_product`.product_id = `#__{vm}_product_mf_xref`.product_id ";
$q .= "WHERE product_publish='Y' AND `#__{vm}_product`.product_id != $product_id ";
$q .= "      AND `#__{vm}_product_mf_xref`.manufacturer_id = $manufacturer_id ";
$q .= "ORDER BY RAND() LIMIT 0, 4";

не подскажите как модифицировать, чтобы бы была выборка по имени?
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
попробовал этот код
Цитировать
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
ничего не выводится  :(
« Последнее редактирование: 06.01.2011, 19:51:34 от DaVinchy »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
жаль, что тема умерла... :(
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Очень Нужная тема, поднимите её в топ.

Нужно очень сделать вывод похожих товаров из категорий
Смотрю....
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
$q = "SELECT product_sku FROM #__{vm}_product ";
$q .= "WHERE product_publish='Y' AND product_id = $product_id ";
$q .= "LIMIT 0, 10";
$db->query( $q );

выводит товар с таким же id, т. е. тот же самый товар в котором находишься
а при использовании product_name ничего е выводится =(
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
а если категорию он выводит?

вместо товара?

не product_id а categoty_id ?
Смотрю....
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
не совсем понял вопрос  ^-^
при использовании category_id у меня ничего не выводит...

здесь делали для VM 1.0.x ...
я там зарегаться не могу  :( так бы можно было спросить...
« Последнее редактирование: 08.01.2011, 18:26:02 от DaVinchy »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
неужели никто не решал!? >:(
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
в shop.product_details.php после
Цитировать
$product_id = intval( vmGet($_REQUEST, "product_id", null) );
добавил
Цитировать
$product_name = intval( vmGet($_REQUEST, "product_name", null) );
и изменил запрос
Цитировать
$q = "SELECT product_sku FROM #__{vm}_product ";
$q .= "WHERE product_publish='Y' AND product_name = $product_name ";
$q .= "LIMIT 0, 7";
но странно то, что выводится все подряд, хотя должны выводиться товары с таким же названием...
помогите разобраться
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Эх...
а всего-то надо как-то по-другому выразить $product_name...
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Эх...
а всего-то надо как-то по-другому выразить $product_name...

Если разобрался - напиши пожалуйста - а тоя уже в ступоре - ничего не получается...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать импорт товара на VirtueMart?

Автор Усач911

Ответов: 0
Просмотров: 1230
Последний ответ 07.11.2017, 22:03:18
от Усач911
В корзинке VirtueMart нужна карусель с сопутствующими товарами

Автор kristina135

Ответов: 0
Просмотров: 985
Последний ответ 16.09.2015, 16:13:57
от kristina135
Как сделать скидку сразу на все товары VirtueMart?

Автор anuta90

Ответов: 15
Просмотров: 6862
Последний ответ 23.12.2013, 13:17:51
от cheni
Как в VirtueMart сделать так, что бы все товары были на одной странице?

Автор Wargoth

Ответов: 0
Просмотров: 1074
Последний ответ 25.06.2013, 12:05:57
от Wargoth
Как сделать несколько магазинов VirtueMart на одной Joomla?

Автор Tuzemec

Ответов: 14
Просмотров: 10658
Последний ответ 23.10.2012, 11:12:55
от vogjd