Новости Joomla

joomLab Gallery - плагин галереи изображений для Joomla

👩‍💻 joomLab Gallery - плагин галереи изображений для Joomla.Плагин joomLab Gallery позволит Вам добавлять в любой материал неограниченное количество галерей, а главное удобно управлять файлами и эффектами в каждой галерее.Плагин использует популярны скрипты Swiper.js и FancyBox. Первый для крутой организации и эффектов галерей, а второй для красивого и функционального показа оригинальных изображений на Вашем сайте.На данный момент плагин имеет 10 макетов вывода - это 10 различных эффектов галерей и Вы можете совмещать все 10 в 1 материале.Плагин позволяет гибко настраивать индивидуально каждую галерею в материале. Вы можете выбрать макет, эффекты и даже можете управлять функциями всплывающего окна изображения.Недостатки.Такой вид реализации не предусматривает выбор изображения на сервере. Т.е. Вы не можете выбрать уже добавленное фото, только загружать заново. Плагин не предоставляет возможности доступа к медиа-менеджеру.Плагин бесплатный. Разработчик - участник нашего сообщества Александр Новиков (@pro-portal).Страница расширения@joomlafeed#joomla #расширения

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla 🖨Ну что, интересная инициатива от @webtolkru в виде интервью с разными участниками весьма меня увлекла. Я, вооружившись данным примером, решил подготовить выпуск для NorrNext (@norrnext) и экстраполировал идею на международный масштаб. Теперь готовлю эксклюзивный выпуск с участниками Joomla сообщества со всего мира, которые, в той или иной мере, внесли свой вклад в развитие и популяризацию системы. Будут беседы с людьми из разных стран и фото с юбилейной символикой 📸Работа в процессе 👆 📝О результатах оповещу отдельно.

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

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Всем привет  ^-^
Разрабатываю лендинг, свой кастомный шаблон. Некоторые материалы необходимо вывести в модальном окне, к примеру "Условия использования" и "Политику конфиденциальности".

Что сделал:
1. К шаблону подключил Bootstrap 5 modal:
Код
\Joomla\CMS\HTML\HTMLHelper::_('bootstrap.modal', '.modal', []);

2. Сделал блок с выводом модального окна(пока тестовое, взято из документации Bootstrap 5):
Код
<div class="modal" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

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

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Попробуй renderModal
Пример использования можно здесь посмотреть /administrator/components/com_cpanel/tmpl/cpanel/default.php

В качестве 'url' передавай ссылку на материал:
Код
\Joomla\CMS\Router\Route::_('index.php?option=com_content&view=article&id=1&tmpl=component')
Это ссылка на материал, ID которого равно единице.

В общем наверное вот так:
Код
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

$modalHTML = HTMLHelper::_(
    'bootstrap.renderModal',
    'myModal',
    [
        'title'      => Text::_('MY_MODAL'),
        'url'        => Route::_('index.php?option=com_content&view=article&id=1&tmpl=component'),
        'bodyHeight' => 70,
        'modalWidth' => 80,
        'footer'     => '<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">' . Text::_('CLOSE_MODAL') . '</button>',
    ]
);

<a data-bs-target="#myModal" class="mybuttonclass" title="<?php echo Text::_('MY_BUTTON'); ?>" data-bs-toggle="modal" role="button">
    <?php echo Text::_('MY_BUTTON'); ?>
</a>

<?php echo $modalHTML; ?>
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Ага, спасибо. Пример рендереа модального окна нашёл. Единственное, мне не совсем понятно, где передавать ссылку.
Чуть подробнее объясню.
Ссылка на разрабатывамемый сайт: https://club.artcolorit.com/

Там есть блок Наши игры. При клике на Подробнее хочу рендерить модальное окно и в нём текст нужной статьи. Это будет примерно вот так выглядеть: https://prnt.sc/20ngwem. Тот же принцип хочу использовать и при клике на ссылки "Условия использования" и "Политика конфиденциальности".

Где именно прописывать код для рендера? В index.php? А то надо как-то динамически получается рендерить контент
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
Где именно прописывать код для рендера? В index.php? А то надо как-то динамически получается рендерить контент]Где именно прописывать код для рендера? В index.php? А то надо как-то динамически получается рендерить контент
Ну я написал - передавать в параметре url ссылку на материал. Привёл выше пример кода.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Ну я написал - передавать в параметре url ссылку на материал. Привёл выше пример кода.
Да, я понимаю. Пытаюсь как раз понять, как именно динамически передать URL нужного материала. Прописать как-то так ссылку в нужном месте:
Код
<a href="index.php?option=com_content&view=article&id=2&catid=2" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">Подробнее</a>

