Новости 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.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

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
Просмотров: 2780
Последний ответ 08.10.2017, 05:30:53
от kabban
Быстрые ссылки Яндекса и Joomla

Автор askona

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

Автор МарияЛ

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

Автор knatalik

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

Автор maxvolume

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