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

Alexa-KZ

  • Осваиваюсь на форуме
  • 26
  • 1 / 0
RE: Не удалось вызвать функцию mail
« Ответ #60 : 19.06.2013, 12:41:42 »
Ничего не помогло из вышеперечисленного...
Решение оказалось только в выборе другой форме обратной связи. Сторонний плагин заработал сразу, а встроенный так и не смогла заставить работать.
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
RE: Не удалось вызвать функцию mail
« Ответ #61 : 25.07.2013, 20:17:54 »
Цитировать
Не заменить, а добавить!
Чтобы получилось так:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';
Заработало, но только после того, как заменил sandmail на php
*

inessaplaton

  • Новичок
  • 3
  • 1 / 0
RE: Не удалось вызвать функцию mail
« Ответ #62 : 18.08.2013, 20:23:21 »
На Joomla! 2.5.7 решил следующим образом: в Общих настройках сервера выбрал способ отправки Sendmail. Вышеописанный способ с $params = ''; для PHP Mail тоже решает данный вопрос без проблем. Так что выбор за Вами.

Помогло! Спасибо!
*

lidius

  • Новичок
  • 1
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #63 : 03.09.2013, 15:01:00 »
Не заменить, а добавить!
Чтобы получилось так:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';

И заработало!
присоединяюсь к выздоравливающим :)
только еще ящик создала на сайте и sandmail на php поменяла
*

ganalex

  • Новичок
  • 3
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #64 : 10.09.2013, 08:37:19 »
Пробовал все вышеперечисленные способы и ни один не помог. Решил вопрос следующим способом:

  • Создал почтовый ящик на своём же хостинге, формата mailname@mysite.com
  • В способе отправки выставил "SMTP"

Настройки - согласно вашим личным данным, а в "SMTP-сервер" прописываем localhost.
Всё заработало, отчёт отправляется на мыло админа и клиенту. В стандартный отчёт теперь желательно вписать строки, типа "письмо отправлено роботом, и отвечать на него не нужно", да бы не засоряли почтовый ящик (хостинг-то не резиновый ;D)

При всём этом, мыло админа может быть сторонним, не привязанным к localhost. Ящик "mailname@mysite.com" служит только в качестве "отправщика" писем, и будет всегда пустым.

Спасибо тоже перепробовал все помогло только это. Joomla 2.5.9
*

Stamel

  • Захожу иногда
  • 80
  • 5 / 0
RE: Не удалось вызвать функцию mail
« Ответ #65 : 20.09.2013, 11:38:32 »
Всем привет!

Испробовал все варианты, ремонта отправки почты не помогает:( Joomla 2.5

1) $params = sprintf("-oi -f %s", $this->Sender);
$params = '';
таже проблема!

2) sendmail - ошибка Не удалось выполнить: /usr/sbin/sendmail

3) SMTP - на свой ящик, на новый ящик новый@мойсайт - ошибка: Ошибка в перечисленных адресах отправителей: admin@admin.com

Помогите, пожалуйста, решить проблему.
*

AleksDV

  • Новичок
  • 1
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #66 : 29.09.2013, 01:28:24 »
Всем привет!

Испробовал все варианты, ремонта отправки почты не помогает:( Joomla 2.5

1) $params = sprintf("-oi -f %s", $this->Sender);
$params = '';
таже проблема!

2) sendmail - ошибка Не удалось выполнить: /usr/sbin/sendmail

3) SMTP - на свой ящик, на новый ящик новый@мойсайт - ошибка: Ошибка в перечисленных адресах отправителей: admin@admin.com

Помогите, пожалуйста, решить проблему.

Попробуйте в плагинах отключить "Пользователь - создание контакта".
*

gacky

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #67 : 01.10.2013, 02:58:58 »
AleksDV у меня та же проблема сейчас "ОШИБКА В ПЕРЕЧИСЛЕННЫХ АДРЕСАХ ОТПРАВИТЕЛЕЙ: ..." Отключение плагина не помогло
Stamel Получилось справиться с этой ошибкой?
*

