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

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
настроил как указано в учебнике
http://cocoate.com/joomla-16-english/content/contact-form
заполняю поля формы жму отправить сообщение, вываливает
Цитировать
Language string failed to load: invalid_address: Необходимо указать хотя бы одного получателя электронной почты.
чего делать?
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
в параметрах контакта укажите адрес электронной почты.
Я с мобильного, в основном...
*

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
в секции детали контакта в поле E-mail выставлен реальный адрес, коротый отображается в контактной форме
если по нему щелкнуть запускается системный обработчик почты
и если поставит флажок на отправку копии, то копия отправляется и получается
может это имеет значение:
debian 6,apache2,postfix+dovecot+STARTTLS,php5 - все на одной машине
« Последнее редактирование: 29.04.2011, 18:23:32 от leonidpsk »
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
сайт делаете многоязычный?
Я с мобильного, в основном...
*

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
Цитировать
сайт делаете многоязычный?
вы уж простите меня пжлста, я но я не знаю ответа
мне поставили задачу, я выбрал Joomla, тупо выполнил установку и потихоньку заполняю шаблон по умолчанию
ну конечно в учебник заглядываю, с англ нет проблем
*

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
думаю надо логи  dovecot посмотреть, ну это уже после праздников
хотя если подумать, ведь почта на гостевой адрес отправляется, то при чем тут dovecot?
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
версия Joomla 1.6.3?
Если нет то обновите Joomla и перевод...
Пока других идей у меня нет...
Я с мобильного, в основном...
*

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
Цитировать
Платформа, на которой работает PHP    Linux mail 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64
Версия базы данных    5.1.49-3
Кодировка базы данных    utf8_general_ci
Версия PHP    5.3.3-7+squeeze1
Веб-сервер    Apache/2.2.16 (Debian)
Интерфейс между веб-сервером и PHP    apache2handler
Версия Joomla!    Joomla! 1.6.3 Stable [ Onward ] 18-Apr-2011 23:00 GMT
Браузер пользователя    Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
>Версия PHP    5.3.3
а если попробовать на 5.2.х запустить копию вашего сайта?
Можете взять тестовый период у какого-либо хостера, и проверить просто на другом сервере...

Например:
Бесплатный хостинг в Украине
http://www.hostinger.com.ua
Бесплатный хостинг в России http:// www.hostinger.ru
« Последнее редактирование: 29.04.2011, 19:11:52 от Mihanja80 »
Я с мобильного, в основном...
*

leonidpsk

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
возможно версия php? - возможно и так
пока пытаюсь гуглить по англицкой части сообщения
*

lazyleto

  • Осваиваюсь на форуме
  • 13
  • 6 / 0
Re: форма обратной связи не отправляет
« Ответ #10 : 21.05.2011, 04:31:59 »
Та же проблема. На пустом экране:

Language string failed to load: invalid_address: Необходимо указать хотя бы одного получателя электронной почты.

Причём если ставить галочку, то копия на свой адрес отправляется, а потом — пустой экран с непобедимой надписью.
Кажется уже где можно и нельзя проставил e-mail.

Нашёл в файле ru-RU.ini строку:

PHPMAILER_PROVIDE_ADDRESS="Необходимо указать хотя бы одного получателя электронной почты."

Значит, адрес контакта не передаётся на обработку? Кто-нибудь знает почему? Откуда он должен передаваться (где должен быть прописан)?
В Joomla 1.5 такой проблемы не было.
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Re: форма обратной связи не отправляет
« Ответ #11 : 21.05.2011, 08:29:04 »
какой шаблон?
Включите стандартный шаблон и проверьте работоспособность...
Я с мобильного, в основном...
*

istormed

  • Новичок
  • 7
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #12 : 31.05.2011, 20:52:34 »
Такая же бНОПНЯ. Регистрация нового пользователя и массовая рассылка работают на ура, а форма ругается указанным образом, и на почту разумеется ничего не приходит.
*

ProstoDushka

  • Захожу иногда
  • 80
  • 14 / 0
Re: форма обратной связи не отправляет
« Ответ #13 : 01.06.2011, 08:09:16 »
Такая же беда. До причины не смог докопаться. Поставил чистую joomls 1.6.3 на локалку (даже русский язык не стал ставить), создал контакт
Если выбрать тип пункта меню Single Contact, то работает нормально, а если выбрать List Contacts in a Category, то выдаёт следущее:
Language string failed to load: invalid_address: You must provide at least one recipient email address.
Fatal error: Call to a member function get() on a non-object in Y:\home\mysite.loc\www\components\com_contact\controllers\contact.php on line 114

Где искать причину?
*

ProstoDushka

  • Захожу иногда
  • 80
  • 14 / 0
Re: форма обратной связи не отправляет
« Ответ #14 : 01.06.2011, 08:31:54 »
Пока решил следующим образом. Создал Пункт меню с типом List Contacts in a Category и подпункты с типом Single Contact для каждого контакта. Конечно, через одно место, но хоть как-то... Хотелось бы, чтобы работало без такого извращения
*

