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

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Обновил до Joomla 3.7.0
обновил все компоненты и тут в админке просит PHP 7.0
Установил и появились ошибки в БД. Другие сайты Joomla 3.7 на этом же VPS работают нормально. Переустановил сайт из резервной копии, но на главной пишет ОШИБКА Call to undefined function mysql_escape_string()
А в админку захожу без проблем, после двух попыток решил зайти в phpMyAdmin, но его нет, отображает главный сайт на VPS
Кто столкнулся с такой же проблемой подскажите пожалуйста.  !
https://cleaning-ru.info
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
В PHP7 нет MySQL драйвера, только MySQLi и PDO. То есть необходимо изменить драйвер в конфигурации: сервер => тип базы данных => MySQLi.

В configuration.php поставьте:
Цитировать
public $dbtype = 'mysqli';
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
В PHP7 нет MySQL драйвера, только MySQLi и PDO. То есть необходимо изменить драйвер в конфигурации: сервер => тип базы данных => MySQLi.

В configuration.php поставьте:
У меня там стоит
public $dbtype = 'mysqli';

И админка работает
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
А сам mysqli установлен? Вызовите функцию phpinfo();
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Где её вызвать? Думаю если другие сайты работают на этом же VPS то по идее должно быть?
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Тогда Вам поможет поиск по файлам. Может, какое-нибудь кривое расширение использует эту дремучую функцию в обход фреймворка.
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Посмотрите, создал файл с командой и он показал содержимое, но вроде бы все в порядке? = https://cleaning-ru.info/phpinfo.php
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Ну замените на mysqli_real_escape_string()
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Заменить где? в configuration.php ? Не помогло, страницы не отображаються
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Да откуда бы знать где. Ошибка то у вас перед глазами, а в ней написано где.
*

dmitry_stas

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

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Обращение к неопределенной функции mysql_escape_string()
 Надо эту функцию определить
Судя по https://cleaning-ru.info/phpinfo.php
   enabled
PDO drivers   MySQL, sqlite

Значит все вроде бы верно, но не работают страницы
Другие сайты рядом стоят без проблем работают с тем же набором плагинов и компонентов
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Чудес не бывает. От рассуждений тут работает, а тут нет, ошибка не исчезнет. Ищите и правьте.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Чудес не бывает. От рассуждений тут работает, а тут нет, ошибка не исчезнет. Ищите и правьте.
это точно. зачем голову ломать себе, если факт так сказать налицо - mysql_escape_string где то вызывается, и это вызывает фатальную ошибку. надо найти где, и поправить.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Запустил = Консоль отладки Joomla!
https://cleaning-ru.info/
Посмотрите на БД куча ошибок, но что с ними делать?
*

Alexhelp

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
  • Я за справидливость ...
Внимание

Предупреждений не обнаружено
*

dmitry_stas

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

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Да вообще поразительно. Куча ненужной информации, а вот полный текст ошибки - великая тайна. А в нем ведь и файл и строка ошибки указаны.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Угу, бред на 5 экранов и нет одной строчки
*

Ard_nik

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Обновил до Joomla 3.7.0
обновил все компоненты и тут в админке просит PHP 7.0
Установил и появились ошибки в БД. Другие сайты Joomla 3.7 на этом же VPS работают нормально. Переустановил сайт из резервной копии, но на главной пишет ОШИБКА Call to undefined function mysql_escape_string()
А в админку захожу без проблем, после двух попыток решил зайти в phpMyAdmin, но его нет, отображает главный сайт на VPS
Кто столкнулся с такой же проблемой подскажите пожалуйста.  !
https://cleaning-ru.info
Точно такая же ерунда. Но самое интересно, что это возникает не сразу, а через некоторое время, примерно через часов 12-20. Причем при смене PHP на старую версию, сайт начинает работать. Кто-то решил вопрос, почему возникает ошибка при смене версии PHP?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Люди, вы чё? Напишите полностью что за ошибка! Если сами не можете по ней расшифровать, где она происходит - мы поможем, но фраза "точно такая же ерунда, кто решил вопрос" ваш вопрос не решит!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Люди, вы чё? Напишите полностью что за ошибка!
Да вы чё? Ни за что! Это же признак тупости. Еще домен могут украсть или DDOS устроить...
Не будь паразитом, сделай что-нибудь самостоятельно!
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Точно такая же ерунда...почему возникает ошибка при смене версии PHP?
Для примера: вы сменили жену. Хотите узнать ее истинное отношение к вам? Дождитесь, когда она будет сидеть полчаса в туалете с телефоном, подходите, отнимаете телефон и кидаете об стену. Наблюдаете развитие событий:
а) широко открытый рот и выпученные глаза - вам придется покупать новый телефон, она вас любит;
б) она вскакивает с горшка и кидается на вас с целью выцарапать вам глаза - уважения к вам у нее нет, брак по расчету;
в) сидит и мило улыбается = ERROR 500!

