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

MS

  • Осваиваюсь на форуме
  • 23
  • 0 / 2
структура шаблона такая - наверху 3 модуля, в т.ч. новости. Главная (mainbody) под ними.
Жмешь на новость или на статью из главной. текст выводится под верхними модулями и его сразу не видно. Вот как сделать, чтобы верхие модули пропадали при открытии материала?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
*

MS

  • Осваиваюсь на форуме
  • 23
  • 0 / 2
Попробовал эти способы, не помогает. А стандартными средствами никак не сделать? В меню что-то поправить?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
стандартными нет, приведенные способы модификации index.php работают на 100%.
Если не работает - значит где то допускаешь ошибку. Приведи кусок кода из шаблона с подобным условием
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MS

  • Осваиваюсь на форуме
  • 23
  • 0 / 2
Ну вот такая штука есть

Код
<div id="mainpage">
          <div id="pathway">
            <?php mosPathway(); ?>
            <span id="clock"></span></div>
          <?php if (mosCountModules('user1') or mosCountModules('user2') or mosCountModules('user3')) : ?>
          <div class="mainwrap">
            <?php if (mosCountModules('user1')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php mosLoadModules('user1', -2); ?>
              </div>
            </div>
            <?php endif; ?>
            <?php if (mosCountModules('user2')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php mosLoadModules('user2', -2); ?>
              </div>
            </div>
            <?php endif; ?>
            <?php if (mosCountModules('user3')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php mosLoadModules('user3', -2); ?>
              </div>
            </div>
            <?php endif; ?>
          </div>
          <?php endif; ?>
          <div id="mainbody">
            <table border="0" cellspacing="0" cellpadding="0" id="majtable">
              <tr valign="top">
                <td><?php mosMainBody(); ?>
                </td>
                <?php if (mosCountModules('inset') or mosCountModules('right')) : ?>
                <?php if (mosCountModules('inset')) : ?>
                <td class="sp">&nbsp;</td>
                <td class="inseter"><?php mosLoadModules('inset', -2); ?></td>
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
ну и где у тебя привязка к главной странице?
Пиши так:
Код: php
<?php
  if (($option == '') || ($option == 'com_frontpage')) {
    mosLoadModules ( 'user1' );
  } else {}
?>
Где user1 - та позиция, на которой показываются модули только для главной (но которых не должно быть видно при просмотре полного текста материала)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MS

  • Осваиваюсь на форуме
  • 23
  • 0 / 2
Воткнул этот кусок. В итоге на главной исчезли модули юзер2,3. А юзер один так и показывается при открытии новости.

Нет! на главной появился еще один модуль юзер1!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
окхм, я ж не давал точного куска кода - привел пример, а дальше уже сам насколько фантазия позволяет ))
Нет! на главной появился еще один модуль юзер1!
отлично, а если уйти с главной - модуль user1 тоже исчезнет? Если да, значит все правильно, дальше прописывай только свои позиции
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MS

  • Осваиваюсь на форуме
  • 23
  • 0 / 2
Вставил это. Сайт пишет, что синтаксическая ошибка

Код
<?php
  if (($option == '') || ($option == 'com_frontpage')) {
    mosLoadModules ( 'user1' ) ( 'user2' ) ( 'user3' );
  } else {}
?>

Так понимаю, что потом надо модули с публикации на главной снять, чтобы два раза не появлялись?
Или все модули в этот код внести?
*

Melnikoff

  • Осваиваюсь на форуме
  • 42
  • 8 / 1
Я так понимаю, приведённый MS кусок кода должен выглядеть так:

Код
<div id="mainpage">
          <div id="pathway">
            <?php mosPathway(); ?>
            <span id="clock"></span></div>
          <?php if (mosCountModules('user1') or mosCountModules('user2') or mosCountModules('user3')) : ?>
          <div class="mainwrap">
            <?php if (mosCountModules('user1')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php if (($option == '') || ($option == 'com_frontpage')) {
                mosLoadModules('user1', -2);
                } else {}?>
              </div>
            </div>
            <?php endif; ?>
            <?php if (mosCountModules('user2')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php if (($option == '') || ($option == 'com_frontpage')) {
                mosLoadModules('user2', -2);
                } else {} ?>
              </div>
            </div>
            <?php endif; ?>
            <?php if (mosCountModules('user3')) : ?>
            <div class="usfloat" style="width: <?php echo $topwidth; ?>;">
              <div class="us">
                <?php if (($option == '') || ($option == 'com_frontpage')) {
                mosLoadModules('user3', -2);
                } else {} ?>
              </div>
            </div>
            <?php endif; ?>
          </div>
          <?php endif; ?>
          <div id="mainbody">
            <table border="0" cellspacing="0" cellpadding="0" id="majtable">
              <tr valign="top">
                <td><?php mosMainBody(); ?>
                </td>
                <?php if (mosCountModules('inset') or mosCountModules('right')) : ?>
                <?php if (mosCountModules('inset')) : ?>
                <td class="sp">&nbsp;</td>
                <td class="inseter"><?php mosLoadModules('inset', -2); ?></td>

То есть для каждого из модулей условие отображения ставим отдельно.
Или я ошибаюсь?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мобильная версия Joomla 1.0 - как сделать ?

Автор magistr_yoda

Ответов: 0
Просмотров: 3751
Последний ответ 26.04.2015, 16:30:11
от magistr_yoda
Не выводится Google Adsense на главной странице сайта

Автор lodyr

Ответов: 0
Просмотров: 4123
Последний ответ 11.11.2014, 17:29:58
от lodyr
Пустой контент на странице создания материала

Автор salem.sakarov

Ответов: 4
Просмотров: 2755
Последний ответ 12.11.2013, 11:58:28
от draff
Настройка главной страницы

Автор Alexey2013

Ответов: 6
Просмотров: 3435
Последний ответ 15.04.2013, 14:43:36
от Alexey2013
Не могу разобраться с редактированием главной страницы

Автор P!T

Ответов: 1
Просмотров: 3155
Последний ответ 15.04.2013, 10:51:54
от Werber