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

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Вечер добрый
Подскажите пожалуйста
Как ссылки "Предыдущая" и "Следующая" в постраничной навигации заменить картинками?

В pagenavigation только какието
Код
$html .= $list['previous']['data'];
и
Код
$html .= $list['next']['data'];

Заранее спасибо
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Отбой, уже решил другим способом
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
и всё же не решил, посоветуйте пожалуйста, как это можно организовать?

*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Так как кастомизация пагинации в Joomla сделана через *опу, придется поковырять pagination.php, тот что в пабке library/joomla/html.
Если оч надо - помыслю и напишу что и как сделать.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Буду очень благодарен, если поможете
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
В искомом файле строка №483 и №498 :
Код
$data->previous	= new JPaginationObject(JText::_('Prev'));
$data->next = new JPaginationObject(JText::_('Next'));
меняем на:
Код
$data->previous	= new JPaginationObject('<img src="../../../images/back_f2.png"');
$data->next = new JPaginationObject('<img src="../../../images/back_f2.png"');
адрес к изображению и само изображение по вкусу.
Там же и находятся Start & End (в смысле Первая и Последняя)
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Да, думаю это то что надо, но у меня в шаблоне уже свой pagination.php

объявил, но чтото тольок текст отображается

Код
function pagination_list_render($list)
{
// Initialize variables
$data->previous = new JPaginationObject('<img src="../images/prev.png">');    //----объявить вначале это ясно
    $data->next = new JPaginationObject('<img src="../images/next.png">');
$html = "<div class=\"pagenav\">";
if(strpos($list['start']['data'], "<a") === 0)
$html .= $list['start']['data'];
$html .= $list['previous']['data'];

foreach( $list['pages'] as $page )
{
if($page['data']['active']) {

}

$html .= $page['data'];

if($page['data']['active']) {

}
}

$html .= $list['next']['data'];
if(strpos($list['end']['data'], "<a") === 0)
$html .= $list['end']['data'];
$html .= '';


$html .= "</div>";
return $html;
}

function pagination_item_active(&$item) {
return "<a href=\"".$item->link."\" title=\"".$item->text."\">".$item->text."</a>";
}

function pagination_item_inactive(&$item) {
return "<span>".$item->text."</span>";
}
?>

заранее спасибо
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Препарируем файл library/joomla/html/pagination.php. Находим метод _buildDataObject.
В последнем цикле метода сразу после
Код: php
			$data->pages[$i] = new JPaginationObject($i);
добавляем
Код: php
			// alien code begin
$data->pages[$i]->type = 'page';
// alien code end
После цикла, перед return $data добавляем
Код: php
		// alien code begin
$data->start->type = 'start';
$data->previous->type = 'previous';
$data->next->type = 'next';
$data->end->type = 'end';
// alien code end
Теперь в файле pagination.php, в том что в шаблоне валяется(предполагается что взят из beez, с ul-списком), мы можем пользоваться свойством ->type, которое поможет различать ссылки как-то.
Можно например написать такие функции:

Код: php
function pagination_item_active(&$item) {
return "<li><a class=\"". $item->type ."\" href=\"".$item->link."\" title=\"".$item->text."\">".$item->text."</a></li>";
}

function pagination_item_inactive(&$item) {
return "<li><span class=\"". $item->type ."\">".$item->text."</span></li>";
}

Далее, в CSS произвести подмену текста Предыдущая и Следующая на нужные картинки.
Чета типа этого:
.pagination .previous{
    display: block;
    width: 40px;
    height: 20px;
    text-indent: -999px;
    overflow: hidden;
    background: url(../images/prevous.png) no-repeat;
}


ПС: писал долго блин...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
ща поштудируем ваш вариант, спасибо большое
*

jem777

  • Завсегдатай
  • 1666
  • 119 / 2
Да, думаю это то что надо, но у меня в шаблоне уже свой pagination.php

объявил, но чтото тольок текст отображается

заранее спасибо

Проверьте пути. У меня все нормально отображается.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
так если в шаблоне своя пагинация то там и править нужно, или я ошибаюсь? :)
Я с мобильного, в основном...
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
в шаблоне может быть только пару функций из пагинации, однако полный набор в библиотеках/Joomla...
*