И только после того, как врач узнает о симптомах, он сможет назначить правильное лечение. Вам обоим.

Так и здесь. У меня ошибка... Какая? Чрезмерное прижатие к толчку гравитационным полем земли с невозможностью отрыва?  ^-^
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Ard_nik

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Для примера: вы сменили жену. Хотите узнать ее истинное отношение к вам? Дождитесь, когда она будет сидеть полчаса в туалете с телефоном, подходите, отнимаете телефон и кидаете об стену. Наблюдаете развитие событий:
а) широко открытый рот и выпученные глаза - вам придется покупать новый телефон, она вас любит;
б) она вскакивает с горшка и кидается на вас с целью выцарапать вам глаза - уважения к вам у нее нет, брак по расчету;
в) сидит и мило улыбается = ERROR 500!

И только после того, как врач узнает о симптомах, он сможет назначить правильное лечение. Вам обоим.

Так и здесь. У меня ошибка... Какая? Чрезмерное прижатие к толчку гравитационным полем земли с невозможностью отрыва?  ^-^
В теме же написана какая ошибка!!- https://yadi.sk/d/buHEHjPT3JamKH скрин ошибки.
После обновления до более новой версии PHP, через часов 8-12 появляется ошибка 500 с текстом:   
Re: Call to undefined function mysql_escape_string(). Админ панель работает. При включение показать ошибки, перестаёт работать и панель управления. Кто знает, что это и как с этим бороться?! Спасибо.
*

Ard_nik

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Люди, вы чё? Напишите полностью что за ошибка! Если сами не можете по ней расшифровать, где она происходит - мы поможем, но фраза "точно такая же ерунда, кто решил вопрос" ваш вопрос не решит!
Доброго дня) В теме же написана какая ошибка!!- https://yadi.sk/d/buHEHjPT3JamKH скрин ошибки.
После обновления до более новой версии PHP, через часов 8-12 появляется ошибка 500 с текстом:   
Re: Call to undefined function mysql_escape_string(). Админ панель работает. При включение показать ошибки, перестаёт работать и панель управления. Кто знает, что это и как с этим бороться?! Спасибо.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Ок. По ftp скачиваете файлы сайта на компьютер и ищите в них по слову mysql_escape_string. Затем выложите сюда. Как уже написали выше - это будет что-то стороннее, на что либо авторы забили, либо вы забыли обновить.
*

Igor_ch

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Ну замените на mysqli_real_escape_string()
Спасибо. При аналогичной проблеме помогло.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Помогите с БАГом в панели администратора Joomla 3

Автор akteon25

Ответов: 2
Просмотров: 1095
Последний ответ 26.02.2025, 16:41:56
от akteon25
Версии РНР и Joomla 3

Автор Ebelous

Ответов: 8
Просмотров: 2866
Последний ответ 27.01.2025, 20:38:45
от pavelrer
Trouble Upgrading from Joomla 3.8 to 3.9

Автор melissa00

Ответов: 0
Просмотров: 1700
Последний ответ 26.07.2024, 10:03:51
от melissa00
SP polls в Joomla 3.8.2

Автор wawont

Ответов: 2
Просмотров: 3370
Последний ответ 22.02.2024, 21:03:15
от Zegeberg
Исправление уязвимости в Joomla 3.10.12

Автор Sulpher

Ответов: 8
Просмотров: 3056
Последний ответ 12.01.2024, 22:15:52
от stepan39