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

lilsaint5800

  • Захожу иногда
  • 87
  • 1 / 0
  • Джизос
На сайте более тысячи статей, созданных с помощью какого то стремного редактора, все статьи в ужасном формате, но функция "очистить форматирование" в редакторе TinyMCE очень хорошо очищает статьи от хлама, но вручную такой объем статей почистить нереально. Есть ли способ автоматизировать этот процесс?
*

lilsaint5800

  • Захожу иногда
  • 87
  • 1 / 0
  • Джизос
это 1 рабочий день. что тут нереального?
Уточню, что статей 13000+
*

dmitry_stas

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

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
хыхы. не, меня бегет выгонит, если всякие лентяи начнут по 10к статей гонять по нему  ;D

вот есть такая штука
http://htmlpurifier.org/

или можно извратиться и записать действия
https://lifehacker.ru/wildfire/
и потом заколупать в скрипт смену айдишников статей. не пользовался, но вроде бы подъемный вариант
*

lilsaint5800

  • Захожу иногда
  • 87
  • 1 / 0
  • Джизос
хыхы. не, меня бегет выгонит, если всякие лентяи начнут по 10к статей гонять по нему  ;D

вот есть такая штука
http://htmlpurifier.org/

или можно извратиться и записать действия
https://lifehacker.ru/wildfire/
и потом заколупать в скрипт смену айдишников статей. не пользовался, но вроде бы подъемный вариант

Разве поиск автоматизации рутины относят к лентяйству, а не к эффективности?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
естессно!
вот любой нормальный китаец порадовался бы такому фронту работ! ибо счастье - в труде!
а вы вон чего задумали - автоматизировать... лень и малодушие!  ;D
а вообще, настоящий программист - это лентяй, который придумывает всякие алгоритмы, лишь бы сбежать от рутины.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Смотря какой мусор, я на одном сайте скачивал дамп бд и регулярками проходился.
*

lilsaint5800

  • Захожу иногда
  • 87
  • 1 / 0
  • Джизос
Смотря какой мусор, я на одном сайте скачивал дамп бд и регулярками проходился.
Ну например параграфы обернуты в
Код
<span style="color:#ccc"></span>
и на самих параграфах
Код
<p style="text-align:justify">
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
style=\"[^\"]*\" типо такого для стилей
Но в бд могут кавычки экранироваться
*

Missile

  • Завсегдатай
  • 1116
  • 90 / 1
я на одном сайте скачивал дамп бд и регулярками проходился
Можно даже без регулярок - просто в Блокноте через пункт "Заменить".
<p style="text-align:justify">
Это - нормальное форматирование. По крайней мере, можно оставить.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Missile, пришло время узнать про Notepad++  ^-^
блокнот - для бедных!  ;D

держу в курсе:
поигравшись с кривым wildfire, я в порыве энтузиазма перепрыгнул на Kantu.
он не такой кавайный и в нем нет визуального программирования связей, зато сразу доступна вкладка с примерами, в которых есть чтение данных из csv - вот где сила!
в результате за полчаса состряпал скрипт открывания статей с идешниками из файла, нажиманием кнопки и "очистить форматироание" и закрыванием с сохранением.

и лишь потом понял, что очистка срабатывает только для выделенного текста  ;D
так что надо ещё одно действие вставить и попробовать ускорить это все.
а еще выяснилось, что эта автомата нагло срет в код статьи, добавляя пустой div со своим ID, даже если никакой макрос не запущен.
https://forum.a9t9.com/t/div-id-kantu-mark-div/1143
именно поэтому подобные кривые штуки надо держать на резервном браузере.
 
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
в общем, заработало.
скрипт для Kantu (браузерный аддон, ставить лучше на резервный браузер, т.к. сыроватое оно)
https://a9t9.com/kantu
8-10 секунд на статью, по ходу, можно ускорить изменением интервала первых двух операндов, но это рискованно, т.к. может тупо скрипт очистки не успеть сработать.
а вот так выглядит код
Код
{
  "Name": "a_clean_formatting",
  "CreationDate": "2018-12-1",
  "Commands": [
    {
      "Command": "csvRead",
      "Target": "articles.csv",
      "Value": ""
    },
    {
      "Command": "store",
      "Target": "180",
      "Value": "!timeout_macro"
    },
    {
      "Command": "store",
      "Target": "fast",
      "Value": "!replayspeed"
    },
    {
      "Command": "while",
      "Target": "\"${!csvReadStatus}\" == \"OK\"",
      "Value": ""
    },
    {
      "Command": "echo",
      "Target": "status = ${!csvReadStatus}, line = ${!csvReadLineNumber}",
      "Value": ""
    },
    {
      "Command": "open",
      "Target": "https://j300/administrator/index.php?option=com_content&task=article.edit&id=${!COL1}_${!csvReadLineNumber}",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "id=mceu_59-open",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "id=mceu_107-text",
      "Value": ""
    },
    {
      "Command": "selectFrame",
      "Target": "relative=top",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "//*[@id=\"mceu_49\"]/button/i",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "//*[@id=\"toolbar-save\"]/button",
      "Value": ""
    },
    {
      "Command": "storeEval",
      "Target": "${!csvReadLineNumber}+1",
      "Value": "!csvReadLineNumber"
    },
    {
      "Command": "store",
      "Target": "true",
      "Value": "!errorIgnore"
    },
    {
      "Command": "csvRead",
      "Target": "articles.csv",
      "Value": ""
    },
    {
      "Command": "store",
      "Target": "false",
      "Value": "!errorIgnore"
    },
    {
      "Command": "endWhile",
      "Target": "",
      "Value": ""
    }
  ]
}

+ надо на вкладке CSV сделать импорт своего файла articles.csv с id-шниками нужных статей, каждый на своей строке! без запятых и прочих разделителей.

макрос записан на дефолтном TinyMCE для суперадмина. Это важно, т.к. скрипт бьет по кнопкам с определенными ID, так что если у вас другой редактор или конфигурация другая, то надо будет поменять в нужных местах id кнопок.
ну и адрес админки надо поменять с
Код
https://j300/
на свой.

зы
медаль главному лентяю!  ;D
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Можно даже без регулярок - просто в Блокноте через пункт "Заменить".
Ну так в блокноте по регуляркам прогонять.
*

Missile

  • Завсегдатай
  • 1116
  • 90 / 1
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Missile, лет двадцать вы загнули, первый релиз был 2008 году - итого лет десять  ;D ^-^
Я им пользуюсь
*

Missile

  • Завсегдатай
  • 1116
  • 90 / 1
первый релиз был 2008 году
Не, он точно был раньше. Я его помню ещё из той эпохи, когда про софт узнавали из дисков, прилагаемых к журналам типа "Мир ПК". Возможно, конечно, что я путаю с Notepad'ом с одним плюсом.
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Я не спорю на этот счёт. Это как спорить сколько лет Деду Морозу, главное, что он есть ;D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор lifelover2b

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

Автор azm1n

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

Автор azm1n

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

Автор romagromov

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

Автор Dram

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