Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

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
Просмотров: 2731
Последний ответ 17.12.2021, 09:25:43
от stellagreen
Компонент Яндекс Карты для Joomla 3.x и 2.5.x с интеграцией с K2 и Zoo

Автор xdanru

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

Автор sergspb

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

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

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

Автор designerandrey

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