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

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Имею один сайт. Посмотрел сегодня логи, а там ужас, пару гигов набежало и кучу строк с разных IP.  Меня кто-то ломает? Что это такое?


Код
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable references should be returned by reference in /home/ukr489447/domains/protek.net/public_html/libraries/joomla/session/session.php on line 343
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable references should be returned by reference in /home/ukr489447/domains/protek.net/public_html/libraries/joomla/session/session.php on line 343
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable references should be returned by reference in /home/ukr489447/domains/protek.net/public_html/libraries/joomla/session/session.php on line 343
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable references should be returned by reference in /home/ukr489447/domains/protek.net/public_html/libraries/joomla/session/session.php on line 343
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable references should be returned by reference in /home/ukr489447/domains/protek.net/public_html/libraries/joomla/session/session.php on line 343
[Fri Dec 02 03:40:33 2016] [error] [client 217.73.208.149] PHP Notice:  Only variable referen
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
В строке нужно убрать &

Написать хосту, чтобы сделали! И проконтролировали.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Написать хосту, чтобы сделали! И проконтролировали.
что сделали и что и кого поконтролировали?
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
В строке нужно убрать &

      вот эта строка в файле:
Код
return $this->data->getValue($namespace . '.' . $name, $default);
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
что сделали и что и кого поконтролировали?

Вам ответили. Или хост.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Написать хосту, чтобы сделали! И проконтролировали.
300!  :)

вот эта строка в файле
там чуть выше есть
Цитировать
function &get
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
300!  :)

Спартанцев? :)

ТС, нет таких логов в ядре, только что посмотрел.
Хосту пишите, мой сразу всю лапшу для меня вываливает: кто, куда, почему.

бан по 217.73.208.149 влепите и будет радость! заодно и 300 спартанцев посмотрите)))
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
300!  :)
там чуть выше есть

удалил, посмотрим, что будет. :))))

P.S: а фильм 300 спартанцев зачтный фильмец!
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Спартанцев? :)

ТС, нет таких логов в ядре, только что посмотрел.
Хосту пишите, мой сразу всю лапшу для меня вываливает: кто, куда, почему.

бан по 217.73.208.149 влепите и будет радость! заодно и 300 спартанцев посмотрите)))

да там этих адресов километры, устанешь всех банить по IP. :)
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
да там этих адресов километры, устанешь всех банить по IP. :)

а вот вы хосту напишите-они вас через крон по ип пустят и похожие "идут пить пиво".
но вам надо понять причину, а не следствие!
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
В строке нужно убрать &
Всё.
Остальное в теме - какой-то бред и параллельная реальность!
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Всё.
Остальное в теме - какой-то бред и параллельная реальность!

между строк читай...взял, всё спалил)))

ТС, ну уберите & ... Вам же пишут, как сделать.
А то я флудить тут начинаю и других подъ... (без минусов товарищи, без минусов!)

ТС, сорри. А про хост= я бы на вашем месте мозг им выел! И пусть логи и обосновывают.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Всё.
Остальное в теме - какой-то бред и параллельная реальность!

не помогло, убрал & , а в логах как были те ошибки так и остались!
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
не помогло, убрал & , а в логах как были те ошибки так и остались!
Прошлое не вернуть
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Прошлое не вернуть
но умные люди пишут заплатки. Не всё новое хорошее! И как говорил Соломон: "нет ничего нового..."
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Один чувк вот что предлагкает (см. ниже и тут: http://www.openmutual.org/2016/02/joomla-1-5-quirk-in-20151206-core-session-hardening-patch/). Но я так и не понял как у меня поменять и что?


Код
--- /home/admin/Downloads/JOOMLASESSEIONHARDENFIX/sessionNEWSESSIONHARDEN.php
+++ /home/admin/Downloads/JOOMLASESSEIONHARDENFIX/sessionNEWBORKEDEDITED.php
@@ -339,8 +339,13 @@
  $error = null;
  return $error;
  }
-
- return $this->data->getValue($namespace . '.' . $name, $default);
+
+// removed this next line as it generates a Notice: Only variable references should be returned by reference error
+// return $this->data->getValue($namespace . '.' . $name, $default);
+// and define a variable with the data to be returned....
+
+ $getnamespacenamedata = $this->data->getValue($namespace . '.' . $name, $default);
+ return $getnamespacenamedata;
  }
 
  /**
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код
return $this->data->getValue($namespace . '.' . $name, $default);

на

Код
$getnamespacenamedata = $this->data->getValue($namespace . '.' . $name, $default);
return $getnamespacenamedata;
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
Вот мой кусочек кода:
Код
function get($name, $default = null, $namespace = 'default')
{
$namespace = '__'.$namespace; //add prefix to namespace to avoid collisions

if($this->_state !== 'active' && $this->_state !== 'expired') {
// @TODO :: generated error here
$error = null;
return $error;
}

return $this->data->getValue($namespace . '.' . $name, $default);
}


А вот  $getnamespacenamedata - это что такое? новое
*

dmitry_stas

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

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
само собой новое. не очень понимаю, что именно непонятно? заменить одно на другое. было - стало. как по другому написать не знаю к сожалению.

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

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
В настройках системы выставите уровень ошибок "Простой" и будет Вам счастье. По умолчанию установлен обычно:

Цитировать
E_ALL & ~E_DEPRECATED & ~E_STRICT

То есть notice тоже учитываются.
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
В настройках системы выставите уровень ошибок "Простой" и будет Вам счастье. По умолчанию установлен обычно:

То есть notice тоже учитываются.

какие настройки? Это не мой родной хостинг и систему я не могу настроить.
*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
какие настройки? Это не мой родной хостинг и систему я не могу настроить.

В панели управления сайта.
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
В панели управления сайта.

что-то я не нашёл для Joomla 1.5.26 такого!
*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Сайт => общие настройки => сервер => сообщения об ошибках "Простой"
*

dmitry_stas

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

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
какие настройки? Это не мой родной хостинг и систему я не могу настроить.

не некромируйте тему.
напишите хосту: я юзер, не могу, сделайле и дайте отчёт.
они сделают!
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Elimelech

  • Захожу иногда
  • 261
  • 2 / 0
не некромируйте тему.
напишите хосту: я юзер, не могу, сделайле и дайте отчёт.
они сделают!

моя поддержка ленивая, думаю, что никакого отчёта не будет. :(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Чем лучше всего делать резервные копии сайта?

Автор 7Azimuth

Ответов: 115
Просмотров: 55058
Последний ответ 29.11.2023, 14:41:12
от sivers
Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 3196
Последний ответ 12.11.2023, 23:37:03
от all_zer
Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 1616
Последний ответ 26.12.2020, 15:15:15
от stendapuss
Версия сайта для слабовидящих

Автор nikos

Ответов: 22
Просмотров: 43923
Последний ответ 27.11.2020, 11:04:18
от chernobyl
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9371
Последний ответ 05.11.2020, 20:56:47
от Kijv