mxa

  • Осваиваюсь на форуме
  • 23
  • 4 / 5
Нашел готовый pagination.php с картинками и вообще легко и удобно настраиваемый для шаблона без необходимости лезть в движок http://vintagemarketing.co.uk/v1/Joomla/icons-on-pagination-for-joomla.html
Можно добавить классы ко всем элементам навигации и тогда делаете так как хотите. Суперская вещь.

Вот код:
Код
<?php
/**
* @version $Id: pagination.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
* This is a file to add template specific chrome to pagination rendering.
*
* pagination_list_footer
* Input variable $list is an array with offsets:
* $list[limit] : int
* $list[limitstart] : int
* $list[total] : int
* $list[limitfield] : string
* $list[pagescounter] : string
* $list[pageslinks] : string
*
* pagination_list_render
* Input variable $list is an array with offsets:
* $list[all]
* [data] : string
* [active] : boolean
* $list[start]
* [data] : string
* [active] : boolean
* $list[previous]
* [data] : string
* [active] : boolean
* $list[next]
* [data] : string
* [active] : boolean
* $list[end]
* [data] : string
* [active] : boolean
* $list[pages]
* [{PAGE}][data] : string
* [{PAGE}][active] : boolean
*
* pagination_item_active
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* pagination_item_inactive
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* This gives template designers ultimate control over how pagination is rendered.
*
* NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both
*/

function pagination_list_footer($list)
{
// Initialize variables
$lang =& JFactory::getLanguage();
$html = "<div class=\"list-footer\">\n";

$html .= "\n<div class=\"limit\">".JText::_('Display Num').$list['limitfield']."</div>";
$html .= $list['pageslinks'];
$html .= "\n<div class=\"counter\">".$list['pagescounter']."</div>";

$html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"".$list['limitstart']."\" />";
$html .= "\n</div>";

return $html;
}

function pagination_list_render($list)
{
// Initialize variables
$lang =& JFactory::getLanguage();
$html = "<div class='p-2'>";


if($list['start']['active']) {
$item = explode("&OElig;#&aring;", $list['start']['data']);
$linkStart = $item[0];
$titleStart = $item[1];
$html .= "<span><a href='" . $linkStart . "' title='" . $titleStart . "'><img src='images/vintage/first.png' width='16' height='16' class='correct-png' /></a></span>";
} else {
$titleStart = $list['start']['data'];
$html .= "<span><img src='images/vintage/first0.png' alt='" . $titleStart . "' title='" . $titleStart . "' width='16' height='16' class='correct-png' /></span>";
}


if($list['previous']['active']) {
$item = explode("&OElig;#&aring;", $list['previous']['data']);
$linkPreviouos = $item[0];
$titlePreviouos = $item[1];
$html .= "<span><a href='" . $linkPreviouos . "' title='" . $titlePreviouos . "'><img src='images/vintage/previous.png' width='16' height='16' class='correct-png' /></a></span>";
} else {
$titlePreviouos = $list['previous']['data'];
$html .= "<span><img src='images/vintage/previous0.png' alt='" . $titlePreviouos . "' title='" . $titlePreviouos . "' width='16' height='16' class='correct-png' /></span>";
}


foreach( $list['pages'] as $page )
{

if($page['data']['active']) {
$item = explode("&OElig;#&aring;", $page['data']);
$linkPage = $item[0];
$titlePage = $item[1];
$html .= "<span><a href='" . $linkPage . "' title='" . $titlePage . "'>" .$titlePage. "</a></span>";
} else {
$html .= "<span>" . $page['data'] . "</span>";
}
}


if($list['next']['active']) {
$item = explode("&OElig;#&aring;", $list['next']['data']);
$linkNext = $item[0];
$titleNext = $item[1];
$html .= "<span><a href='" . $linkNext . "' title='" . $titleNext . "'><img src='images/vintage/next.png' width='16' height='16'/></a></span>";
} else {
$titleNext = $list['next']['data'];
$html .= "<span><img src='images/vintage/next0.png' alt='" . $titleNext . "' title='" . $titleNext . "' width='16' height='16' /></span>";
}


if($list['end']['active']) {
$item = explode("&OElig;#&aring;", $list['end']['data']);
$linkEnd = $item[0];
$titleEnd = $item[1];
$html .= "<span><a href='" . $linkEnd . "' title='" . $titleEnd . "'><img src='images/vintage/last.png' width='16' height='16'/></a></span>";
} else {
$titleEnd = $list['end']['data'];
$html .= "<span><img src='images/vintage/last0.png' alt='" . $titleEnd . "' title='" . $titleEnd . "' width='16' height='16' /></span>";
}

$html .= "</div>";

return $html;
}