gacky

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #68 : 01.10.2013, 03:07:32 »
Вообще странно как-то. У меня настроен SMTP ( ящик яндекса).
С какого-то момента (примерно в это же время хостер менял сервера) перестали приходить уведомления на сайте  о регистрации, о создании новых статей, с форума о новых сообщениях) - это 3 разных компонента. CommunityBuilder, EasyBlog, Kunena. Но самое интересное, что компонент личных сообщений UddeIM PMS отсылает уведомления.
Что может быть причиной?
*

manymal

  • Новичок
  • 1
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #69 : 20.11.2013, 23:28:27 »
Не заменить, а добавить!
Чтобы получилось так:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';
И заработало!

Стоит - Joomla! 2.5.16 + VirtueMart 2.0.24a. Способ помог. Всё работает! Спасибо
*

paparazzi-ks

  • Новичок
  • 6
  • 1 / 0
RE: Не удалось вызвать функцию mail
« Ответ #70 : 12.12.2013, 00:49:35 »
Ко всему выше сказанному хочу поделится небольшим личным опытом. У меня несколько аккаунтов у одного хостера, и случилось так, что делал параллельно два магазина, на виртах одной версии, но на разных аккаунтах и соответственно - на разных серверах. На одном магазине отправка завелась на стандартных настройках, а со вторым сайтом промучился несколько дней, перепробовал все варианты решения проблемы, описанные в этой теме. А потом опробовал проблемный сайт на том сервере, где всё работало, и отправка отчётов завелась с пол-оборота! То есть, проблема может быть в хостинге, и иногда эта проблема решается только заменой хостинга либо коррекцией настроек сервера. Я пообщался с саппортом, и мой проблемный аккаунт перебросили на сервер, аналогичный тому, на котором магаз работал на стандартных настройках. Так что, иногда проще и быстрее просто обратится в саппорт.
*

Кто в сапогах

  • Захожу иногда
  • 66
  • 1 / 0
RE: Не удалось вызвать функцию mail
« Ответ #71 : 10.01.2014, 11:42:05 »
Пробовал все вышеперечисленные способы и ни один не помог. Решил вопрос следующим способом:

  • Создал почтовый ящик на своём же хостинге, формата mailname@mysite.com
  • В способе отправки выставил "SMTP"

Настройки - согласно вашим личным данным, а в "SMTP-сервер" прописываем localhost.
Всё заработало, отчёт отправляется на мыло админа и клиенту. В стандартный отчёт теперь желательно вписать строки, типа "письмо отправлено роботом, и отвечать на него не нужно", да бы не засоряли почтовый ящик (хостинг-то не резиновый ;D)

При всём этом, мыло админа может быть сторонним, не привязанным к localhost. Ящик "mailname@mysite.com" служит только в качестве "отправщика" писем, и будет всегда пустым.

спасибо помогло
*

Kazakh

  • Новичок
  • 2
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #72 : 18.01.2014, 20:53:10 »
Если при регистрации нового пользователя Joomla сайт выдает ошибку не удалось вызвать функцию mail и/или письмо активации со ссылкой приходит не пользователю, а админстратору сайта (наверно вы указали почту типа @mail.ru), надо поступит так:
1) В панели управления хостера создать почтовый ящик: имя_почты@сайт.kz(ru)!
2) В панели управления "WWW домены" указать эту же почту!
3) В Административной панели сайта Joomla везде указать эту же почту!
*

Элана

  • Захожу иногда
  • 179
  • 0 / 0
