Новости Joomla

Свои типы полей в 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 для атрибута addfieldprefixnamespace 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 #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика.

В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов).

В список попали:

  • PHPUnit - фреймворк для unit-тестирования в PHP
  • Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.
  • CodeIgniter — популярный MVC-фреймворк для разработки на PHP
  • Joomla! - наша любимая CMS.

Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь.

🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet).

Подпишитесь на @joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 22044 Просмотров
*

Алексей Жуков

  • Новичок
  • 3
  • 0 / 0
Тоже столкнулся с данной проблемой. Опишу по порядку.
Я установил Joomla 2.5.4 и VirtueMart 2.0.6

Столкнулся со следующей проблемой. При  обычной регистрации (не через модуль Virtuemart) возникает ошибка "Не удалось

вызвать функцию mail".
После этой ошибки пользователь в Joomla создается (без активации), а письмо не приходит не администратору, не самому

пользователю об регистрации.
Когда регистрацию провожу через VirtueMart, то письма также никуда не приходят, также пользователь в Joomla создается

(без активации), но при все этом на сайте об ошибках ничего не говорится после регистрации, а говорится, что ждите

письма.
В настройках выставлены:
Способ отправки  PHP mail
E-mail сайта название@название_сайта.ru (т.е. адрес почты созданный на моем сайте)
Отправитель письма Бла-бла-бла
Путь к Sendmail /usr/sbin/sendmail
Авторизация на SMTP-сервере НЕТ
Защита SMTP НЕТ
Порт SMTP-сервера 25
Имя пользователя SMTP (здесь имя пользователя для  SMTP, взятое у хостинга в админ панели)
Пароль для SMTP (здесь пароль, взятое у хостинга в админ панели)
SMTP-сервер (здесь имя SMTP-сервера, взятое у хостинга в админ панели)


При все при этом если начинаю проверять, как работет PHP mail, то все ОК.
Проверяю следующим образом это:
создаю в корне сайта, где лежит index.php, фал test.php со следующим содержанием:

<?php
if (mail("моя_почта@mail.ru", "Тест сайта Занимательно", "бла бла...\nбла...бла...."))
  echo 'OK';
else
  echo 'ERROR';
?>


Далее набираю в интернете www.название_своего_сайта/test.php и у меня появляется слово ОК + ко всему на почту (указанную

в теде файла test.php) приходит письмо



Теперь что я предпринимал:
1. Как многие пишут
Привёл запись в файле /libraries/phpmailer/phpmailer.php к виду:
$params = sprintf("-oi -f %s", $this->Sender);
$params = '';

Итог:

При обычной регистрации ошибка "......Не удалось вызвать функцию mail", а вместо нее появилась надпись

"Учетная запись для вас была создана. На указанный при регистрации адрес электронной почты была отправлена ссылка для её активации. Обратите внимание, что необходимо активировать учетную запись, перейдя по содержащейся в письме ссылке. Только после этого вы сможете проходить авторизацию на сайте под вашим логином и паролем."

Но толку от этого никагого, письма как не приходили так и не приходят.

При регистрации через VirtueMart также появилась красивая надпись: "Ваш аккаунт был создан. Письмо со ссылкой для его активации было отправлено на указанный адрес электронной почты"
но писем никаких не пришло пользователю, а вот админу сайта письмо о зарегистрированном пользователе пришло.

После стер  я стер $params = '';