istormed

  • Новичок
  • 7
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #15 : 01.06.2011, 11:41:50 »
Пока решил следующим образом. Создал Пункт меню с типом List Contacts in a Category и подпункты с типом Single Contact для каждого контакта. Конечно, через одно место, но хоть как-то... Хотелось бы, чтобы работало без такого извращения

Работает, но если на каждый контакт по пункту меню создавать...
Напишу в английский форум.
*

ProstoDushka

  • Захожу иногда
  • 80
  • 14 / 0
Re: форма обратной связи не отправляет
« Ответ #16 : 01.06.2011, 18:44:22 »
Я так и написал
Цитировать
подпункты с типом Single Contact для каждого контакта
*

vd9

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #17 : 03.06.2011, 13:19:24 »
При использовании шаблона ja_purity_ii

Ругается       
 Требуется поле: Имя
 Требуется поле: E-mail
 Требуется поле: Тема
 При использовании стандартного все хорошо, кто знает, что в шаблоне править нужно
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Re: форма обратной связи не отправляет
« Ответ #18 : 03.06.2011, 13:58:09 »
обновите фреймворк
Я с мобильного, в основном...
*

vd9

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #19 : 07.06.2011, 12:58:28 »
обновите фреймворк
А где его взять?
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Re: форма обратной связи не отправляет
« Ответ #20 : 07.06.2011, 13:11:00 »
joomlart.com/
Я с мобильного, в основном...
*

solo

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #21 : 05.01.2012, 22:40:48 »
Mihanja80, подскажите, пожалуйста, как исправить туже ошибку только для шаблона от ZooTemplate
*

bee-alex

  • Новичок
  • 1
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #22 : 31.03.2012, 09:49:54 »
Здравствуйте.
Перенес Joomla 1.7.5 на хостинг. Перестала работать обратная связь. Появляется ошибка "You must provide at least one recipient email address". При этом везде указаны почтовые адреса. Компоненты обратной связи и шаблоны менял, не помогло. Заметил следующее, при создании пользователя выскакивает точно такая же ошибка. В логах ошибка отсутствует. Где еще можно посмотреть? Это глючит Joomla или хостинг?
*

Sne

  • Новичок
  • 3
  • 0 / 0
Re: форма обратной связи не отправляет
« Ответ #23 : 14.06.2012, 12:32:57 »
Вот в этом файлике
libraries/phpmailer/phpmailer.php

Закоментируйте часть функции (у меня 549 строка)
Код
 public static function ValidateAddress($address) {
//    if (function_exists('filter_var')) { //Introduced in PHP 5.2
//      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
//        return false;
//      } else {
//        return true;
//      }
//    } else {
     return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
 //   }
  }

чтобы делать проверку емайла с помощью preg_match , по-старинке =)
Я так на двух хостингах проблему исправила.
*

zakin

  • Осваиваюсь на форуме
  • 17
  • 1 / 0
Re: Форма обратной связи не отправляет
« Ответ #24 : 07.02.2013, 16:18:55 »
вот обзор после очередных настроек неработающей почты





Самый простой способ отправки почты через функцию php mail, используйте этот способ

отправки на вашем хостинге. Если вы в настройках указали способ отправки через php mail,

а почта не отправляется, убедитесь, работает ли функция mail(). Для этого создайте в

корне сайта файл test.php следующего содержания.

<?php
if (mail("vasha_pachta@mail.ru", "Тема", "бла бла...\nбла...бла...."))
  echo 'OK';
else
  echo 'ERROR';
?>

Запускаем файл: адрес_вашего_сайта/test.php, если после запуска скрипт выводит "ERROR",

значит функция mail не работает на вашем сервере, стучите в техподдержку хостера, пускай

подключают, все же 21 век на дворе). Если скрипт вывел "OK", значит письмо принято к

отправке. После этого если письмо не дошло нужно подправить файл Joomla отвечающий за

отправку почты. Открываем файл \libraries\phpmailer\phpmailer.php находим примерно в 472

строке след. участок кода


$params = sprintf("-oi -f %s", $this->Sender);
заменяем найденую строку на


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


В большинстве случаев проблема решается таким способом. Дело в том, что переменная

$params используется в качестве 5го аргумента функции mail(), хотя обычно в функцию

mail() достаточно передать 4 параметра.  На некоторых хостингах почта из  joomla  не

отправляется с этим 5ым параметром.
если и после этого письма не отправляются значит они попадают в спам на стороне хостинга

(возможно дело в адресе отправителя) либо на принимающей стороне (посмотрите в папке

спам).
Настройку почты в  joomla  через  smtp  следует пользоваться, если ваш хостинг не

поддерживает функцию mail. Если вы хотите отправлять почту через  smtp .mail.ru (у вас

должен быть аккаунт на мэйле), то у вас возникнет вопрос, какие настройки задавать? как

настраивается  smtp  для почтовой программы the bat можно посмотреть здесь, smtp

отправку в Joomla можно настроить по аналогии. Настройку почты через smtp для других

почтовиков ищите в Яндексе.

Давайте подведем краткий итог.  Оснвные проблемы при отправке почты в  Joomla : 1)