function pagination_item_active(&$item) {
return $item->link . "&OElig;#&aring;" . $item->text;
}

function pagination_item_inactive(&$item) {
return $item->text;
}
?>
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
*

tolyan15

  • Новичок
  • 9
  • 0 / 0
Нашел готовый pagination.php с картинками и вообще легко и удобно настраиваемый для шаблона без необходимости лезть в движок http://vintagemarketing.co.uk/v1/Joomla/icons-on-pagination-for-joomla.html
Можно добавить классы ко всем элементам навигации и тогда делаете так как хотите. Суперская вещь.

Вот код:
Код
<?php
/**
* @version $Id: pagination.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
* This is a file to add template specific chrome to pagination rendering.
*
* pagination_list_footer
* Input variable $list is an array with offsets:
* $list[limit] : int
* $list[limitstart] : int
* $list[total] : int
* $list[limitfield] : string
* $list[pagescounter] : string
* $list[pageslinks] : string
*
* pagination_list_render
* Input variable $list is an array with offsets:
* $list[all]
* [data] : string
* [active] : boolean
* $list[start]
* [data] : string
* [active] : boolean
* $list[previous]
* [data] : string
* [active] : boolean
* $list[next]
* [data] : string
* [active] : boolean
* $list[end]
* [data] : string
* [active] : boolean
* $list[pages]
* [{PAGE}][data] : string
* [{PAGE}][active] : boolean
*
* pagination_item_active
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* pagination_item_inactive
* Input variable $item is an object with fields:
* $item->base : integer
* $item->link : string
* $item->text : string
*
* This gives template designers ultimate control over how pagination is rendered.
*
* NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both
*/

function pagination_list_footer($list)
{
// Initialize variables
$lang =& JFactory::getLanguage();
$html = "<div class=\"list-footer\">\n";

$html .= "\n<div class=\"limit\">".JText::_('Display Num').$list['limitfield']."</div>";
$html .= $list['pageslinks'];
$html .= "\n<div class=\"counter\">".$list['pagescounter']."</div>";

$html .= "\n<input type=\"hidden\" name=\"limitstart\" value=\"".$list['limitstart']."\" />";
$html .= "\n</div>";

return $html;
}