И по JS забирать содержимое атрибута href и подставлять в параметр URL рендера? Или как-то иначе?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
А кто знает, какой нужный, а какой нет? Как они в список попадают?
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
А кто знает, какой нужный, а какой нет? Как они в список попадают?
В блоке Наши игры там можно вручную прописать данные ссылки и по клику передавать уже. Этот блок у меня сделан через модуль, обычный HTML
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Понятно. Ну тогда действительно вопрос.
Цитировать
И по JS забирать содержимое атрибута href и подставлять в параметр URL рендера?
Так не получится. renderModal - это PHP.

Я вижу тут такое решение - написать простенький модуль и там в макете уже выводить. В параметрах модуля сделать возможность выбора материалов, или по простому ID материалов через запятую ^-^
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Понятно. Ну тогда действительно вопрос.Так не получится. renderModal - это PHP.

Я вижу тут такое решение - написать простенький модуль и там в макете уже выводить. В параметрах модуля сделать возможность выбора материалов, или по простому ID материалов через запятую ^-^
То есть именно модуль, котоырй будет рендерить модальное окно с нужным контентом? Ну это да, в целом получается, что можно под каждую нужную ссылку, при клике на которую я буду показывать модальное окно, вывести свой модуль, и в каждом модуле будет 2 параметра: ID модалки и выбор материала получается.

Ну ID модалки подставить конечно проблем не составить. А поле с выбором материала можно где-то посмотреть?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
Ну это да, в целом получается, что можно под каждую нужную ссылку, при клике на которую я буду показывать модальное окно, вывести свой модуль, и в каждом модуле будет 2 параметра: ID модалки и выбор материала получается.
Зачем несколько модулей? В параметрах модуля сделать возможность выбора нескольких материалов.

Цитировать
А поле с выбором материала можно где-то посмотреть?
Да сделайте просто текстовое поле, где будут прописывать ID. Либо тогда писать своё поле, где можно из списка накликать материалы.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Зачем несколько модулей? В параметрах модуля сделать возможность выбора нескольких материалов.
Стараюсь понять вашу идею. При клике на одну ссылку должна же выводиться модалка с одним определённым материалом. Для чего возможность вывода нескольких материалов?
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
В общем, сделал модуль, поставил на сайт, удалось вывести контент статьи в модальном окне.

Если кликните на этот блок: https://prnt.sc/20ooiut - то увидите. Единственное, пока не могу разобраться с высотой самого окна, почему-то постоянно прокрутка имеется.

В админке выглядит вот так: https://prnt.sc/20op16u

Тут я получается прописал ID самого модального окна, и ID статьи, которую надо вывести. По поводу вашей идеи не очень понял, как можно сделать.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
я бы просто в ссылку вставлял data-url и по классу ссылки аяксом тянул саму статью, загружал полученное содержимое в 1 блок модального окна и потом его показывал.
типа все статьи динамически грузятся в 1 блок по клику на ссылке, ибо зачем на странице скрытый блок с "политикой конфиденциальности" и прочей требухой?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Стараюсь понять вашу идею. При клике на одну ссылку должна же выводиться модалка с одним определённым материалом. Для чего возможность вывода нескольких материалов?
Чтобы в цикле пройтись и вывести все разом, а не делать 4 модуля.

Цитировать
Единственное, пока не могу разобраться с высотой самого окна, почему-то постоянно прокрутка имеется.
Приведи код вызова модалки.

@effrit
Цитировать
ибо зачем на странице скрытый блок с "политикой конфиденциальности" и прочей требухой?
А с чего ты взял, что они в скрытом блоке? Подгрузка по клику.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Чтобы в цикле пройтись и вывести все разом, а не делать 4 модуля.
Буду рад, если подскажете, как это правильно сделать, и к какому условию привязаться.

Привожу код файла default.php
Код
defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

$modId = $module->id;
$modalId = $params->get('modal-id');
$articleId = $params->get('article-id');


$modalHTML = HTMLHelper::_(
    'bootstrap.renderModal',
    $modalId,
    [
        'url'        => Route::_('index.php?option=com_content&view=article&id='. $articleId .'&tmpl=component'),
        'height'     => '100%',
        'width'      => '100%',
        'bodyHeight' => 100,
        'modalWidth' => 100
    ]
);
?>

<?php echo $modalHTML; ?>

И на всякий случай прикрепляю сам архив с модулем
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Я правильно понял, что модуль выводится внутри кнопки "Подробнее"? Тогда всё правильно сделано.

По поводу высоты самого окна - попробуй убрать 'height'  и 'width' и оставить 'bodyHeight'  => '70', 'modalWidth'  => '80'.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Я правильно понял, что модуль выводится внутри кнопки "Подробнее"? Тогда всё правильно сделано.
Кнопка Подробнее - это ссылка на вызов модального окна по сути. Я не совсем понял идею о прохождении по циклу. Как определять, какую статью подставлять.

