Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 7 Ответов
  • 4885 Просмотров
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Привет форумчане.
очень странно, что нет ни одного решения в Интернете по поводу настройки ЧПУ именно в моей ситуации.
Тем много нашел, а ответов с решением нет.
Предлагаю разобрать ситуацию.
Включив все настройки SEO в Joomla, а также в самом компоненте K2 имею ссылку следующего вида:
мойсайт.ru/home-page/society/item/24321-na-donetchine-71-letnii-starik-snimal-porno-s-maloletnei-devochkoi.html
где home-page - alias из меню
society - alias из категории компонента k2
item и номер 24321 - статья и её IDшник.
Вопрос, как убрать всё лишнее, чтобы осталась ссылка такого вида:
мойсайт.ru/na-donetchine-71-letnii-starik-snimal-porno-s-maloletnei-devochkoi.html

P.S. С настройками игрался, получалось убрать только home-page, но в конце тогда добавляется .html, а оно мне не нужно.
Самое странное - откуда берется id новости и item.
*

AL_ALEX

  • Глобальный модератор
  • 855
  • 112 / 1
Если не читал, то почитай, может на ведет на какие-то выводы.
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Спасибо. Как раз это и читал. Взял оттуда этот код для router
Код
<?php
/**
 * @version                $Id: router.php 1492 2012-02-22 17:40:09Z joomlaworks@gmail.com $
 * @package                K2
 * @author                JoomlaWorks http://www.joomlaworks.net
 * @copyright        Copyright (c) 2006 - 2012 JoomlaWorks Ltd. All rights reserved.
 * @license                GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
//SELECT alias FROM `j25_k2_items` WHERE id = "1" LIMIT 1
//SELECT id FROM `j25_k2_items` WHERE alias = "test" LIMIT 1
function K2BuildRoute( & $query) {

    $segments = array ();

    $menu = & JSite::getMenu();
    if ( empty($query['Itemid'])) {
        $menuItem = & $menu->getActive();
    }
    else {
        $menuItem = & $menu->getItem($query['Itemid']);
    }
    $mView = ( empty($menuItem->query['view']))?null:$menuItem->query['view'];
    $mTask = ( empty($menuItem->query['task']))?null:$menuItem->query['task'];
    $mId = ( empty($menuItem->query['id']))?null:$menuItem->query['id'];
    $mTag = ( empty($menuItem->query['tag']))?null:$menuItem->query['tag'];

    if ( isset ($query['layout'])) {
        unset ($query['layout']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mId == @intval($query['id']) &&  @intval($query['id']) > 0 ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['id']);
    }

    if ( $mView == @$query['view'] && $mTask == @$query['task'] && $mTag == @$query['tag'] && isset($query['tag']) ) {
        unset ($query['view']);
        unset ($query['task']);
        unset ($query['tag']);
    }

    if ( isset ($query['view'])) {
        $view = $query['view'];
        $segments[] = $view;
        unset ($query['view']);
    }

    if (@ isset ($query['task'])) {
        $task = $query['task'];
        $segments[] = $task;
        unset ($query['task']);
    }

    if ( isset ($query['id'])) {
        $id = $query['id'];
        $segments[] = $id;
        unset ($query['id']);
    }

    if ( isset ($query['cid'])) {
        $cid = $query['cid'];
        $segments[] = $cid;
        unset ($query['cid']);
    }

    if ( isset ($query['tag'])) {
        $tag = $query['tag'];
        $segments[] = $tag;
        unset ($query['tag']);
    }

    if ( isset ($query['year'])) {
        $year = $query['year'];
        $segments[] = $year;
        unset ($query['year']);
    }

    if ( isset ($query['month'])) {
        $month = $query['month'];
        $segments[] = $month;
        unset ($query['month']);
    }

    if ( isset ($query['day'])) {
        $day = $query['day'];
        $segments[] = $day;
        unset ($query['day']);
    }

    if ( isset ($query['task'])) {
        $task = $query['task'];
        $segments[] = $task;
        unset ($query['task']);
    }

        // Изменения.
        if(isset($segments[0]))
        {
                if($segments[0]=='item')
                {
                        $alias = explode(':',$segments[1]);
                        $segments[0]=$alias[1];
                        $segments[1]=null;
                }
        }
        // Изменения. Конец.

    return $segments;
}

function K2ParseRoute($segments) {
    $vars = array ();

        // Изменения.
        $id = false;
        if(count($segments)==1)
        {
                $alias = $segments[0];
                $alias = str_replace ( ':' , '-' , $alias);
                $db = &JFactory::getDBO();
                $query = 'SELECT id FROM `#__k2_items` WHERE alias = "'.$alias.'" LIMIT 1';
                $db->setQuery($query);
                $id = $db->loadResult();
        }

        if($id)
        {
                $vars['view'] = 'item';
                $vars['task'] = $id.':'.$alias;
                $vars['id'] = $vars['task'];
        }else{
        // Изменения. Конец.

    $vars['view'] = $segments[0];
    if (!isset($segments[1]))
        $segments[1]='';
    $vars['task'] = $segments[1];

    if ($segments[0] == 'itemlist') {

        switch($segments[1]) {

            case 'category':
                $vars['id'] = $segments[2];
                break;

            case 'tag':
                if (isset($segments[2]))
                    $vars['tag'] = $segments[2];
                break;

            case 'user':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            case 'date':
                if (isset($segments[2]))
                    $vars['year'] = $segments[2];
                if (isset($segments[3]))
                    $vars['month'] = $segments[3];
                if (isset($segments[4])) {
                    $vars['day'] = $segments[4];
                }
                break;

        }

    }

    else if ($segments[0] == 'item') {

        switch($segments[1]) {

            case 'edit':
                if (isset($segments[2]))
                    $vars['cid'] = $segments[2];
                break;

            case 'download':
                if (isset($segments[2]))
                    $vars['id'] = $segments[2];
                break;

            default:
                $vars['id'] = $segments[1];
                break;

        }

    }

        if($segments[0] == 'comments' && isset($segments[1]) && $segments[1] == 'reportSpammer') {
                $vars['id'] = $segments[2];
        }

        // Изменения.
        }
        // Изменения. Конец.

    return $vars;
}
помогло, удалило item и id.
А что делать с alias меню и категорией.
Хрен с ним, категория даже пусть останется.  Как убрать home-page, который я прописал в главном меню.
*

AL_ALEX

  • Глобальный модератор
  • 855
  • 112 / 1
P.S. С настройками игрался, получалось убрать только home-page, но в конце тогда добавляется .html, а оно мне не нужно.
а чем мешает .html в конце адреса?
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
ничем не мешает. На это проблему не решает. По прежнему с ссылке alias из меню и категория mysite.ru/home-page/category/...
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Я впринципе готов поковыряться в router.php
Только непонятно, если я использую k2 - это тоже там же в компоненте убирать или для этого уже нужно править router.php самой Joomla?
*

AL_ALEX

  • Глобальный модератор
  • 855
  • 112 / 1
мойсайт.ru/home-page/society/item/24321-na-donetchine-71-letnii-starik-snimal-porno-s-maloletnei-devochkoi.html
Эта часть относиться к Joomla
мойсайт.ru/home-page/society/item/24321-na-donetchine-71-letnii-starik-snimal-porno-s-maloletnei-devochkoi.html
Эта к K2
*

Stamel

  • Захожу иногда
  • 80
  • 5 / 0
Всем привет! Пожалуйста, если знаете способ помогите убрать проблему, ссылка у меня имеет вот такой вид: мойсайт/k2-items/категория/материал.html  как убрать k2-items ?
Код, который выше не помогате. Здесь подробно написано http://www.serbga.ru/web/web-coding/item/172-k2-%D0%BA%D0%B0%D0%BA-%D1%83%D0%B1%D1%80%D0%B0%D1%82%D1%8C-item-%D0%B8-id-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8-%D0%B8%D0%B7-url , но тоже не работает и таких ссылок море(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Миграция Joomla k2 на вордпресс

Автор wishlight

Ответов: 9
Просмотров: 3247
Последний ответ 17.12.2021, 09:25:43
от stellagreen
Компонент Яндекс Карты для Joomla 3.x и 2.5.x с интеграцией с K2 и Zoo

Автор xdanru

Ответов: 8
Просмотров: 4156
Последний ответ 22.10.2021, 18:16:53
от yandex_hb
В Joomla! 3.9.1 в к2 не меняется порядок расположения материала

Автор sergspb

Ответов: 0
Просмотров: 1699
Последний ответ 12.06.2021, 15:20:52
от sergspb
Не отображается Captcha v2 в компоненте K2 2.10.3 Joomla 2.5

Автор Александр Кардаш

Ответов: 4
Просмотров: 1760
Последний ответ 30.07.2020, 12:27:47
от Александр Кардаш
Joomla 3 + k2 выдает ошибку

Автор designerandrey

Ответов: 9
Просмотров: 1402
Последний ответ 20.07.2020, 15:43:14
от designerandrey