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

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Здравствуйте!
Подключил на сайт Joomla 3 скрипт jQuery Masked, который отображает форму для ввода текста, то есть вместо обычного белого поле отображается форма ввода телефона, например.
И после подключения заметил проблему. В карточке товара есть фото, и они стали отображаться друг под другом, хотя раньше они отображались как надо (одна главная фотография, под ней три маленьких) при клике происходит увеличение и просмотр фото.
Модули с использование jQuery Masked выведены слева это: "При заказе у своих - узнайте наши условия", "Затрудняетесь в выборе двери? Подскажем!". Если их отключить или просто убрать использование jQuery Masked, то все в карточке работает.
Вот так выглядет код, который отвечает за показ формы ввода в поле:
Код
<script type="text/javascript">
$(function(){

$("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");

});
</script>
По мимо этого к сайту была подключена библиотека jQuery.
Ссылка на сайт (карточка товара): http://www.dvernoyclub.ru/katalog/alit
Подскажите, пожалуйста, в чем может быть проблема и как ее лучше всего убрать? Возможно я надподключал лишнего или сделал что-то не так.
Пробовал ставить плагин jQuery Easy - результата нет.

Решение:
Извиняюсь за задержку в рассказе, как удалось починить.
1. Удалил код скрипта из модуля
2. Прописал код скрипта в index.php:
Код
     <script>
       $.noConflict();
 
 jQuery(function($){
   $("#phone").mask("+7 (999) 999-99-99");
   $("#phone_p").mask("+7 (999) 999-99-99");

});
 
      </script>
« Последнее редактирование: 11.02.2016, 22:51:48 от hottab_1 »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
это не конфликт.
у вас просто код надо обернуть в оболочку
Код
<script type="text/javascript">
jQuery(function($) {
  тут ваш код
});
</script>

вообще, в таких случаях смотрите к консоль файербага во вкладке "ошибки"
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
это не конфликт.
у вас просто код надо обернуть в оболочку
Код
<script type="text/javascript">
jQuery(function($) {
  тут ваш код
});
</script>


вообще, в таких случаях смотрите к консоль файербага во вкладке "ошибки"



Сделал вот так, возможно неправильно:
Код
<script type="text/javascript">
jQuery(function($) {
  $("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");
});
</script>
Перестала работать маска ввода, но фото по прежнему отображаются косо.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а если так

Код
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function($){
  $("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");
});
});
</script>
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
а если так

Код
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function($){
  $("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");
});
});
</script>
К сожалению, не помогло.
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
куда вставляете код?
В модуль, который выводит блок "Затрудняетесь в выборе двери". Код модуля выглядет вот так сейчас:
Код
{rsform 10}



<script type="text/javascript">
jQuery(function($) {
$(document).ready(function($){
  $("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");
});
});
</script>
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а вот это откуда берется

Код
 <script type="text/javascript">
jQuery(function(){
    jQuery(".mask").mask("(999) 999-9999");
});
</script>

вы ещё куда-то вставили код и не стерли потом
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
а вот это откуда берется

Код
  <script type="text/javascript">
jQuery(function(){
    jQuery(".mask").mask("(999) 999-9999");
});
</script>

вы ещё куда-то вставили код и не стерли потом
Да, понял где. Я удалю попозже и отпишусь о результате. По идеи должно все работать?
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Веб-разработка: заказ. Только новая разработка.
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
а вот это откуда берется

Код
  <script type="text/javascript">
jQuery(function(){
    jQuery(".mask").mask("(999) 999-9999");
});
</script>

вы ещё куда-то вставили код и не стерли потом

Поискал, нигде не вставлен код. Он появляется, когда включаешь модуль в котором прописан код:
Код
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function($){
  $("#phone").mask("+7 (999) 999-99-99");
$("#phone_p").mask("+7 (999) 999-99-99");
});
});
</script>
Отключаем модуль - пропадет код в head:
Код
  <script type="text/javascript">
jQuery(function(){
    jQuery(".mask").mask("(999) 999-9999");
});
</script>
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
ну так не бывает. ищи в этом модуле где второй раз прописано
Хорошо, буду искать, спасибо.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У вас ошибка
Код
TypeError: jQuery(...).mask is not a function
Это происходит из-за того, что вы каким-то образом подключаете скрипты
Код
<script type="text/javascript" src="/js/jquery-1.7.2.min.js" ></script>
<script type="text/javascript" src="/js/jquery.maskedinput-1.3.min.js"></script>
в начале head. Потом идет подключение основных скриптов сайта, среди которых второй раз подключается jQuery. После второго подключения jQuery уже не знает о том, что такое jQuery(...).mask.
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
У вас ошибка
Код
TypeError: jQuery(...).mask is not a function
Это происходит из-за того, что вы каким-то образом подключаете скрипты
Код
<script type="text/javascript" src="/js/jquery-1.7.2.min.js" ></script>
<script type="text/javascript" src="/js/jquery.maskedinput-1.3.min.js"></script>
в начале head. Потом идет подключение основных скриптов сайта, среди которых второй раз подключается jQuery. После второго подключения jQuery уже не знает о том, что такое jQuery(...).mask.
То есть нужно убрать одно подключение jquery?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
да, не должно быть нескольких копий. это как правило всегда приводит к "непонятному" поведению
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Результат, к сожалению, нет.
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Уделал. Завтра отпишусь как решил проблему. Всем большое спасибо!
*

hottab_1

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Извиняюсь за задержку в рассказе, как удалось починить.
1. Удалил код скрипта из модуля
2. Прописал код скрипта в index.php:
Код
     <script>
       $.noConflict();
 
 jQuery(function($){
   $("#phone").mask("+7 (999) 999-99-99");
   $("#phone_p").mask("+7 (999) 999-99-99");

});
 
      </script>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 3 не пускает в админку (просто перезагружается страница) (гуглил, нашёл решение, не помогло)

Автор lifelover2b

Ответов: 11
Просмотров: 3882
Последний ответ 05.06.2025, 04:48:29
от andrey222
По поводу сессий Joomla 3

Автор azm1n

Ответов: 0
Просмотров: 635
Последний ответ 25.05.2025, 09:26:17
от azm1n
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 799
Последний ответ 09.05.2025, 12:39:18
от azm1n
Вывести поля профиля Joomla

Автор romagromov

Ответов: 11
Просмотров: 1868
Последний ответ 28.04.2025, 10:25:44
от sivers
Максимальная версия PHP для Joomla 3

Автор Dram

Ответов: 8
Просмотров: 2256
Последний ответ 27.03.2025, 10:40:29
от wishlight