По поводу высоты самого окна - попробуй убрать 'height'  и 'width' и оставить 'bodyHeight'  => '70', 'modalWidth'  => '80'.
Пробовал так, окно такое же, но контент по ширине в 2 раза меньше
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Кнопка Подробнее - это ссылка на вызов модального окна по сути. Я не совсем понял идею о прохождении по циклу. Как определять, какую статью подставлять.

Идея была такой:

Код
$ids = explode(',', $params->get('articles'));

foreach ($ids as $id)
{
    $modalHTML = HTMLHelper::_(
        'bootstrap.renderModal',
        'modal' . $id,
        [
            'url'        => Route::_('index.php?option=com_content&view=article&id=' . $id . '&tmpl=component'),
            'height'     => '100%',
            'width'      => '100%',
            'bodyHeight' => 100,
            'modalWidth' => 100
        ]
);

<?php echo $modalHTML; ?>
}

Пробовал так, окно такое же, но контент по ширине в 2 раза меньше
Мхм, ну надо поиграться с этими параметрами. Может CSS какой добавить ещё.

*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Идея была такой:

Код
$ids = explode(',', $params->get('articles'));

foreach ($ids as $id)
{
    $modalHTML = HTMLHelper::_(
        'bootstrap.renderModal',
        'modal' . $id,
        [
            'url'        => Route::_('index.php?option=com_content&view=article&id='. $id .'&tmpl=component'),
            'height'     => '100%',
            'width'      => '100%',
            'bodyHeight' => 100,
            'modalWidth' => 100
        ]
);

<?php echo $modalHTML; ?>
}
Касательно идеи. Да, по прохождению по циклу я понимаю. Но как подставлять значение статьи в ссылку нужную? Вот в этом вопрос  ^-^
Мхм, ну надо поиграться с этими параметрами. Может CSS какой добавить ещё.
Да, надо будет ещё попробовать, в крайнем случае CSS добавлю, то уже не проблема)
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Аааа, стоп, дошло. Увидел, что в имени модального окна добавляется ID статьи  ^-^

Попробую так сделать, спасибо)
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Заработало! Огромное спасибо.
С высотой решил вопрос, просто прописав у параметра height значение в пикселях.

Привожу итоговый код, возможно кому-то пригодится
Код
defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

$modId = $module->id;
$modalId = $params->get('modal-id');
$articleIds = explode(',', $params->get('article-id'));

foreach ($articleIds as $articleId) {
   $modalHTML = HTMLHelper::_(
      'bootstrap.renderModal',
      $modalId . $articleId,
      [
         'url' => Route::_('index.php?option=com_content&view=article&id='. $articleId .'&tmpl=component'),
         'height' => '700px',
         'width' => '100%',
         'bodyHeight' => 100,
         'modalWidth' => 100
      ]
   );
   echo $modalHTML;
}
?>

Ссылка на вызов модалки такая:
Код
<a href="#" data-bs-toggle="modal" data-bs-target="#modal2">Подробнее</a></div>
Параметр data-bs-target содержит ID модального окна, которое вы прописали в модуле и ID статьи, которую необходимо вывести

Прикрепляю модуль также, пользуйтесь
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
А модуль по факту выводится в какую-то неиспользуемую позицию?
Да в целом всё равно, но да, сделал под него позицию отдельно. Сейчас решаю другой вопрос - это применение стилей к iframe, как оказалось, из общего файла стилей прописанные стили не применяются
*

ecolora

  • Завсегдатай
  • 1535
  • 171 / 2
  • творец
Спасибо за тему. Друзья, есть такой вопрос. Я вывожу модальное окно с помощью
Код
 		echo JHtml::_('bootstrap.renderModal', 'modal-comm_Modal', $modalParams);
В самом окне список в виде дерева... мне нужно, чтобы по клику на любом элементе дерева модальное окно закрывалось.
В Joomla 3 и ниже это достигалось с помощью:
Код
return false;
Но там и модальное окно по другому вызывалось.
В Joomla 4 return false; почему-то не срабатывает.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
смотрите где событие на закрытие
и там добавить что по итему
где то тут было по поводу оффканвас меню такое
индивидуальная помощь: @SetAlexx
*

zudoshika

  • Новичок
  • 2
  • 0 / 0
Спойлер
[свернуть]
Доброго времени суток!

Первым делом стоит учесть, что мои знания php и js близки к отрицательному значению *ОХ-Х-Х*

