Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути libraries/src/Form/FormField.php, а так же в libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note"
     name="your_note_for_user"
     label="Заголовок примечания"
     title="Альтернативный способ для заголовка"
     description="Текст примечания"
     class="col-12 alert alert-info"
     heading="h1"
     close="true"
/>

heading - указывать уровень заголовка. close - позволяет закрыть это примечание. В классе поля libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" 
     name="systempluginstatus"
     addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

- type - имя файла и класса,- addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный- name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php
// namespace для атрибута addfieldprefix
namespace Joomla\Module\Wtquicklinks\Site\Fields;
// нельзя напрямую обращаться к этому файлу
defined('_JEXEC') or die;
// подключаем родительский класс для переопределения
use Joomla\CMS\Form\Field\NoteField;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;

// имя класса и имя файла точь-в-точь
class SystempluginstatusField extends NoteField
{
     protected $type = 'Systempluginstatus';

     protected function getLabel()
          {
               // если плагин не включён
               if(PluginHelper::isEnabled('system','wtquicklinks')) {
                    // меняем свойства родительского класса
                    $this->class = 'alert alert-danger w-100';
                    $this->element['label'] = '⚠️ А-а-а-а!';
                    $this->element['description'] = 'Плагин не включён!!';
                    // и просто рендерим его с нашими свойствами
                    return parent::getLabel();
               }
          // А иначе всё хорошо, скрываем поле из виду.
          $this->parentclass = 'd-none';
          return '';
     }
}

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

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

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Где прописать alt=""  Не нашел где писать и от куда берет

И поправить, чтоб в коде страницы  </div><div class="pg-icon-detail"> <a class="magnific2" title="Detail"
Писало
title="Авто"
и
<a title="Download" href
<a title="Скачать фото авто" href
Спасибо.
« Последнее редактирование: 05.09.2019, 21:04:19 от stendapuss »
*

Kostelano

  • Давно я тут
  • 525
  • 52 / 1
Можно здесь задать вопрос (англ), отвечает относительно быстро.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Где прописать alt=""  Не нашел где писать и от куда берет
Переопределить макет категории. title должно брать из заголовок изображения. Точно не подскажу, не вникал
Код
					echo ' <a class="'.$cv->button2->methodname.'" title="'.htmlentities ($cv->oimgtitledetail, ENT_QUOTES, 'UTF-8').'"'
.' href="'.$cv->link2.'"';
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Переопределить макет категории. title должно брать из заголовок изображения. Точно не подскажу, не вникал
Тайтл берет надо  alt.  alt пустой в коде страницы .Где посмотреть? Тоже самое что тайтл, надо прописать для альт.
« Последнее редактирование: 06.09.2019, 14:48:09 от stendapuss »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Перепишите код, строка 290 у меня, в файле вьюшки категории deafult_images.php
Код
echo ' <a class="'.$cv->button2->methodname.'" title="'.htmlentities ($cv->oimgtitledetail, ENT_QUOTES, 'UTF-8').'" alt="'.PhocaGalleryText::wordDelete($cv->title, $this->tmpl['charlengthname'], '...').'" '
.' href="'.$cv->link2.'"';
Будет брать значение для alt из имени картинки
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Перепишите код, строка 290 у меня, в файле вьюшки категории deafult_images.php
Код
echo ' <a class="'.$cv->button2->methodname.'" title="'.htmlentities ($cv->oimgtitledetail, ENT_QUOTES, 'UTF-8').'" alt="'.PhocaGalleryText::wordDelete($cv->title, $this->tmpl['charlengthname'], '...').'" '
.' href="'.$cv->link2.'"';
Будет брать значение для alt из имени картинки
Перепишите код, строка 290 у меня, в файле вьюшки категории deafult_images.php
Код
echo ' <a class="'.$cv->button2->methodname.'" title="'.htmlentities ($cv->oimgtitledetail, ENT_QUOTES, 'UTF-8').'" alt="'.PhocaGalleryText::wordDelete($cv->title, $this->tmpl['charlengthname'], '...').'" '
.' href="'.$cv->link2.'"';
Будет брать значение для alt из имени картинки
не меняется
Спойлер
[свернуть]
правил в файле компонент- com_phocagallery-views-category-tmpl-файл default_images.php
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Вам в блок <a class="magnific" нужно добавить alt ? Я добавил <a class="magnific2"
И в какой именно элемент  <img /> ?
п.с.
Забыл что у <a> нет атрибута alt . Вот для картинок в категории , тот же файл, строка 128
Код
if(empty($cv->oimgalt))
$cv->oimgalt = PhocaGalleryText::wordDelete($cv->title, $this->tmpl['charlengthname'], '...');
// Перед этой строкой
echo JHtml::_( 'image', $cv->linkthumbnailpath, $cv->oimgalt, $cv->ooverlibclass); // этот код просто метка
« Последнее редактирование: 07.09.2019, 06:17:02 от draff »
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Надо для <img src="/images/phocagallery/1/thumbs/phoca_thumb_m_013_Roewe_550_501730.jpg.jpg.jpeg" alt="" class="pg-image img img-responsive c-Image c-Image--shaded" itemprop="thumbnail" /></a>
Вроде это изображение маленькое на странице.
Спойлер
[свернуть]
Как сделать , чтоб больше символов брало альт? а то слово режет. Под спойлером выделил. И  title название брало а не Detail title="Detail"
Спасибо.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Вроде это изображение маленькое на странице.
Для превьюшек прописал и без ограничения, т.е. полное название. С элемента <a>  убрал alt.
И  title название брало а не Detail title="Detail"
Не логично будет, да и как поисковики отреагируют на столько повторений текста.
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать номер страницы

Автор Alex_gs

Ответов: 0
Просмотров: 2435
Последний ответ 18.11.2021, 18:55:21
от Alex_gs
Фотогалерея PhocaGallery съехала в конец страницы сайта - Joomla

Автор Ксения05

Ответов: 3
Просмотров: 1330
Последний ответ 11.09.2017, 13:16:30
от Ilhom666
Обнаружена ошибка. Такой страницы не существует

Автор seriysokol

Ответов: 4
Просмотров: 6802
Последний ответ 18.11.2015, 15:03:50
от rostby
Размещение эскизов по центру страницы

Автор shaman69

Ответов: 3
Просмотров: 2430
Последний ответ 11.02.2015, 09:01:12
от Roman Petrenko
Нумерация, разбиение на страницы, pagination в модуле и в плагине

Автор Askar

Ответов: 1
Просмотров: 1578
Последний ответ 11.12.2014, 14:07:44
от Unik