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

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Как "залоггировать" отправляемые письма с Joomla?
Чтобы проверить работает ли отправка всегда, нет ли спам-рассылок и тп.
Каким-нибудь плагином или в текстовый файл на хостинге...
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Письма отправляет ваш сервер. Если он у вас свой (vps), то вы легко увидите список отправленных. Если вы на хостинге у которого куча соседей, то хостер думаю вам не покажет общий список писем, включая чужие. Но лучше поинтересоваться у него. Cms Joomla это сделать точно не сможет.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Письма отправляет ваш сервер. Если он у вас свой (vps), то вы легко увидите список отправленных. Если вы на хостинге у которого куча соседей, то хостер думаю вам не покажет общий список писем, включая чужие. Но лучше поинтересоваться у него. Cms Joomla это сделать точно не сможет.
Ну вообще можно. влезь в jmail и добавить, чтобы при отправке лог делать. Но это будет только при импользовании этого класаа
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Так это какие Joomla отсылает, а если злоумышленники взломают - они свой скрипт зальют и будут через php mail отсылать.
Если есть доступ к php.ini, то можно логировать это дело:
Цитировать
mail.add_x_header = On
mail.log = /var/log/php.mail.log
(Путь должен быть ваш и права у папки на запись)

Но опять же Joomla может и через smtp с другого сервера отправлять при соответсвующих настройках. Я например отправляю через Яндекс почту для домена, а у себя на сервере запретил отправку писем.
« Последнее редактирование: 20.03.2017, 18:25:05 от ChaosHead »
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
В последнее время отправка через SMTP сервер хостера не выходит, только PHP mail работает.
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2

В последнее время отправка через SMTP сервер хостера не выходит, только PHP mail работает.
Знаете скока спама будет.....
« Последнее редактирование: 20.03.2017, 20:56:24 от kost757 »
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
 Не знаю, что значит "не выходит", наверное что-то не так настраиваете
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Не знаю, что значит "не выходит", наверное что-то не так настраиваете
Проблема в хостере оказалась, рассылаю письма php mail. Но как всё-таки отслеживать ?
Какой файл отвечает за отправку, чтобы в нем прописать сохранение писем в файл.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Я вам выше написал уже: php.ini отвечает и что в нём прописать. Можете ли вы это сделать - спросите у хостера.
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Я вам выше написал уже: php.ini отвечает и что в нём прописать. Можете ли вы это сделать - спросите у хостера.
Речь идет о Joomla а не о VPS
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Сам не делал, просто по лазил по исходникам. Joomla отправляет почту классом JMailer который расширяет класс PHPMailer. Пишите системный плагин, перехватывайте событие когда экземпляр JMailer создан.
Что то типа
Код: php
<?php
defined('_JEXEC') or die;
/**
 * Example system plugin
 *
 * @since  1.0
 */