Проблемы хостинга - не работает функция php mail, не отрабатывает функция php mail с 5ым

параметром. 2) При  smtp  отправке почты письма блокируются сервером из-за неправильно

указанного адреса отправителя или логина и пароля к  smtp  аккаунту.
*

Kodopik

  • Осваиваюсь на форуме
  • 35
  • 2 / 3
Re: Форма обратной связи не отправляет
« Ответ #25 : 16.02.2013, 23:49:19 »
Эта проблема гораздо проще решается. Сперва, создайте нового пользователя через админку, дайте ему права СУПЕРПОЛЬЗОВАТЕЛЬ , логин пароль - запомните, укажите ему произвольный емайл адрес в профиле, а лучше тот  к которому есть доступ, но нет в базе Joomla . Далее логинимся в админке с профиля который только что создали. Потом, если есть материалы, и все остальное которое привязано к пользователю изначальному, который при регистрации был указан, от него все материалы привязываете и все остальное к новому пользователю, т.е. себе, когда все это сделаете, удалите старый профиль. Далее, не выходя из админки, в своем профиле НОВОМ указываете тот емайл адрес который был у предыдущего админа, логин и прочее. Емайл адрес сайта тоже указываете тот который нужен. В контактах тоже самое проделываете. И вуаля все работает. А все ошибки связаны с тем, что, при создании сайта был единственный пользователь (СУПЕРПОЛЬЗОВАТЕЛЬ), которому изначально был присвоен ID пользователя, оттуда и ошибки, так как система была настроена на ID изначального пользователя. И в дальнейшем вероятнее всего вы создали еще одного пользователя с правами (СУПЕРПОЛЬЗОВАТЕЛЬ) и уже работали от него. Удачи. Я решил эту проблему именно таким путем. Времени занимает около 5-10 минут на все про все.
*

Kodopik

  • Осваиваюсь на форуме
  • 35
  • 2 / 3
Re: Форма обратной связи не отправляет
« Ответ #26 : 16.02.2013, 23:50:48 »
И никакие файлы трогать не надо.
*

Spirz

  • Новичок
  • 7
  • 0 / 0
Re: Форма обратной связи не отправляет
« Ответ #27 : 18.04.2013, 21:03:58 »
И никакие файлы трогать не надо.
Если не помогло поищите здесь
http://joomlaforum.ru/index.php/topic,252800.0.html.

У меня была такая проблема. Не отсылались письма из формы "Задать вопрос". Проблема была в языках шаблона, на английском все работало. Когда я залез в таблицу _virtuemart_vendors_ru_ru то там вообще не было ничего забито. Нужно просто добавить в нее данные и поставить id vendor как указано в таблице virtuemart_vendor_id.
*

Санечек

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Форма обратной связи не отправляет
« Ответ #28 : 06.10.2013, 23:23:45 »
Нашел косяк : В стандартных шаблонах "БЫСТРОГО СТАРТА" Форма обратной связи это МАТЕРИАЛ, а не форма контакта джумлы !contakt . Итак зайдите в Главное Меню выберете Контакты или как там у вас называется и выберете: Тип пункта меню* Контакт Справа предложит выбрать контакт  Выбор контакта* выбераете Усера или кто там у вас...И посмотрите, что там за почта указана у Усера....На крайняк проверте Общие настройки, Сервер мож там почта стоит ваша но левая ...
*

DyMalka

  • Новичок
  • 1
  • 0 / 0
Re: Форма обратной связи не отправляет
« Ответ #29 : 18.11.2013, 05:06:27 »
настроил как указано в учебнике
http://cocoate.com/joomla-16-english/content/contact-form
заполняю поля формы жму отправить сообщение, вываливаетчего делать?
Была такая же беда чего только не делал все зря было:-( А проблема решилась неожиданно просто! Я пол дня смеялся (месяц  в кодах и форумах, по крупицам информация) А надо было сделать вот что.
1 Создать на хостинге почтовый ящик сайта.
2 Зайти в панель управления (админку)  Указать е-mail в "Общие настройки" система"
3 Зайти в (админке) в раздел "пользователи"-"менеджер пользователей" выбрать логин администратора (Который суперпользователь) и в его учетной записи добавить e-mail сайта!
 И все стало работать как часики   
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Форма или модуль загрузки файлов пользователями

Автор НадеждаМакарова

Ответов: 2
Просмотров: 1307
Последний ответ 23.03.2020, 10:30:40
от НадеждаМакарова
Форма обратной связи

Автор voland2807

Ответов: 4
Просмотров: 1438
Последний ответ 19.06.2015, 13:28:24
от voland2807
Решено! Не получаю данные из формы обратной связи

Автор silatal

Ответов: 2
Просмотров: 1623
Последний ответ 27.05.2015, 23:46:42
от silatal
Не работает форма обратной связи на сайте

Автор alesia1

Ответов: 4
Просмотров: 1397
Последний ответ 22.01.2015, 16:59:17
от aspidy
Компонент обратной связи Fox Contact

Автор myrka

Ответов: 7
Просмотров: 4935
Последний ответ 19.11.2014, 11:13:13
от malestas