Кажется всё доступно изложено, но к сожалению - отказывается работать (при нажатии на ссылку - тишина)...
Разрабатываемый мной сайт на Joomla 4.2.8 с шаблоном JA Stark v 2.0.1 от студии Joomlart с уже интегрированным Bootstrap 4 (установка всего quickstart'ом), однако,
у меня на сайте в head прописано
Код
<script src="/media/vendor/bootstrap/js/modal.min.js?5.1.3" type="module"></script>
В демо шаблона уже реализовано открытие материала в модальном окне,
например, на странице контактных данных - по ссылке с текстом Privacy Note
Но, не получается по аналогии сделать подобное в другом месте, т.к. в конкретном случае сие реализовано плагином "Контент - Подтверждение согласия"
В запасе есть "козырь - танец с бубном", но что-то подсказывает, что его опередит "кулак ярости"...
-----------------------------------------------------------------------------------------
Как временное решение (но это не точно) было сделано:
-----------------------------------------------------------------------------------------
На главной странице demo шаблона в верхней секции есть
кнопка Find Out More (слева; позиция hero-1)
и
кнопка иконка в круге "Play" (справа; позиция hero-2)
вот так это выглядит
Содержимое обоих позиций управляется встроенным в quickstart модулем JoomlArt Advanced Custom Module (acm), а именно:
hero-1 модулем acm с ID=101;
hero-2 модулем acm с ID=116.

Сделал дубль модуля acm с видео (получился ID=144) опубликовал без указания позиции, и в нём
(в параметрах модуля)
вместо ссылки на видео прописал ссылку на материал (добавив вконце ?tmpl=component),
затем скопировал часть полученного кода страницы, и привёл к общему стилю
Код
<div class="btn btn-lg btn-secondary animated FadeInRight delay-2s" id="acm-video-144">
<a class="html5lightbox text-light" data-group="myvideo-144" href="/mypage?tmpl=component">Подробнее <i class="fas fa-long-arrow-alt-right"></i></a>
</div>

<script type="text/javascript">
(function($){
  jQuery(document).ready(function($) {
    $("#acm-video-144 .html5lightbox").html5lightbox({
      autoslide: true,
      showplaybutton: false,
      jsfolder: "/templates/ja_stark/js/html5lightbox/"
    });
  });
})(jQuery);
</script>
потом вставил этот код в аналогичный модуль acm в позиции слева (hero-1; ID=101) туда, где текст: "Lorem ipsum dolor sit amet..." (текстовое поле Introduction),
и очистил поля параметров "демо-кнопки" (та, что с текстом Find Out More)

И, всё бы хорошо, но
* место куда вставлен код - это текстовое поле (т.е. его содержимое между тегами <p></p>),
и как следствие: ошибка валидатора (В области видимости нет элемента p, но виден конечный тег p)
поэтому, теги div заменил на span
Спойлер
[свернуть]

По всей видимости и в html вкупе с css мои знания стремятся к нулю (мягко говоря) *suicide*
« Последнее редактирование: 10.03.2023, 16:39:51 от zudoshika »
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Спойлер
[свернуть]
Подобная задача есть. В Пейдж Билдере аддон формы обратной связи. Там стоит чекбокс - "Принять условия политики конфиденциальности".
Подскажите пожалуйста как по ссылке открывать модальное окно со своим текстом или материалом? Пример вывода где чекбокс.

I agree with the <a href="#">Privacy Policy</a> and I declare that I have read the information that is required in accordance with.
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Подобная задача есть. В Пейдж Билдере аддон формы обратной связи. Там стоит чекбокс - "Принять условия политики конфиденциальности".
Подскажите пожалуйста как по ссылке открывать модальное окно со своим текстом или материалом? Пример вывода где чекбокс.
I agree with the <a href="#">Privacy Policy</a> and I declare that I have read the information that is required in accordance with.
Свой вопрос решил с помощью модального окна Пейдж Билдера.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получение объектов из материала(статьи) по ее id

Автор muzzy76

Ответов: 2
Просмотров: 556
Последний ответ 05.07.2025, 10:33:26
от muzzy76
Количество просмотров материала. Реально ли оно?

Автор kysin

Ответов: 3
Просмотров: 779
Последний ответ 21.05.2025, 12:17:07
от wishlight
Проблема со страницей 404 и каноническим url материала

Автор azm1n

Ответов: 0
Просмотров: 814
Последний ответ 14.05.2025, 01:17:17
от azm1n
Реализовать такой вывод информации

Автор koyot777

Ответов: 0
Просмотров: 642
Последний ответ 08.04.2025, 12:49:50
от koyot777
Как сдвинуть заголовок материала в центр в шаблоне cassiopeia для joomla 5

Автор TerminatorTM

Ответов: 2
Просмотров: 735
Последний ответ 09.03.2025, 08:24:09
от fbr