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

rentony

  • Захожу иногда
  • 93
  • 0 / 0
в расширенном поиске игнорируются настройки поиска по пунктам Check-box, по всему остальному поиск идет, а по этим пунктам ничего, хоть ставишь галочку, хоть нет, показывает всё
подскажите с чем это может быть связанно, и если это стандартная проблема адсменеджера, можно ли это исправить?
« Последнее редактирование: 07.02.2012, 14:15:48 от rentony »
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Re: не работает поиск Check Box (Single)
« Ответ #1 : 03.02.2012, 12:06:20 »
почитал по форуму, наткнулся на много записей что в стандартной сборке адсменеджера, не работает толком Check Box (Multiple), но про Silngle ни слова...
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Re: не работает поиск Check Box (Single)
« Ответ #2 : 03.02.2012, 13:39:42 »
Проверил Multiple, тоже как то криво работает((
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
надо обмозговать...
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
уже второй день мозгую(( желательно починить Multiple конечно, т.к. это очень важная деталь AdsManager'a... он как то криво запрос поиска отправляет по ходу
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Убил сцуко столько времени, чтобы починить пока single checkbox, он сцуко такая ни в какую не хотел считывать состояние галочки (отмечена, не отмечена), всё время передавалась пустая строка...
и какого же сцуко было моё удивление когда залез в исходник страницы расширенного поиска - в теге name у checkbox'a вместо имени поля был его заголовок, вот бл... слов не хватает
Итак, открываем файлик \components\com_adsmanager\helpers\field.php ищем функцию showFieldSearch, в теле функции меняем строки
Код
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' />\n";
     break;
на
Код
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' />\n";
     break;
Открываем файлик \administrator\components\com_adsmanager\models\field.php, ищем функцию getSearchFieldsSql, в теле функции находим
Код
case 'checkbox':
меняем на
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
Всё, поиск по галкам работает, мультигалки завтра посмотрю
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
хех) мда) мне вот интересно, вроде умные люди делаю адсменеджер, а такие глупые косяки оставляют)
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
мне вот это тоже странно показалось)
Код
case 'checkbox':
но в PHP не мастер еще, ну и подумал может ссылается это на нижнюю строку там...
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
ну а с мультигалками дело обстоит сложнее, в зависимости от сайта можно сделать поиск с точным совпадением отмеченных значений и значений в БД либо с частичным совпадением... какой способ нужен Вам?
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
с точным совпадением желательно
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Alex89, поиск по Single работает так сейчас) - если не ставить ни какие галочки, то выводит объявления ТОЛЬКО без галочек, если есть галочки, то он их не выводит... по идеи должен выводить же все, покапаюсь сейчас сам, мож допру (в чем сильно сомневаюсь), но расчитываю на Вашу светлую голову)
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
всё) разобрался)
просто из файла "\administrator\components\com_adsmanager\models\field.php"
из функции getSearchFieldsSql удалил одну строчку, было так:
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
стало так:
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     break;
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Такс, для мультигалок поменять нужно только поисковый запрос
в файле \administrator\components\com_adsmanager\models\field.php меняем в функции getSearchFieldsSql кусок кода с такого:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ".$this->_db->Quote(",".$value[$i].",");
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
на такой:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$val .= ','.$value[$i];
if ($i == $nb-1)
$val .= ",";
}
$search .= " AND a.$fsearch->name = ".$this->_db->Quote($val);
break;
Всё!  :D
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
*

alexnpost

  • Новичок
  • 2
  • 0 / 0
Такс, для мультигалок поменять нужно только поисковый запрос
в файле \administrator\components\com_adsmanager\models\field.php меняем в функции getSearchFieldsSql кусок кода с такого:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ".$this->_db->Quote(",".$value[$i].",");
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
на такой:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$val .= ','.$value[$i];
if ($i == $nb-1)
$val .= ",";
}
$search .= " AND a.$fsearch->name = ".$this->_db->Quote($val);
break;
Всё!  :D
Привет, благодарю тебя за код опубликованный в посте http://joomlaforum.ru/index.php/topic,199831.0.html
по поиску по мультигалкам.
У меня сейчас с ними такая проблема: ты правильно сделал, что поиск находит при отмеченных сразу нескольких галочках.
Но есть такая штука. он ищет по всем отмеченным полям, а хотелось бы чтобы выводил и те объявления, где присутствует одна из галочек
Например у меня
Район 1
Район 2
Район 3
Есть варианты где выбран каждый из районов, а есть где допустим Выбран 1 и 2 районы одновременно
Когда я ставлю поиск в 1 и 2 районе - он мне выводит только объявление где стоят одновременно обе галки, а хотелось бы, чтобы и те где район 1 и район 2 отдельно стоят по-одиночки.
Я реально тебе заплачу за помощь! У меня существует реальный сайт http://cityyar.ru/ Я Пол года допиливал этот компонент
Теперь встало загвоздкой все на последнем шаге. очень прошу тебя помощи!
*

alexnpost

  • Новичок
  • 2
  • 0 / 0
Код
                case 'multicheckbox':
                case 'multiselect':
                    $value = JRequest::getVar( $fsearch->name,    array() );
                    for($i = 0,$nb=count($value);$i < $nb;$i++)
                    {
                        if ($i == 0)
                            $search .= " AND (";   
                        $search .= "a.$fsearch->name LIKE '%,$value[$i],%'";
                        if ($i < $nb - 1)
                            $search .= " OR ";
                        else
                            $search .= " )";   
                    }                   
                    break;   
Вот как надо исправить! Нашел решение! Простите, что побеспокоил! Все вставляйте этот код, предыдущий немного не коректен. Помощь больше не требуется!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск по текстовым полям AdsManager

Автор Den85

Ответов: 4
Просмотров: 10318
Последний ответ 19.01.2019, 14:28:47
от Den85
AdsManager Расширенный поиск

Автор MakGrouman

Ответов: 1
Просмотров: 10780
Последний ответ 25.12.2018, 08:30:30
от MakGrouman
Выдает ошибку. 1064 You have an error in your SQL syntax; check the manu

Автор designerandrey

Ответов: 1
Просмотров: 1975
Последний ответ 10.10.2018, 20:13:20
от designerandrey
AdsManager поиск в категориях

Автор oleksyayko

Ответов: 4
Просмотров: 16765
Последний ответ 28.01.2018, 14:54:11
от alex79
Не работает ошибка 404

Автор Mick_20

Ответов: 14
Просмотров: 2025
Последний ответ 17.10.2017, 12:36:07
от Mick_20