2.Кто-то писал следующее(http://nikita-sp.com.ua/blog/2012/03/не-отправляются-письма-virtuemart-2-0-x-подтвержде/), но мне не помогло:


что в файле administrator/components/com_virtuemart/models/orders.php

нужно в коде:

if(empty($data['invoice_number'])) {
 
//$variable_fixed=sprintf("%05s",$num_rows);
 
$data['invoice_number'] = str_replace('-', '', substr(JFactory::getDate(),2,8)).substr(md5($orderDetails['order_number'].$orderDetails['order_status']),0,3).'0'.$count;
 
}


строку

$data['invoice_number'] = str_replace('-', '', substr(JFactory::getDate(),2,8)).substr(md5($orderDetails['order_number'].$orderDetails['order_status']),0,3).'0'.$count;

сделать такой

$data['invoice_number'] = substr(md5($orderDetails['order_number'].$orderDetails['order_status']),0,3).'0'.$count;

*

Алексей Жуков

  • Новичок
  • 3
  • 0 / 0


3. Следующим шагом стало изменение в настройках Joomla почтовых настроек, в итоге были выбраны:

Теперь в  настройках стали выставлены:
Способ отправки  SMTP
E-mail сайта название@название_сайта.ru (т.е. адрес почты созданный на моем сайте)
Отправитель письма Бла-бла-бла
Путь к Sendmail /usr/sbin/sendmail
Авторизация на SMTP-сервере ДА
Защита SMTP НЕТ
Порт SMTP-сервера 25
Имя пользователя SMTP (здесь имя пользователя для  SMTP, взятое у хостинга в админ панели)
Пароль для SMTP (здесь пароль, взятое у хостинга в админ панели)
SMTP-сервер (здесь имя SMTP-сервера, взятое у хостинга в админ панели)


Итог при обычной регистрации красивая надпись:
"Учетная запись для вас была создана. На указанный при регистрации адрес электронной почты была отправлена ссылка для её активации. Обратите внимание, что необходимо активировать учетную запись, перейдя по содержащейся в письме ссылке. Только после этого вы сможете проходить авторизацию на сайте под вашим логином и паролем."

Урра казалось бы, пришло письмо пользователю  орегистрации, которое никогда не приходило.А в теле письма текст: "Чтобы активировать учётную запись, перейдите по ссылке ниже, или скопируйте её в адресную строку браузера:"

И когда я попытался пройти по этй ссылке, действительно УРРА: "Ваша учетная запись была успешно активирована. Теперь вы можете войти, используя логин и пароль, указанные при регистрации."

Но к сожалению админу сайта письмо не пришло (

И все равно нужно сделать через Vitruemart, и когда я попробовал через Vitruemart, то сперва появилась после регистрации надпись: "Ваш аккаунт был создан. Письмо со ссылкой для его активации было отправлено на указанный адрес электронной почты."

Затем мгновенно пришло письму админу сайта о новом зарегестрированном пользователе, с Е-mail, указанномц в настройказ Joomla SMTP

И также письмо пришло пользователю о регистрации: УРРРРАА.... (((((((( Но появилась новая проблема....

После того как я прохожу по ссылке из письма пользователю, чтобы активировать учетку, то сообщение: "Не удалось зарегистрировать пользователя: Код подтверждения не найден."
« Последнее редактирование: 09.06.2012, 08:57:00 от Алексей Жуков »
*

Алексей Жуков

  • Новичок
  • 3
  • 0 / 0
4. Следующим шагом стало изменение в настройках Joomla почтовых настроек, в итоге были выбраны:

Теперь в  настройках стали выставлены:
Способ отправки  Sendmail
E-mail сайта название@название_сайта.ru (т.е. адрес почты созданный на моем сайте)
Отправитель письма Бла-бла-бла
Путь к Sendmail /usr/sbin/sendmail
Авторизация на SMTP-сервере ДА
Защита SMTP НЕТ
Порт SMTP-сервера 25
Имя пользователя SMTP (здесь имя пользователя для  SMTP, взятое у хостинга в админ панели)
Пароль для SMTP (здесь пароль, взятое у хостинга в админ панели)
SMTP-сервер (здесь имя SMTP-сервера, взятое у хостинга в админ панели)

Итог при обычной регистрации красивая надпись:
"Учетная запись для вас была создана. На указанный при регистрации адрес электронной почты была отправлена ссылка для её активации. Обратите внимание, что необходимо активировать учетную запись, перейдя по содержащейся в письме ссылке. Только после этого вы сможете проходить авторизацию на сайте под вашим логином и паролем."

Письмо приходит только пользователю, администратору не приходит. Активация учетной записи происходит успешно.

Попробовал через VirtueMart зарегистрироваться, итоги:
появилась обнадеживающая надпись "Ваш аккаунт был создан. Письмо со ссылкой для его активации было отправлено на указанный адрес электронной почты"
письмо на администратора сайта пришло, в отличие от 1 случая. Но вот пользователю не пришло (

*

Olof

  • Новичок
  • 7
  • 0 / 0
Получилось ли решить проблему? У меня таже проблема "Не удалось вызвать функцию mail". Перепробовал множество вариантов, результата нет, нормальной доставки писем нет, то сработает один вариант, то другой, потом не работает ни один.
*

plat_on

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
проблема сверх сложная видимо) у самого тоже самое.
еще пишут, что скорость у хостинга не пропускает письмо. virtuemart  отправляет сразу два письма, и если скорость хоста слабая, то проходит только одно из писем, только покупателю. не знаю так ли это. но проблема имеет место
*

Darkman

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
*

swyatoslaw.ivanovich

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Действительно, кто нашел решение проблемы??
*

antfrolov

  • Захожу иногда
  • 83
  • 2 / 2
Присоединяюсь к актуальности задачи.
*

bixitron

  • Осваиваюсь на форуме
  • 34
  • 1 / 0
Тоже уже какой день бьюсь - VirtueMart 2.0.24 не отсылает письма о заказе ни админу, ни покупателю... На хостинге (Бегет) ответили так:
Цитировать
При отправке почты через функцию mail() происходит отправка с адреса вашего текущего сервера. Так как сервер разделен с другими пользователями, не исключена вероятность попадания этого сервера в серые списки, когда требуется подверждение отправки письма, что при автоматической отправке невозможно. В данном случае лучше всего настроить отправку корреспонденции через протокол smtp с нашего или стороннего почтового сервера, большиство современных CMS позволят это сделать "из коробки" или при помощи сторонних расширений. Стоит учитывать, что использовать надо альтернативный от 25 порт(у нас это 2525)

Что только не пробовал - результата нет. Перед этим на последнем шаге оформления заказа вылетала белая страница, писал хостеру - эту проблему решили, но после этого письма отправляться перестали.
*

Kazakh

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

sonics

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
 у меня пишет "ОК" после запуска test.php, однако на почту ничего не приходит!? в чем может быть проблема?
*

EndVal

  • Захожу иногда
  • 54
  • 10 / 0
Если появляется "Не удалось вызвать функцию mail" и другие типа этого, даже при смене способа отправки: PHP mail, sendmail, SMTP по адресу общие настройки ->сервер-> настройки почты, обращайтесь к хостингу. Это у них не идет отправка почты. 99,9% что автоматом заблокирован ящик из-за отправки большого количества спама с вашего аккаунта
(вы даже не будете сами знать этого, возможно что и сам хостинг тоже).
Это означает, что у вас на сайте вирус. И он рассылает спам, пользуясь вашей почтой. Проблема серьезная, помогут только на хостинге или специалисты.
Вспомните, не приходили ли письма с gif файлом.  Не открывайте такой файл, он полон php, который и вызывает рассылку спама.
Где-то на сайте сидит зловредный скрипт, посмотрите логи.
*

EndVal

  • Захожу иногда
  • 54
  • 10 / 0
Напрмер, у меня была такая проблема.
Результат работы с хостингом (спасибо им, привожу ответ):
Была заблокирована почта из-за рассылки спама.
Логи отправок сообщений за последние 3 дней:
.-------+-------------------------------------------------------------------------------------------.
| Count | File name |
+-------+-------------------------------------------------------------------------------------------+
| 124 | /home/e/?/public_html/images/joomgallery/details/.plugin96.php(1505) |
| 21 | /home/e/?/public_html/libraries/phpmailer/phpmailer.php |
| 6 | /home/e/?/public_html/libraries/phpmailer/phpmailer.php |
| 3 | /home/e/?/public_html/libraries/phpmailer/phpmailer.php |
| 3 | /home/e/?/public_html/libraries/phpmailer/phpmailer.php |
| 2 | /home/e/?/public_html/a.php |
| 1 | /home/e/?/public_html/libraries/phpmailer/phpmailer.php |
'-------+-------------------------------------------------------------------------------------------'

Файл: /home/e/?/public_html/images/joomgallery/details/.plugin96.php

Я почистил учётную запись от вирусов. Разблокировал phpmail(). В тоже время рекомендую вам обратиться к фирме, которая оказывает услуги по поиску уязвимостей на сайте, устранению оных, а так же по поиску и устранению вредоносов.
*

mansa

  • Новичок
  • 1
  • 0 / 0
В таких вариантах можно использовать отправку писем с помощью сокетов через SMTP сервера gmail или Яндекс. Подробно прочитать можно тут http://fakir.name/mail-php-ssl/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart -- создание заказа

Автор mindguru

Ответов: 3
Просмотров: 1699
Последний ответ 02.11.2023, 13:59:05
от mindguru
Скачать - Плагин заказа на 1 странице

Автор gartes

Ответов: 171
Просмотров: 28337
Последний ответ 17.05.2023, 15:06:22
от mansonfaust
Отключить подтверждение заказа

Автор Nikoz

Ответов: 13
Просмотров: 11284
Последний ответ 20.01.2023, 13:48:07
от smls
Валидация дополнительного поля при оформлении заказа

Автор Helikonst

Ответов: 2
Просмотров: 2229
Последний ответ 04.12.2022, 14:21:41
от Helikonst
При регистрации в VirtueMart поле Password перестало быть обязательным

Автор Slava77

Ответов: 10
Просмотров: 2698
Последний ответ 31.05.2021, 15:23:32
от Slava77