Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

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

Arisha

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Подскажите, пожалуйста! Вот модуль mod_mt_categories_expanding. Он выводит категории и подкатегории в один столбец.
Как переделать этот код, чтобы подкатегории через запятую были сразу видны в строчку под своей категорией и вывести все в 2 столбца? (результат на картинке)
Код
<?php

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

include( $mosConfig_absolute_path . '/components/com_mtree/init.php');
require_once( $mosConfig_absolute_path.'/administrator/components/com_mtree/admin.mtree.class.php');

# Get params
$categoryclass = $params->get( 'categoryclass', 'catlevel_' );
$moduleclass = $params->get( 'moduleclass', 'mainlevel' );
$pad_string = $params->get( 'pad_string', '&nbsp;&nbsp;&nbsp;' );
$output_type = $params->get( 'output_type', 'table' );
$primary_order = $params->get( 'primary_order', $mtconf->get('first_cat_order1') );
$primary_sort = $params->get( 'primary_sort', $mtconf->get('first_cat_order2') );
$secondary_order = $params->get( 'secondary_order', $mtconf->get('second_cat_order1') );
$secondary_sort = $params->get( 'secondary_sort', $mtconf->get('second_cat_order2') );
$show_empty_cat = $params->get( 'show_empty_cat', $mtconf->get('display_empty_cat') );
$show_totalcats = $params->get( 'show_totalcats', 0 );
$show_totallisting = $params->get( 'show_totallisting', 1 );
$hide_active_cat_count = $params->get( 'hide_count', 1 );
$expand_level_1_categories = $params->get( 'expand_level_1_categories', 0 );

if ($show_empty_cat == -1) $show_empty_cat = $mtconf->get('display_empty_cat');
if ($primary_order == -1) $primary_order = $mtconf->get('first_cat_order1');
if ($primary_sort == -1) $primary_sort = $mtconf->get('first_cat_order2');
if ($secondary_order == -1) $secondary_order = $mtconf->get('second_cat_order1');
if ($secondary_sort == -1) $secondary_sort = $mtconf->get('second_cat_order2');

# Get Itemid, determine if the MT component is published
global $mt_itemid;
if(!isset($mt_itemid)) {
$database->setQuery("SELECT id FROM #__menu"
. "\nWHERE link='index.php?option=com_mtree'"
. "\nAND published='1'"
. "\nLIMIT 1");
$mt_itemid = $database->loadResult();
}

# Try to retrieve current category
$link_id = intval( mosGetParam( $_REQUEST, 'link_id', 0 ) );
$cat_id = intval( mosGetParam( $_REQUEST, 'cat_id', 0 ) );

if ( $link_id > 0 && $cat_id == 0 ) {
$database->setQuery( "SELECT cat_id FROM #__mt_cl WHERE link_id ='".$link_id."' && main = '1'" );
$cat_id = $database->loadResult();
}

# Get the main categories first
$sql = "SELECT cat_name, cat_id, cat_cats, cat_links FROM #__mt_cats WHERE cat_published=1 && cat_approved=1 && cat_parent='0' ";
if ( !$mtconf->get('display_empty_cat') ) { $sql .= " && ( cat_cats > 0 || cat_links > 0 ) "; }
$sql .= "ORDER BY $primary_order $primary_sort, $secondary_order $secondary_sort";

$database->setQuery( $sql );
$cats[0] = $database->loadObjectList();

$pathway_cats = array();
if( $expand_level_1_categories ) {
foreach($cats[0] AS $cat) {
$pathway_cats[] = $cat->cat_id;
}
}

if( !in_array($cat_id,$pathway_cats) ) {
$pathway = new mtPathWay( $cat_id );
$pathway_cats = array_merge($pathway->getPathWayWithCurrentCat(),$pathway_cats);
}