Re: Не удалось вызвать функцию mail
« Ответ #73 : 06.02.2014, 15:17:09 »
Если при регистрации нового пользователя Joomla сайт выдает ошибку не удалось вызвать функцию mail и/или письмо активации со ссылкой приходит не пользователю, а админстратору сайта (наверно вы указали почту типа @mail.ru), надо поступит так:
1) В панели управления хостера создать почтовый ящик: имя_почты@сайт.kz(ru)!
2) В панели управления "WWW домены" указать эту же почту!
3) В Административной панели сайта Joomla везде указать эту же почту!

Мне помогло частично. Теперь после отправки с сайта пишет
Not Found
The requested URL /почтовый ящик was not found on this server.
Apache/2.2.16 (Debian)
Если вернуться обратно на сайт пишет, что письмо отправлено. Письма доходят. Joomla 3.2
« Последнее редактирование: 08.02.2014, 10:38:58 от Элана »
*

Элана

  • Захожу иногда
  • 179
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #74 : 12.02.2014, 22:43:21 »
Пожалуйста помогите решить проблему  !
Нажимаешь отправить сообщение в форме обратной связи и выходит
Not Found
The requested URL /ella888@inbox.ru was not found on this server.

этот адрес и меняла и удаляла..тщетно ... прописан где то и ссылается на него ...
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
RE: Не удалось вызвать функцию mail
« Ответ #75 : 12.02.2014, 22:51:32 »
Кэш Joomla очистите в админке.
*

Элана

  • Захожу иногда
  • 179
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #76 : 12.02.2014, 23:02:52 »
Не помогает. Этот адрес был изначально установлен ..когда движок ставила. Форма не работала совсем..техподдержка на хостинге сказали чтобы адрес был создан в панели управление хостинга, что и сделано было. Поменяла на новый ящик и компоненте контакт и в общих настройках. теперь результат -выдает не найдена запрашиваемая страница. Пожалуйста помогите исправить.
*

Progex

  • Новичок
  • 7
  • 0 / 0
Re: Не удалось вызвать функцию mail
« Ответ #77 : 13.02.2014, 11:37:30 »
Всем привет!

Испробовал все варианты, ремонта отправки почты не помогает: Joomla 2.5.18

1) $params = sprintf("-oi -f %s", $this->Sender);
$params = '';

 проблема осталась!

2) sendmail - ошибка Не удалось выполнить: /usr/sbin/sendmail

3) SMTP - на свой ящик, на новый ящик новый@мойсайт - ошибка: Ошибка в перечисленных адресах отправителей: admin@admin.com

Помогите, пожалуйста, решить проблему.

Пробовал так же в плагинах отключить "Пользователь - создание контакта".



(Написал в саппорт : Добрый день. Стоит CMS Joomla. Не работает отправка почты через php mail (до Нг точно все работало) сайт не изменялся. На форумах пишут что возможно не поддерживает phpmail хостинг. (но раньше же работало)
Дарья Самохвалова, 13.02.2014 11:59. Цитировать
Добрый день.  Данная функция была заблокирована из-за подозрения рассылки спама с Вашего аккаунта. Функцию sendmail разблокировали.)

Теперь всё работает. Спасибо.
« Последнее редактирование: 13.02.2014, 12:11:16 от Progex »
*

greendoom

  • Новичок
  • 7
  • 0 / 0
Re: Не удалось вызвать функцию mail
« Ответ #78 : 11.03.2014, 13:04:09 »
Не заменить, а добавить!
Чтобы получилось так:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';

И заработало!


Спасибо, помогло!))))



ага, а как только вышел с админки и зашел снова.. уже опять эта же ошибка....
« Последнее редактирование: 11.03.2014, 17:48:27 от greendoom »
*

artMelnikov

  • Захожу иногда
  • 57
  • 3 / 0
Re: Не удалось вызвать функцию mail
« Ответ #79 : 02.04.2014, 11:07:30 »
NIC.ru, Joomla! 2.5.11. Не помог ни один из вышесказанных вариантов. Техподдержка так же сказала блокировок нет и превышения памяти тоже. На других сайтах на хостинге все работает.