class plgSystemExample extends JPlugin
{
/**
* Constructor.
*
* @param   object  &$subject  The object to observe.
* @param   array   $config An optional associative array of configuration settings.
*
* @since   1.0
*/
public function __construct(&$subject, $config)
{
// Calling the parent Constructor
parent::__construct($subject, $config);
 
// Do some extra initialisation in this constructor if required
}
 
/**
* Listener for the `onAfterInitialise` event
*
* @return  void
*
* @since   1.0
*/
public function onAfterInitialise()
{
If(JFactory::$mailer){
JFactory::$mailer->action_function = [$this,'loging'];
}
}

private function loging($params){
var_dump($params);

/*В $params должны быть данные отправленной почты
Если сработало здесь можно писать в лог
*/

}

}
Не готовое решение, на коленке, не проверял, просто в качестве идеи. Возможно и событие не то.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Речь идет о Joomla а не о VPS
Вы же спрашиваете про спам-рассылки. Если спамеры заразят ваш сайт и будут рассылать с него спам, то они будут делать это отдельным скриптом, а не через Joomla.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
в htaccess
Код
php_value mail.add_x_header 1
php_value mail.log путь до файла лога/mail.log
тут будет записи посланых писем и откуда (файлы)
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
в htaccess
Код
php_value mail.add_x_header 1
php_value mail.log путь до файла лога/mail.log
тут будет записи посланых писем и откуда (файлы)
путь указывать от корня сайта или от корня сервера?
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
от корня сервера обычно /home/........./
Прописал-ошибка 500 и сайт не открывается. А вы сами-то проверяли ?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Гуглить вы не пробовали, чтобы понять обманывают вас или правду пишут?
Во люди пошли, у хостера спросить боятся, Google боятся, а возмущаться - нет.
flyingspook, радуйся, что не минус в карму за возможный ответ.
« Последнее редактирование: 21.03.2017, 20:22:07 от ChaosHead »
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Гуглить вы не пробовали, чтобы понять обманывают вас или правду пишут?
Во люди пошли, у хостера спросить боятся, Google боятся, а возмущаться - нет.
flyingspook, радуйся, что не минус в карму за возможный ответ.
так я сюда и попал с Google. и решил спросить.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Так уже ответили 3 варианта: как в php.ini прописать, на некоторых хостингах есть возможность, как в htaccess прописать, на некоторых хостингах есть возможность (но хостеру лучше знать вашему), как плагин написать, показывающий что отправляется из Joomla. Какой еще ответ нужен, как взломать сервер хостера и посмотреть что он отправляет от вашего пользователя, т.к. нет возможности спросить у хостера и нет возможности взять vps на тестовый период?
Ждите, сами узнаете, если абуза хостеру придёт - он вас уведомит и копию письма предоставит.
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Так уже ответили 3 варианта: как в php.ini прописать, на некоторых хостингах есть возможность, как в htaccess прописать, на некоторых хостингах есть возможность (но хостеру лучше знать вашему), как плагин написать, показывающий что отправляется из Joomla. Какой еще ответ нужен, как взломать сервер хостера и посмотреть что он отправляет от вашего пользователя, т.к. нет возможности спросить у хостера и нет возможности взять vps на тестовый период?
Ждите, сами узнаете, если абуза хостеру придёт - он вас уведомит и копию письма предоставит.
Я же ответил что мне нужен вариант для Joomla. Я не умею писать плагины. Давайте разберемся с htaccess почему он выдает ош 500
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Это обсуждали уже, пробуйте
http://joomlaforum.ru/index.php/topic,324764.msg1627514.html#msg1627514
А потом пишите что конкретно вы пишите в него, надоело гадать
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Разобрался с htaccess
php_value mail.add_x_header 1
php_value mail.log  /var/www/nnm-club.me/data/www/nnm-club.me/logs/mail.log


#
mail() on [/var/www/wfgamesh/data/www/nnm-club.me/libraries/vendor/phpmailer/phpmailer/class.phpmailer.php:689]: To: info@wfgames.ru -- Headers: Date: Tue, 21 Mar 2017 21:18:17 +0300 From: World free games <info@wfgames.ru> Message-ID: <1fcf49f8483b0145d34336667fc2db84@nnm-club.me> X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Блин еще бы видеть текст письма...
*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Блин еще бы видеть текст письма...

А секретаршу, отправляющую письмо? Где прописать надо, чтоб увидеть, какой там крокодил спамит в рабочее время?
*

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

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Возможно это вам поможет https://chat2desk.com. Не совсем то, что вы хотите, но вы у них поузнавайте на счет возможностей, возможно вашу проблему тоже удастся решить

Я пошутил. Кстати, логирование сообщений целиком возможно только при debug уровне SMTP сервера. А здесь всё упирается в доступ конфигам, которых, у ТС нет.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Филипп, да я просто не в ту тему написал, перепутал. Там про другое.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Блин еще бы видеть текст письма...
Зачем оно нужно.
Если спам идет то CAPTCHA помогает, рассылка со стандартных форм в логах это видно.
*

kost757

  • Захожу иногда
  • 376
  • 1 / 2
Спасибо !  тема #
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна проф помощь в обновлении Joomla на лок.сервере osp. Можно платно

Автор Fati

Ответов: 0
Просмотров: 54
Последний ответ 16.06.2025, 16:40:04
от Fati
Помогите с БАГом в панели администратора Joomla 3

Автор akteon25

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

Автор Ebelous

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

Автор melissa00

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

Автор wawont

Ответов: 2
Просмотров: 3376
Последний ответ 22.02.2024, 21:03:15
от Zegeberg