foreach( $pathway_cats AS $pathway_cat ) {

$sql = "SELECT cat_name, cat_id, cat_cats, cat_links FROM #__mt_cats WHERE cat_published=1 && cat_approved=1 && cat_parent='".$pathway_cat."' ";
if ( !$mtconf->get('display_empty_cat') ) { $sql .= " && ( cat_cats > 0 || cat_links > 0 ) "; }
$sql .= "ORDER BY $primary_order $primary_sort, $secondary_order $secondary_sort";

$database->setQuery( $sql );
$cats[$pathway_cat] = $database->loadObjectList();

}

function print_cat_recursive( &$all_categories, $category_id, $show_totalcats, $show_totallisting, $categoryclass, $output_type, $pad_string, $hide_active_cat_count, $mt_itemid ) {
global $cat_id;
static $level=0;

$categories = $all_categories[$category_id];

if ( $output_type == 'ul' ) {
echo "<ul>";
} else {
echo '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
}

foreach( $categories AS $cat ) {

if ( $output_type == 'ul' ) {
echo '<li';
} else {
echo '<tr><td';
}

echo ' class="'.$categoryclass.$level;

if( $cat_id == $cat->cat_id ) {
echo '_sel';
} elseif(array_key_exists($cat->cat_id, $all_categories)) {
echo '_active';
}

echo '">';

if ( $output_type == 'table' ) {
echo str_repeat($pad_string,($level));
}

echo '<a href="'.sefRelToAbs("index.php?option=com_mtree&task=listcats&cat_id=$cat->cat_id&Itemid=$mt_itemid").'">'.$cat->cat_name;
echo "</a>";

if ( $hide_active_cat_count && array_key_exists($cat->cat_id, $all_categories) ) {
//hide
} else {
if ( $show_totalcats xor $show_totallisting ) {
echo " <small>(".(($show_totalcats)? $cat->cat_cats:$cat->cat_links ).")</small>";
} elseif( $show_totalcats && $show_totallisting ) {
echo " <small>(".$cat->cat_cats."/".$cat->cat_links.")</small>";
}
}

if(array_key_exists($cat->cat_id, $all_categories))  {
$level++;
print_cat_recursive($all_categories, $cat->cat_id, $show_totalcats, $show_totallisting, $categoryclass, $output_type, $pad_string, $hide_active_cat_count, $mt_itemid);
$level--;

}

if ( $output_type == 'ul' ) {
echo "</li>";
} else {
echo "</td></tr>";
}

}

if ( $output_type == 'ul' ) {
echo "</ul>";
} else {
echo "</table>";
}

return true;
}

print_cat_recursive($cats, 0, $show_totalcats, $show_totallisting, $categoryclass, $output_type, $pad_string, $hide_active_cat_count, $mt_itemid);
?>

[вложение удалено Администратором]
*

Arisha

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Изменить модуль mod_mt_categories_expanding
« Ответ #1 : 21.10.2009, 09:34:14 »
Кому интересно, пока не написала верхний пост, сама не разобралась ^-^. Выкладываю измененный модуль, выводит в 2 столбца, категории с подкатегориями (кол-во подкатегорий ограничивается в коде). Для версии 2.1

[вложение удалено Администратором]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль (Лучшие материалы)

Автор sinij

Ответов: 0
Просмотров: 3493
Последний ответ 27.10.2017, 15:25:20
от sinij
НЕ могу изменить категорию при добавлении материала

Автор lolitma3

Ответов: 0
Просмотров: 4010
Последний ответ 12.11.2016, 21:10:19
от lolitma3
Вывести модуль Joomla в файле sub_listingDetails.tpl.php

Автор rafaello9

Ответов: 3
Просмотров: 2764
Последний ответ 07.04.2014, 13:53:14
от ivan.andreyev
Модуль последние отзывы для Mosets Tree!

Автор portal

Ответов: 3
Просмотров: 3330
Последний ответ 25.02.2014, 14:51:05
от vigiv
Как изменить слово каталог в Mosets Tree?

Автор Gugolovski

Ответов: 2
Просмотров: 2059
Последний ответ 20.11.2013, 03:00:01
от Dredik