Мне ПОМОГЛО следующее:
Заменил мой файл /libraries/phpmailer/phpmailer.php файлом из версии Joomla! 3.2.3 и ЗАРАБОТАЛО!
*

A.J

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #80 : 15.06.2014, 10:31:45 »
Добрый день !
Я использовал  все что тут на писано  но нечто  не помогло  у меня Joomla 2.5.22.
Либо выходит  не удалось вызвать функцию mail  либо  не удалось выполнить: /usr/sbin/sendmail.
Что делать подскажите спасибо заранее.
*

YANX777

  • Новичок
  • 2
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #81 : 05.07.2014, 16:23:13 »
Ребят вчера пол ночи кувыркался с проблемой отправки почты. Перепробовал все варианты. Хостинг nic.ru оказалось не достаточно ресурсов на хостинге. Перешел на тариф 1c битрикс и все заработало (там число процессов выше, чем у других тарифов). В общем всех вышеизложенных махинаций + норм хостинг должно хватить в 99.9% случаев.
*

DIA

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Re: Не удалось вызвать функцию mail
« Ответ #82 : 02.09.2014, 04:00:20 »
 вот что написал хостер
У Вас установлены тестовые лимиты на отправку писем: 20 в час, 100 в сутки.  Данные лимиты были превышены, в связи с чем возникает данная ошибка.  Лимиты были установлены в связи с попытками рассылки спама, с Вашего аккаунта.
« Последнее редактирование: 02.09.2014, 04:06:19 от DIA »
*

biznethelp

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #83 : 28.09.2014, 11:56:09 »
C J2.5.1 мне помогла такая история
Нужно заглянуть в файл /libraries/phpmailer/phpmailer.php
Найти строчку
$params = sprintf("-oi -f %s", $this->Sender);
и заменить её на
$params = '';

Спасибо, помогло! Joomla 2.5.25
*

fcdmn

  • Новичок
  • 1
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #84 : 27.02.2015, 03:19:08 »
J 2.5.24 + Foxcontact
Столкнулся с такой проблемой! Сразу был у хостинга на одном тарифном плане, который подразумевал SMTP. Перешел на иной, все перестало работать. Оказалось не поддерживается smtp и посоветовали пользоваться пхпмаил. Однако проблема не исчезла.
Обратился в службу поддержки. сказали, что когда то блокировали данную подписку от рассылки спама. Разблокировали и все помогло.
Советую сразу обращаться в службу поддержки! А потом уже юзать все вышеперечисленные способы) Всем спасибо!
*

Smith2007

  • Новичок
  • 2
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #85 : 09.03.2015, 15:24:52 »
имеется ubuntu 14.04 desctop
Поставил Joomla + VirtueMart
Не получается отправить сообщение.
Код
Не удалось вызвать функцию mail.

Перепробовал все предложенные тут варианты - не помогло.
Может на саму систему нужно еще чего-то установить?
*

sachek

  • Захожу иногда
  • 102
  • 1 / 0
  • Jamal*
RE: Не удалось вызвать функцию mail
« Ответ #86 : 31.03.2015, 12:46:16 »
Решаю такую же проблему с неприходящими письмами. По совету хостера, включил нужные функции  PHP в админке хоста, но проблема осталась.
После очередного вопроса хостеру, поступил следующий ответ:

"Тестовый скрипт отправляет письма без проблем. Проверьте правильность Вашего скрипта. Для примера можете использовать этот код скрипта.
<?php
$to = 'support@freehost.com.ua';
$subject = 'test message from the site';
$message = 'test';
$headers = 'From: support@freehost.com.ua' . "\r\n" .
'Reply-To: support@freehost.com.ua' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
echo 'done';
?>
"

