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

Avatar

  • Осваиваюсь на форуме
  • 23
  • 2 / 0
  • мяфк!
Доброго времени суток, уважаемые!

Установил Joomla 1.7.3 на localhost и сервер.
В обоих создал материал.
На localhost:
бла-бла-бла.. Опубликовано 21-11-2011 Автор
На сервере:
бла-бла-бла.. Дата публикации <пусто> Автор
Из того, что нашёл на форуме:

что то накосячили с 1.7.3 локой
"Дата публикации"  и все.. дату не показывает
Вот точно такая же проблема.
В Joomla 1.7.3 была произведена замена константы:
Код
COM_CONTENT_PUBLISHED_DATE="Published on %s"
на две:
Код
COM_CONTENT_PUBLISHED_DATE="Published Date"
COM_CONTENT_PUBLISHED_DATE_ON="Published on %s"

Соответственно в русском языке на:
Код
COM_CONTENT_PUBLISHED_DATE="Дата публикации"
COM_CONTENT_PUBLISHED_DATE_ON="Опубликовано %s"

Поэтому, если у вас отображается просто "Дата публикации", то у вас используется первая константа, а не вторая. В общем это либо вопрос к разработчику шаблона, либо (если шаблон стандартный) к разработчикам Joomla. С точки зрения локализации - все корркетно.
Как это исправить?

Проблема №2.
Возможно из-за проблемы, описанной выше (других отличий в Joomlaх на локалхосте и на сервере я не вижу) в статьях на сервере изменился межстрочный интервал (стал меньше).
Пробовал изменять line-height в template.css. Не помогает, межстрочный интервал самого контента не меняется. Сравнивал применённые стили в материале на локалхосте и сервере (Google Chrome F12 в браузере). Одинаковые.
Кто-то сталкивался.. как исправить?

Заранее благодарен,  ::)
« Последнее редактирование: 24.11.2011, 08:43:11 от Avatar »
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Скорее вот так должно быть:
COM_CONTENT_PUBLISHED_DATE="Опубликовано %s"
COM_CONTENT_PUBLISHED_DATE_ON="Опубликовано %s"
*

Shark

  • Новичок
  • 4
  • 0 / 0
Скорее вот так должно быть:
COM_CONTENT_PUBLISHED_DATE="Опубликовано %s"
COM_CONTENT_PUBLISHED_DATE_ON="Опубликовано %s"
в 2.5.1 была та же проблема,помогло ваше решение
*

Kon Dou

  • Захожу иногда
  • 151
  • 23 / 0
  • Лед соловьиных слез теперь растает...
На самом деле, это проблема не локализации, а использования не тех переменных именно в шаблоне. Вместо использования переменной COM_CONTENT_PUBLISHED_DATE_ON, в шаблонах частенько встречается именно COM_CONTENT_PUBLISHED_DATE.
Правильнее все-же пройтись поиском по шаблону и поменять переменные в нем, а не в локализации.
*

Marques

  • Завсегдатай
  • 1410
  • 190 / 9
  • Ctrl+F5
На самом деле, это проблема не локализации, а использования не тех переменных именно в шаблоне. Вместо использования переменной COM_CONTENT_PUBLISHED_DATE_ON, в шаблонах частенько встречается именно COM_CONTENT_PUBLISHED_DATE.
Правильнее все-же пройтись поиском по шаблону и поменять переменные в нем, а не в локализации.

ИМХО правильнее не ковырять кучу файлов шаблона, а воспользоваться новой функцией Joomla 2.5 - переопределение языковых констант. И быстро и красиво.
Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги - http://dtkp.ru/ s@dtkp.ru
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
ИМХО правильнее не ковырять кучу файлов шаблона, а воспользоваться новой функцией Joomla 2.5 - переопределение языковых констант. И быстро и красиво.
Правильнее исправить шаблон, чтобы в дальнейшем не иметь проблем. Переопределение языковых констант это хорошо, но их разбор это лишняя работа, которую выполняет движок каждый раз при открытии страницы - намного проще один раз заменить в шаблоне на актуальные переменные и забыть.
*

sevlalo

  • Новичок
  • 1
  • 0 / 0
Ребят, большое спасибо, столкнулся с данной проблемой и благодаря вам исправил. Если кому пригодиться, исправлять нужно файл  ru-RU.com_content.ini  46 и 47 строки, весь путь language\ru-RU\ru-RU.com_content.ini Исправил и забыл, и никаких "переопределениев языковых констант" )))
*

konfeta

  • Новичок
  • 1
  • 0 / 0
У меня Joomla 2.5, та же самая проблема, не показывает дату публикации.
Все просмотрел, замена константы не помогает. У меня надпись после замены константы заменяется на английский: Date Published. Переопределение констант также не решает проблему.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
У меня Joomla 2.5, та же самая проблема, не показывает дату публикации.
Все просмотрел, замена константы не помогает. У меня надпись после замены константы заменяется на английский: Date Published. Переопределение констант также не решает проблему.
Значит в шаблоне зашито... Ищите, где.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Папка узбекского языка для Joomla 1.7.3

Автор Aхмед

Ответов: 16
Просмотров: 18076
Последний ответ 08.10.2021, 13:48:10
от viscountvic
перенос Joomla 2.5 с хостинга на денвер

Автор nameofmyname

Ответов: 1
Просмотров: 4862
Последний ответ 03.12.2016, 07:20:28
от effrit
перенос сайта с Joomla 2.5 на Wordpress

Автор Marfa

Ответов: 4
Просмотров: 4739
Последний ответ 12.05.2016, 17:04:10
от Marfa
Как исправить ошибку на Joomla 2.5 Table 'sait1.u4763_session' doesn't exist sql=insert INTO `u4763_?

Автор nuchi

Ответов: 1
Просмотров: 5109
Последний ответ 22.12.2015, 07:11:44
от asdal
не зайти на сайт и в панель Joomla. Выдает ошибку

Автор metalnov

Ответов: 6
Просмотров: 3272
Последний ответ 10.12.2015, 10:40:08
от Ragivort