Новости 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 Гость просматривают эту тему.
  • 1 Ответов
  • 2536 Просмотров
*

enshtein

  • Захожу иногда
  • 77
  • 9 / 0
Есть некий компонент - каталог товаров имеющий ссылки следующего вида:
http://site/product/2 - просмотр категории с ID = 2
http://site/product/3/4 - просмотр товара ID = 4 в категории с ID =3

файл router.php выглядит у меня так:
Код: php
<?php

function QuickCatalogBuildRoute(&$query)
{
$segments = array();
        
    if (isset($query['task'])) {
        $segments[] = $query['task'];
        unset($query['task']);
    }  
    if (isset($query['category_id'])) {                  
        $segments[] = $query['category_id'];
        unset( $query['category_id'] );
    };                
    if (isset($query['id'])) {                  
        $segments[] = $query['id'];
        unset( $query['id'] );
    };
    unset($query['view']);    
    return $segments;
}

function QuickCatalogParseRoute($segments)
{  
    $vars = array();
$count = count($segments);
    switch ($count)
    {
        case 1:
            $vars['view'] = 'category';
            $vars['category_id'] = $segments[0];
            break;
        case 2:
            $vars['view'] = 'element';
            $vars['category_id'] = $segments[0];
            $vars['id'] = $segments[1];
            break;
        default:
            $vars['task'] = $segments[0];
            $vars['id'] = $segments[1];
    }
    
return $vars;
    
}


все работает, все устраивает - есть только один косячный момент, на сайте выводится меню с пунктами указывающими на конкретные каталоги (категории продуктов) в моём компоненте  - при проходе по таким ссылкам они естественно выделяются при переходе внутри категории на страницу конкретного продукта пункт меню - текущей категории остается выделенным. Однако кроме этого меню  на общей странице моего компонента выводятся все категории - уже вывод самого компонента - и вот если пройтись по любой категории то пункты меню не выделяются! Как привязать (выделить) пункт меню и показ определенной категории в моем компоненте?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Вот ключевой метод рутера моего каталога. Ищет правильный пункт меню по заданным параметрам:

Код: php
function queryMenu($menus, $view, $param=null, $value=null)
{
if( !$menus ) return null;

$siteMenu = &JSite::getMenu();
$item = null;
foreach( $menus as $menu )
{
// Get at least a menu item with the same view
if( $view === @$menu->query['view'] )
$item = $menu;
if( $param !== null && $value !== null )
{
$mparams = $siteMenu->getParams($menu->id);
if( is_array( $value ) &&  in_array( $mparams->get($param, 0), $value ))
{
$item = $menu;
break;
}
else if( !is_array( $value ) && $mparams->get($param, null) == $value )
{
$item = $menu;
break;
}
}
else if( $item !== null ) break;
}
return $item;
}
Вот использование:
Код: php
$menu = &JSite::getMenu();
$myMenus = $menu->getItems('component', 'com_scatalog');
// Determine if we have a menu entry for this link:
$view = @$query['view'];
switch( $view )
{
case 'category':
case 'product':
$catid = intval($view == 'category' ? @$query['id'] : @$query['catid']);
if( $catid > 0 )
{
$cats = &getCatChain( $catid );
$mItem = queryMenu( $myMenus,  'category',  'catid', $cats );
}
else $mItem = queryMenu( $myMenus,  'category',  'catid', 0);
break;
case 'brands':
case 'brand':
$mItem = queryMenu( $myMenus,  'brands' );
break;
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Надо переделать готовый компонент Генератор Купонов J2.5 на J1.5

Автор mkoff

Ответов: 3
Просмотров: 2154
Последний ответ 18.12.2014, 10:22:04
от assa1988
Компонент вывода информации из внешней базы данных

Автор rambeer

Ответов: 33
Просмотров: 11288
Последний ответ 12.09.2014, 05:01:34
от Mad_Doc
Модифицировать компонент

Автор karabert

Ответов: 0
Просмотров: 1467
Последний ответ 28.11.2011, 22:39:04
от karabert
Новый компонент. Реализация поиска/фильтрации таблицы в админке.

Автор passat

Ответов: 6
Просмотров: 3753
Последний ответ 26.03.2011, 12:21:45
от yunoshev
Пишу первый в жизни MVC компонент

Автор artmasterpro

Ответов: 14
Просмотров: 2832
Последний ответ 24.03.2011, 09:26:39
от artmasterpro