Вопрос в следующем, как мне проверить этот самый скрипт, мой и скрипт хостера!?
*

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
Re: Не удалось вызвать функцию mail
« Ответ #87 : 11.05.2015, 16:01:32 »
Здравствуйте. Никак не получается настроить почту. Выдает "Ошибка в перечисленных адресах отправителей:kvivalavita@gmail.com
Ошибка SMTP: 5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 r13sm3032170lal.21 - gsmtp
Необходимо указать хотя бы одного получателя электронной почты."
Настраивала так:
Способ отправки почты: SMTP сервер
Адрес отправителя: kvivalavita@gmail.com
Имя отправителя: Vivalavita
Путь к Sendmail: /usr/sbin/sendmail
Использовать SMTP-авторизацию: Да
SMTP Security: SSL
SMTP порт: 465
SMTP логин: kvivalavita@gmail.com
SMTP пароль: пароль от почты
Адрес SMTP-сервера: smtp.gmail.com

И это не помогло
Цитировать
Нужно заглянуть в файл /libraries/phpmailer/phpmailer.php
Найти строчку
$params = sprintf("-oi -f %s", $this->Sender);
и заменить её на
$params = '';
« Последнее редактирование: 11.05.2015, 16:23:23 от Светлана »
*

Светлана

  • Захожу иногда
  • 99
  • 7 / 0
RE: Не удалось вызвать функцию mail
« Ответ #88 : 11.05.2015, 16:59:57 »
Поступила иначе. Создала почтовый ящик на хостинге name@ваш_сайт и в поле "Слать копии писем на e-mail" написала нашу почту kvivalavita@gmail.com Настройки мне выслал хостинг:
Имя SMTP сервера: localhost
SMTP порт: 25, 587 или 465
Имя пользователя: название созданного почтового ящика
Пароль: пароль от созданного почтового ящика

А напрямую все равно не получается подключить почту gmail.com
*

8lena

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
RE: Не удалось вызвать функцию mail
« Ответ #89 : 30.09.2015, 13:09:21 »
цитирую ответ хостера:
Здравствуйте.

Особенность отправки почты с виртуального хостинга такова, что письма
можно отправлять не чаще, чем 1 раз в 0,35с. Если отправлять письма
скриптом, то они отправляются сразу пачкой и не проходят в этот
интервал. Легче всего этого избежать, добавив в скрипты sleep(1); после
mail(), и тогда письма будут отправляться нормально.
То есть, если скрипт для отправки писем имеет следующий вид:

<?php
mail("mail", "тема", "Сообщение1");
mail("mail", "тема", "Сообщение2");
?>

второе сообщение не будет отправлено, т.к. установлена задержка между
отправками писем для того, чтобы снизить нагрузку на сервер при
массовой отправке писем т.е. чтобы хостинг не использовался как спам-
ресурс. Поэтому, чтобы второе письмо тоже доходило, необходимо
установить задержку между отправкой писем, например так:

<?php
mail("mail", "тема", "Сообщение1");
sleep(1);
mail("mail", "тема", "Сообщение2");
?>

Плюсы в карму приветствуются))
Не знаю, как плюсануть, но спасибище огромное)))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] title материалов и категорий без пунктов меню

Автор pharaoh

Ответов: 269
Просмотров: 63287
Последний ответ 03.02.2022, 02:45:26
от globus812
НЕ устанавливаются расширения! - "Не удалось обнаружить файл манифеста" а он есть

Автор vadber

Ответов: 21
Просмотров: 17547
Последний ответ 07.08.2021, 07:25:40
от ShopES
Убрать поле подтверждения e-mail при регистрации

Автор cartgen

Ответов: 5
Просмотров: 8284
Последний ответ 01.05.2018, 16:56:07
от kasper9820
E-Mail уведомление администраторов о новом материале

Автор Yos

Ответов: 3
Просмотров: 3457
Последний ответ 15.02.2017, 15:54:10
от siao
[Решено] Проблема с выводом даты и часовым поясом

Автор afikus

Ответов: 6
Просмотров: 8666
Последний ответ 28.12.2016, 14:16:50
от newvideo