Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
в админке в файле
/administrator/components/com_realty/models/country.php
есть класс
class RealtyModelCountry extends JModelAdmin

на фронте в файле
/components/com_realty/models/country.php
нужен точно такой же класс RealtyModelCountry с таким же названием

но ведь нельзя наследовать класс от другого с таким же названием

class RealtyModelCountry extends RealtyModelCountry

давать классу на фронте другое имя неудобно
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Пипец. А зачем тогда наследовать. Включайте уже готовый файл из админки.
if(!class_exists('RealtyModelCountry')) require_once JPATH_ROOT.'/administrator/components/com_realty/models/country.php';
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
PHP не поддерживает множественное наследование. Вам придется написать свой класс. И это будет правильнее и проще.
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
PHP не поддерживает множественное наследование. Вам придется написать свой класс. И это будет правильнее и проще.
а причём тут оно?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Потому как создается впечатление, о том, что вы "велосипедите". В общем вижу 2 варианта.
1. изменить существующий класс, так чтобы обрабатывал ваши исключения с фронта
2. Добавить новый класс.
Теперь почему  "велосипедите", да потому, что оба варианта легко осуществимы.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
« Последнее редактирование: 04.05.2018, 21:48:44 от Aleks.Denezh »
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
компонент в разработке, поэтому:

1. изменить существующий класс, так чтобы обрабатывал ваши исключения с фронта
это ухудшит читаемость кода

Добавить новый класс.
копипастите код из класса бакенда в класс фронтенда
лупим весь код что у вас в модели
тогда изменения придётся вносить и там и там
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
« Последнее редактирование: 04.05.2018, 21:48:53 от Aleks.Denezh »
*

rama_92

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Товарищи! Что за компонент com_realty ??
*

rigin

  • Осваиваюсь на форуме
  • 10
  • 1 / 0
Вот так можно переопределить с помощью системного плагина.
Суть метода: исходный класс считывается в переменную, переименовывается на лету и подключается при помощи функции eval().
Производный класс имеет то же имя и наследуется от переименованного.
При этом исходный класс остается в прежнем месте и может обновляться в случае обновления ядра.

Код
<?php
 
// No direct access
defined('_JEXEC') or die;
 
$app = JFactory::getApplication();
 
if($app->isSite())
{
    // Считываем базовый класс ContentModelArticles в переменную.
 
    $ContentModelArticlesOld = implode('',file(JPATH_ROOT . '/components/com_content/models/articles.php'));
 
    // переименовываем его
    $ContentModelArticlesOld = str_replace (
                                        ' ContentModelArticles ',
                                        ' ContentModelArticles_Edit_contentmodelcategory ',
                                        $ContentModelArticlesOld
                                    );            
 
    // отрезаем <?php в начале
    $ContentModelArticlesOld = substr($ContentModelArticlesOld,5);
 
 
    // запускаем переименованный класс из переменной с помощью eval
    eval($ContentModelArticlesOld);
 
    // Вызываем новый класс ContentModelArticles на замену
    include_once JPATH_ROOT . '/plugins/system/edit_contentmodelcategory/articles.php';
}



соответственно новый клас имеет такой вид

Код
<?php
/**
 * @copyright    Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license        GNU General Public License version 2 or later; see LICENSE.txt
 */
 
defined('_JEXEC') or die;
 
jimport('joomla.application.component.modellist');
 
/**
 * This models supports retrieving lists of articles.
 *
 * @package        Joomla.Site
 * @subpackage    com_content
 * @since        1.6
 */
class ContentModelArticles extends ContentModelArticles_Edit_contentmodelcategory
{
    function getListQuery ()
    {
        $query = & parent::getListQuery();
 
        $dispatcher = & JDispatcher::getInstance();
        JPluginHelper::importPlugin( 'content' );
        $dispatcher->trigger( 'onContentAfterGetListQuery',array( & $query));
 
        return $query;
    }
}

Этот плагин вставляет дополнительную точку прерывания.

Этот метод не работает для случаев, если класс подключается внутри Joomla не джумловскими методами, а с помощью  include_once (например в модулях)
В этом случае решения нет, разве что с помощью библиотеки runkit. Но она не устанавливается в php по умолчанию и соответственно, возникают сложности с переносом сайта.

Если кто может подсказать другие варианты помимо runkit - то было бы интересно.
« Последнее редактирование: 05.04.2014, 16:23:21 от rigin »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Использование модели из админки во фронте

Автор Александр Фёдоров

Ответов: 2
Просмотров: 1973
Последний ответ 27.02.2013, 14:08:11
от b2z
Классы с Legacy

Автор nonamez

Ответов: 1
Просмотров: 1917
Последний ответ 24.10.2012, 18:38:06
от smart
Как быстро и правильно подрубить языковой файл из админки на фронт-енд

Автор Toreador

Ответов: 0
Просмотров: 1396
Последний ответ 19.01.2011, 11:27:55
от Toreador