function pagination_list_render($list)
{
// Initialize variables
$lang =& JFactory::getLanguage();
$html = "<div class='p-2'>";


if($list['start']['active']) {
$item = explode("&OElig;#&aring;", $list['start']['data']);
$linkStart = $item[0];
$titleStart = $item[1];
$html .= "<span><a href='" . $linkStart . "' title='" . $titleStart . "'><img src='images/vintage/first.png' width='16' height='16' class='correct-png' /></a></span>";
} else {
$titleStart = $list['start']['data'];
$html .= "<span><img src='images/vintage/first0.png' alt='" . $titleStart . "' title='" . $titleStart . "' width='16' height='16' class='correct-png' /></span>";
}


if($list['previous']['active']) {
$item = explode("&OElig;#&aring;", $list['previous']['data']);
$linkPreviouos = $item[0];
$titlePreviouos = $item[1];
$html .= "<span><a href='" . $linkPreviouos . "' title='" . $titlePreviouos . "'><img src='images/vintage/previous.png' width='16' height='16' class='correct-png' /></a></span>";
} else {
$titlePreviouos = $list['previous']['data'];
$html .= "<span><img src='images/vintage/previous0.png' alt='" . $titlePreviouos . "' title='" . $titlePreviouos . "' width='16' height='16' class='correct-png' /></span>";
}


foreach( $list['pages'] as $page )
{

if($page['data']['active']) {
$item = explode("&OElig;#&aring;", $page['data']);
$linkPage = $item[0];
$titlePage = $item[1];
$html .= "<span><a href='" . $linkPage . "' title='" . $titlePage . "'>" .$titlePage. "</a></span>";
} else {
$html .= "<span>" . $page['data'] . "</span>";
}
}


if($list['next']['active']) {
$item = explode("&OElig;#&aring;", $list['next']['data']);
$linkNext = $item[0];
$titleNext = $item[1];
$html .= "<span><a href='" . $linkNext . "' title='" . $titleNext . "'><img src='images/vintage/next.png' width='16' height='16'/></a></span>";
} else {
$titleNext = $list['next']['data'];
$html .= "<span><img src='images/vintage/next0.png' alt='" . $titleNext . "' title='" . $titleNext . "' width='16' height='16' /></span>";
}


if($list['end']['active']) {
$item = explode("&OElig;#&aring;", $list['end']['data']);
$linkEnd = $item[0];
$titleEnd = $item[1];
$html .= "<span><a href='" . $linkEnd . "' title='" . $titleEnd . "'><img src='images/vintage/last.png' width='16' height='16'/></a></span>";
} else {
$titleEnd = $list['end']['data'];
$html .= "<span><img src='images/vintage/last0.png' alt='" . $titleEnd . "' title='" . $titleEnd . "' width='16' height='16' /></span>";
}

$html .= "</div>";

return $html;
}

function pagination_item_active(&$item) {
return $item->link . "&OElig;#&aring;" . $item->text;
}

function pagination_item_inactive(&$item) {
return $item->text;
}
?>

Подскажите, куда вставлять :o
*

Iskander

  • Осваиваюсь на форуме
  • 25
  • 3 / 0
Подскажите, куда вставлять :o
Думаю, это содержание файла /templates/шаблон/html/pagination.php
*

Junior

  • Новичок
  • 3
  • 0 / 0
Как сделать чтобы при попадании на первую или последнюю страницу убирались << Первая < Предыдущая или  Следующая > Последняя >>    соответственно?
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Находил видео урок по этому вопросу, поищите по поисковикам
*

Junior

  • Новичок
  • 3
  • 0 / 0
Вы имеете ввиду погуглить? Тогда подскажите как вы искали, потому что я не то что видео, я нормальное текстовое описание проблемы даже на английском не нашел, не говоря уже о рунете.

искал что-то типа remove start end from pagenav Joomla 1.5 с разными вариациями. Может плохо искал...

На форуме увидел вот такую тему
http://joomlaforum.ru/index.php/topic,118019.0.html
где-то сродни моей

По ссылке вместо помощи в теме топикстартеру было предложено поискать
Цитировать
...по форуму "pagintaion" или "пагинация".
Темы обсуждались неоднократно.

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

Хотя бы знать в каком месте проверку на текущий номер страницы в пагинации делать, чтобы убирать вышеупомянутые start и end
« Последнее редактирование: 25.01.2011, 17:53:21 от Junior »
*

Junior

  • Новичок
  • 3
  • 0 / 0
Спасибо за помощь. Урок все разжевал до наночастиц  *DRINK*
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как выводить в RSS Https ссылки с Ninja RSS Syndicator?

Автор kabban

Ответов: 0
Просмотров: 2468
Последний ответ 08.10.2017, 05:30:53
от kabban
Быстрые ссылки Яндекса и Joomla

Автор askona

Ответов: 5
Просмотров: 4773
Последний ответ 14.07.2017, 13:16:35
от Edward_m
Не отображаются материалы и ссылки на сайте (joomla 1.5)

Автор МарияЛ

Ответов: 1
Просмотров: 1657
Последний ответ 17.03.2017, 20:33:56
от voland
где SEO ссылки хранятся в Joomla ?

Автор knatalik

Ответов: 4
Просмотров: 1996
Последний ответ 07.11.2016, 22:22:57
от altvvc
как изменить вывод постраничной навигации?

Автор maxvolume

Ответов: 36
Просмотров: 23231
Последний ответ 15.04.2015, 12:46:42
от Porox