Новости Joomla

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

7 января 2026 года греческому разработчику Тассосу Мариносу сообщили об уязвимости в системном плагине Tassos Framework, который входит в состав его расширений для Joomla.

⚠️ Проблема затрагивает следующие расширения:
- Convert Forms - конструктор форм обратной связи для Joomla
- EngageBox - конструктор всплывающих окон для Joomla
- Google Structured Data - пакет плагинов микроразметки для Joomla
- Advanced Custom Fields - пакет плагинов пользовательских полей (видео-сервисы, карты и иже с ними)
- Smile Pack - пакет расширений
- MailChimp Auto-Subscribe

Незамедлительно была проведена полная внутренняя проверка кода, внедрены дополнительные меры проверки и повышения безопасности, а также выпущены исправленные версии всех затронутых расширений. Проблема полностью решена.

👉 Суть уязвимости.
Уязвимость заключалась в том, как плагин Tassos Framework обрабатывал определенные AJAX-запросы через com_ajaxточку входа Joomla. При определенных условиях внутренняя функциональность фреймворка могла быть вызвана без надлежащих ограничений.

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

При определенных обстоятельствах запросы к базе данных могли быть изменены для извлечения данных из базы данных Joomla. В совокупности эти возможности потенциально могли быть использованы для повышения уровня доступа и выполнения несанкционированного кода.

В настоящее время нет никаких доказательств того, что эта уязвимость была использована в реальных условиях.

Немедленно обновите расширения до безопасных версий (Joomla 4/5/6 | Joomla 3):
- Convert Forms - v5.1.1 / v.4.1.1
- EngageBox - v.7.1.1 / v,6,3,9
- Google Structured Data - v.6.1.1 / v.5.6.9
- Advanced Custom Fields - v.3.1.1 / v.2.8.10
- Smile Pack - v.2.1.1 / v.1.2.4.
- MailChimp Auto-Subscribe - v.5.1.1+ / v.5.0.4

Все указанные версии включают в себя релиз безопасности плагина Tassos Framework System Plugin v6.0.62.

Если у вас установлено несколько расширений Tassos, достаточно обновить только одно, чтобы применить патч. Однако всегда рекомендуется обновлять все расширения.

@joomlafeed

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

Проект III: Мультикатегории.
В настоящее время Joomla! не позволяет назначать один элемент нескольким категориям. Хотя система тегов часто используется в качестве замены, существует острая потребность в нативной поддержке нескольких категорий, чтобы привести Joomla! в соответствие с другими современными системами управления контентом.

Проект IV: Обучение с подкреплением на основе отзывов переводчиков.
Joomla собирается использовать автоматический перевод документации. В каждом языке есть свои специфические слова, характерные для Joomla. Предполагается обучать языковые модели, используя обратную связь от переводчиков, чтобы постоянно улучшать качество переводов и учитывать специфические языковые особенности Joomla.

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

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

sirecan

  • Новичок
  • 8
  • 1 / 0
Вывод товара в таблице
« : 28.09.2009, 13:40:38 »
Здравствуйте, в связи с тем что планируется большое количество товара и у каждого товара будет много параметров.
Остановился на выводе в виде таблицы.
Подскажите как можно это сделать или какой-нибудь готовый модуль?
Причем нужно, чтобы для каждой категории количество и название столбцов изменялось! - это самое главное.
Заранее благодарен.
*

alexmal

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Re: Вывод товара в таблице
« Ответ #1 : 04.10.2009, 20:12:30 »
Да актуальный вопрос и для меня тоже, необходимо сделать вывод товаров в категории ввиде таблицы и на странице результатов поискатоже. Не могу найти файл шаблона который отвечает за вывод товаров в категории меняю browse и flypage меняется только карточка товара.
*

onreik

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Вывод товара в таблице
« Ответ #2 : 12.10.2009, 00:06:42 »
Присоединяюсь к теме! У меня правдо небольшое дополнение, как вывести в карточке товара не все параметры товара а необходимые и как поменять структуру их вывода!

Хотя было бы классно узнать ответ на вопрос автора топика!
*

sirecan

  • Новичок
  • 8
  • 1 / 0
Re: Вывод товара в таблице
« Ответ #3 : 21.10.2009, 08:58:16 »
Проблему решил.
Если кому интересно, ниже описываю как это сделал.

Всё делается в файле /components/com_virtuemart/themes/default/templates/browse/includes/browse_listtable.tpl.php
Решение довольно простое и не тривиальное.

Вот код:
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__); ?>

<?php echo $browsepage_header // The heading, the category description ?>
<?php echo $parameter_form // The Parameter search form ?>
<?php echo $orderby_form // The sort-by, order-by form PLUS top page navigation ?>


<?php

$data =array(); // Holds the rows of products
$i = 1; $row = 0; // Counters

// Table header


 if ($category_id == 1 || $category_id == 6 || $category_id == 7) {

$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_NAME').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_SIZE1').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_WEIGHT').'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_PRICE').'</center>';
}
// $tableheader[] = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_THUMB_IMAGE');
if( _SHOW_PRICES && $auth['show_prices'] && USE_AS_CATALOGUE != '1' ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_ACTION').'</center>';
}

// Creates a new HTML_Table object that will help us
// to build a table holding all the products
$table =& new HTML_Table('width="100%"');

$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );

foreach( $products as $product ) {

foreach( $product as $attr => $val ) {
// Using this we make all the variables available in the template
// translated example: $this->set( 'product_name', $product_name );
$this->set( $attr, $val );
}


$data[$row][] = $product['product_name'];
$data[$row][] = '<center>'.$product['km_size1'].'</center>';
$data[$row][] = '<center>'.$product['km_weight'].'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$data[$row][] = '<center>'.$product['product_price'].'</center>';
}


// $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
// . ps_product::image_tag( $product['product_thumb_image'] )
// . '</a>';
if( $product['has_addtocart'] ) {
$data[$row][] = '<center>'.$product['form_addtocart'].'</center>';
}
else {
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
. $product['product_details']
. '</a>';
}

$row++;

}


}

elseif ($category_id == 12 || $category_id == 13 || $category_id == 14 || $category_id == 15) {

$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_NAME').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_SIZE').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_SIZE1').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_TYPE').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_KM_KOL').'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_PRICE').'</center>';
}
// $tableheader[] = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_THUMB_IMAGE');
if( _SHOW_PRICES && $auth['show_prices'] && USE_AS_CATALOGUE != '1' ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_ACTION').'</center>';
}

// Creates a new HTML_Table object that will help us
// to build a table holding all the products
$table =& new HTML_Table('width="100%"');

$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );

foreach( $products as $product ) {

foreach( $product as $attr => $val ) {
// Using this we make all the variables available in the template
// translated example: $this->set( 'product_name', $product_name );
$this->set( $attr, $val );
}

$data[$row][] = $product['product_name'];
$data[$row][] = '<center>'.$product['km_size'].'</center>';
$data[$row][] = '<center>'.$product['km_size1'].'</center>';
$data[$row][] = '<center>'.$product['km_type'].'</center>';
$data[$row][] = '<center>'.$product['km_kol'].'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$data[$row][] = '<center>'.$product['product_price'].'</center>';
}


// $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
// . ps_product::image_tag( $product['product_thumb_image'] )
// . '</a>';
if( $product['has_addtocart'] ) {
$data[$row][] = '<center>'.$product['form_addtocart'].'</center>';
}
else {
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
. $product['product_details']
. '</a>';
}

$row++;

}


}


else {

$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_NAME').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_SKU').'</center>';
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_PRODUCT_DESC_TITLE').'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_PRICE').'</center>';
}
// $tableheader[] = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_THUMB_IMAGE');
if( _SHOW_PRICES && $auth['show_prices'] && USE_AS_CATALOGUE != '1' ) {
$tableheader[] = '<center>'.$VM_LANG->_('PHPSHOP_CART_ACTION').'</center>';
}

// Creates a new HTML_Table object that will help us
// to build a table holding all the products
$table =& new HTML_Table('width="100%"');

$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );

foreach( $products as $product ) {

foreach( $product as $attr => $val ) {
// Using this we make all the variables available in the template
// translated example: $this->set( 'product_name', $product_name );
$this->set( $attr, $val );
}


$data[$row][] = $product['product_name'];
$data[$row][] = '<center>'.$product['product_sku'].'</center>';
$data[$row][] = '<center>'.$product['product_s_desc'].'</center>';
if( _SHOW_PRICES && $auth['show_prices'] ) {
$data[$row][] = '<center>'.$product['product_price'].'</center>';
}


// $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
// . ps_product::image_tag( $product['product_thumb_image'] )
// . '</a>';
if( $product['has_addtocart'] ) {
$data[$row][] = '<center>'.$product['form_addtocart'].'</center>';
}
else {
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
. $product['product_details']
. '</a>';
}

$row++;

}


}



// Loop through each row and build the table
foreach($data as $key => $value) {

$table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
$i = $i == 1 ? 2 : 1;
}
// Display the table
echo $table->toHtml();

?>

<br class="clr" /><br />
<?php echo $browsepage_footer ?>
<?php
// Show Featured Products
if( $this->get_cfg( 'showFeatured', 1 )) {
    /* featuredproducts(random, no_of_products,category_based) no_of_products 0 = all else numeric amount
    edit featuredproduct.tpl.php to edit layout */
    echo $ps_product->featuredProducts(true,10,true);
} ?>
<?php echo $recent_products ?>


Т.е. простой вывод по категориям, через операторы elseif и else.
Если категория такая-то, то выводим определенный набор столбцов, если такая - другой, и так далее.
Единственное пришлось добавлять новые поля в базу, но это не сложно, вот здесь описано как http://joomlaforum.ru/index.php/topic,36710.0.html
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод товара из дочерних категорий в родительскую

Автор B0nG

Ответов: 0
Просмотров: 2972
Последний ответ 03.08.2014, 15:13:57
от B0nG
ID товара вместо cdata

Автор newsky

Ответов: 0
Просмотров: 2655
Последний ответ 01.07.2014, 13:05:12
от newsky
Расширенный Ajax-поиск по характеристикам товара VirtueMart

Автор Arkadiy

Ответов: 990
Просмотров: 213668
Последний ответ 27.06.2014, 16:47:52
от DeLight
Не могу убрать форму "Задайте вопрос..." на странице товара

Автор abrodski

Ответов: 1
Просмотров: 2798
Последний ответ 20.05.2014, 14:30:44
от abrodski
Свойства товара без подтягивания скидки

Автор One

Ответов: 0
Просмотров: 2214
Последний ответ 13.05.2014, 16:53:53
от One