Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

копачовец

  • Новичок
  • 1
  • 0 / 0
Ребята, помогите пожалуйста! :'(
После установки шаблона выбило ошибку и всё пропало: контекстное меню, вера в себя....
Можно это как-то исправить?

Код:
<?php
/**
 * @package Helix Ultimate Framework
 * @author JoomShaper https://www.joomshaper.com
 * @copyright Copyright (c) 2010 - 2018 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

namespace HelixUltimate;

defined ('_JEXEC') or die();

require_once __DIR__.'/options.php';
require_once __DIR__.'/request.php';
require_once __DIR__.'/helper.php';

use HelixUltimate\Helper\Helper as Helper;
use HelixUltimate\Options as Options;

class Platform
{

    protected $app;

    protected $option;

    protected $helix;

    protected $view;

    protected $id;

    protected $request;

    protected $version;

    protected $user = array();

    protected $permission = false;

    public function __construct()
    {
        $this->user = \JFactory::getUser();
        $this->app  = \JFactory::getApplication();
        $input = $this->app->input;
        $this->version    = Helper::getVersion();

        $this->option     = $input->get('option','');
        $this->helix      = $input->get('helix','');
        $this->view       = $input->get('view','');
        $this->id         = $input->get('id',NULL);
        $this->request    = $input->get('request','');
        $this->userTmplEditPermission();
    }


    public function initialize()
    {
        if( $this->option == 'com_ajax' && $this->helix == 'ultimate' && $this->request == 'task')
        {
            $request = new Request;
            $request->initialize();
        }
        elseif( $this->option == 'com_ajax' && $this->helix == 'ultimate' && $this->id && $this->permission)
        {
            $frmkHTML     = $this->frameworkFormHTMLStart();
            $frmkOptions  = new Options();
            $frmkHTML    .= $frmkOptions->renderBuilderSidebar();
            $frmkHTML    .= $this->frameworkFormHTMLEnd();

            echo $frmkHTML;
        }
    }

    private function frameworkFormHTMLStart()
    {
        $htmlView  = '<div id="helix-ultimate">';
        $htmlView .= '<div class="helix-ultimate-sidebar">';
        $htmlView .= '<div class="helix-ultimate-logo">';
        $htmlView .= '<img src="'.\JURI::root(true).'/plugins/system/helixultimate/assets/images/helix-logo.svg" alt="Helix Ultimate by JoomShaper"/>';
        $htmlView .= '</div>';
        $htmlView .= '<a class="action-helix-ultimate-exit" href="'. \JRoute::_('index.php?option=com_templates').'"><span class="fa fa-times"></span></a>';
        $htmlView .= '<div class="helix-ultimate-options-wrap">';

        return $htmlView;
    }

    private function frameworkFormHTMLEnd()
    {
        $app = \JFactory::getApplication();
        $id = (int) $app->input->get('id', 0, 'INT');
        $style = Helper::getTemplateStyle($id);

        $htmlView  = '</div>';

        $htmlView .= '<div class="helix-ultimate-footer clearfix">';
        $htmlView .= '<div class="helix-ultimate-copyright">Helix Ultimate Framework '. $this->version .'<br />By <a target="_blank" href="https://www.joomshaper.com">JoomShaper</a></div>';
        $htmlView .= '<div class="helix-ultimate-action"><button class="btn btn-primary action-save-template" data-id="'. $this->id .'" data-view="'. $this->view .'"><span class="fa fa-save"></span> Save</button></div>';
        $htmlView .= '</div>';

        $htmlView .= '</div>';

        $htmlView .= '<div class="helix-ultimate-preview">';
        $htmlView .= '<iframe id="helix-ultimate-template-preview" src="'.\JURI::root(true).'/index.php?template='. $style->template .'" style="width: 100%; height: 100%;"></iframe>';
        $htmlView .= '</div>';
        $htmlView .= '</div>';

        return $htmlView;
    }


    private function userTmplEditPermission()
    {
        if ($this->user->id)
        {
            if ($this->user->authorise('core.edit','com_templates'))
            {
                $this->permission = true;
            }
        }
    }

    public static function loadFrameworkSystem()
    {
        $app = \JFactory::getApplication();
        $doc = \JFactory::getDocument();
        $style_id = (int) $app->input->get('id', 0, 'INT');
        $style = Helper::getTemplateStyle($style_id);
        $template = $style->template;
        $helix_plg_url = \JURI::root(true). '/plugins/system/helixultimate';

        \JFactory::getLanguage()->load('tpl_' . $template, \JPATH_SITE, null, true);;

        $doc->setTitle("Helix Ultimate Framework");
        $doc->addFavicon( $helix_plg_url . '/assets/images/favicon.ico');
       
        $doc->addScriptDeclaration('var helixUltimateStyleId = ' . $style_id . ';');
       
        \JHtml::_('jquery.ui', array('core', 'sortable'));
        \JHtml::_('bootstrap.framework');
        \JHtml::_('behavior.formvalidator');
        \JHtml::_('behavior.keepalive');
        \JHtml::_('formbehavior.chosen', 'select');
        \JHtml::_('behavior.colorpicker');
        \JHtml::_('jquery.token');
       
       
        $doc->addStyleSheet($helix_plg_url.'/assets/css/admin/helix-ultimate.css');
        $doc->addStyleSheet($helix_plg_url.'/assets/css/admin/modal.css');
        $doc->addStyleSheet($helix_plg_url.'/assets/css/font-awesome.min.css');
       
        $doc->addScript( $helix_plg_url.'/assets/js/admin/webfont.js' );
        $doc->addScript( $helix_plg_url.'/assets/js/admin/modal.js' );
        $doc->addScript( $helix_plg_url.'/assets/js/admin/layout.js' );
        $doc->addScript( $helix_plg_url. '/assets/js/admin/media.js' );
        $doc->addScript( $helix_plg_url. '/assets/js/admin/helix-ultimate.js' );

        echo $doc->render(false,[
            'file' => 'component.php',
            'template' => 'HelixUltimate',
        ]);
    }
}
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
В самом низу
Код: php
echo $doc->render(false, array('file' => 'component.php', 'template' => 'HelixUltimate'));
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а еще лучше php версию хотя бы 5.6 поставить, а еще лучше 7. а то на 5.3 как то невесело в 2018...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает менеджер материалов, ошибка 500 SSL certificate problem

Автор Екатерина М

Ответов: 5
Просмотров: 1315
Последний ответ 06.04.2025, 09:27:20
от wishlight
[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 1057
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
Ошибка 0 Call to undefined function GuzzleHttp\choose_handler()

Автор Alllex

Ответов: 0
Просмотров: 838
Последний ответ 15.03.2024, 21:03:09
от Alllex
Ошибка version_compare(): Argument #3 ($operator)

Автор Шмайсер

Ответов: 1
Просмотров: 1184
Последний ответ 07.11.2023, 20:44:21
от fsv
reCapcha во всплывающем окне - "Ошибка защиты от спама"

Автор Dannik

Ответов: 12
Просмотров: 2425
Последний ответ 14.09.2023, 18:59:24
от all_zer