Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

👩‍💻 Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:- для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов

Uri::root() и
Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.- для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера. Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки
--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.⚠️ Иначе в качестве хоста и url класса Uri будет установлено
https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр
$live_site можно из объекта приложения

protected function doExecute(InputInterface $input, OutputInterface $output): int    {         //...              $live_site = $this->getApplication()->get('live_site');         //...    }
и исходя из этого строить дальнейшую логику.@joomlafeed#joomla #разработка #php #cli

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks.Этот контент-плагин - одно из старейших расширений для Joomla. Его задача - преобразовывать шорт-коды вида

{YOUTUBE}...{/YOUTUBE},
{MP3}parth/to/file.mp3{/MP3} и подобные во встроенные видео или аудио.👩‍💻 v.7.0.0. Что нового?- Добавлена поддержка Youtube Shorts. Просто скопируйте полный url видео и вставьте его внутри тегов
{YOUTUBE}...{/YOUTUBE}.- Поддержка Joomla 5.x без плагина обратной совместимости. PHP 5, PHP 7, PHP 8. - Индексация умным поиском в CLI. В Joomla 5 плагин перестал вызывать ошибку при индексации контента умным поиском через CLI,Заметьте, что этот один и тот же пакет для всех версий Joomla, начиная с 1.5.x и заканчивая 5.x. Технически "под капотом" код плагина по сути не менялся, а для поддержки следующих версий Joomla авторы вставляют "заплатки". Плагин всё ещё использует старую архитектуру файлов и классов Joomla, что, к сожалению, заставляет прибавлять к его описанию слова "пока ещё" - "пока ещё работает".
Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 За ссылку спасибо самому внимательному участнику нашего сообщества - Ринату Кажетову (@rkazhet).@joomlafeed#joomla #расширения

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

TW-WEB

  • Новичок
  • 6
  • 0 / 0
Добрый день! В данный момент используем компонент SP Page Builder. В данном расширении есть аддон под названием AJAX contact, который мы активно используем в формах на странице. Требуется добавить в модальное окно форму с этим аддоном.

Модальное окно:
Код
<div id="myModal" class="modal fade">
  <div class="modal-dialog">
<div class="modal-content">
  <!-- Заголовок модального окна -->
  <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Форма обратной связи</h4>
  </div>
  <!-- Основное содержимое модального окна -->
  <div class="modal-body">

  </div>

  <!-- Футер модального окна -->
  <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
  </div>
</div>
  </div>
</div>

Сам аддон (site.php)

Код
<?php
/**
 * @package SP Page Builder
 * @author JoomShaper http://www.joomshaper.com
 * [member=126442]copyright[/member] Copyright (c) 2010 - 2015 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('restricted aceess');

AddonParser::addAddon('sp_ajax_contact','sp_ajax_contact_addon');

function sp_ajax_contact_addon($atts){

extract(spAddonAtts(array(
"title" => '',
"heading_selector" => 'h3',
"title_fontsize" => '',
"title_fontweight" => '',
"title_text_color" => '',
"title_margin_top" => '',
"title_margin_bottom" => '',
"recipient_email" => 'email@yourdomain.com',
"formcaptcha" => '',
"captcha_question" => '',
"captcha_answer" => '',
"class" => '',
), $atts));

$output  = '<div class="sppb-addon sppb-addon-ajax-contact ' . $class . '">';

if($title) {

$title_style = '';
if($title_margin_top !='') $title_style .= 'margin-top:' . (int) $title_margin_top . 'px;';
if($title_margin_bottom !='') $title_style .= 'margin-bottom:' . (int) $title_margin_bottom . 'px;';
if($title_text_color) $title_style .= 'color:' . $title_text_color  . ';';
if($title_fontsize) $title_style .= 'font-size:'.$title_fontsize.'px;line-height:'.$title_fontsize.'px;';
if($title_fontweight) $title_style .= 'font-weight:'.$title_fontweight.';';

$output .= '<'.$heading_selector.' class="sppb-addon-title" style="' . $title_style . '">' . $title . '</'.$heading_selector.'>';
}

$output .= '<div class="sppb-addon-content">';
$output .= '<form class="sppb-ajaxt-contact-form">';

$output .= '<div class="sppb-form-group">';
$output .= '<input type="text" name="name" style="width: 310px;margin: 0 auto;"  class="sppb-form-control" placeholder="Имя"'. JText::_('COM_SPPAGEBUILDER_ADDON_AJAX_CONTACT_NAME').'" required="required">';
$output .= '</div>';

$output .= '<div class="sppb-form-group">';
$output .= '<input type="text" name="subject" style="width: 310px;margin: 0 auto;"  class="sppb-form-control" placeholder="Номер"'. JText::_('COM_SPPAGEBUILDER_ADDON_AJAX_CONTACT_SUBJECT').'" required="required">';
$output .= '</div>';

if($formcaptcha) {
$output .= '<div class="sppb-form-group">';
$output .= '<input type="text" name="captcha_question" class="sppb-form-control" placeholder="'. $captcha_question .'" required="required">';
$output .= '</div>';
}


$output .= '<input type="hidden" name="recipient" value="'. base64_encode($recipient_email).'">';

if($formcaptcha) {
$output .= '<input type="hidden" name="captcha_answer" value="'. md5($captcha_answer).'">';
}

$output .= '<button type="submit" class="sppb-btn sppb-btn-success"><i class="fa"></i> '. JText::_('Отправить').'</button>';

$output .= '</form>';

$output .= '<div style="display:none;margin-top:10px;" class="sppb-ajax-contact-status"></div>';

$output .= '</div>';

$output .= '</div>';

return $output;

}


function sp_ajax_contact_get_ajax() {
$input  = JFactory::getApplication()->input;
$mail = JFactory::getMailer();

$showcaptcha = false;

//inputs
$inputs = $input->get('data', array(), 'ARRAY');

foreach ($inputs as $input) {

if( $input['name'] == 'recipient' ) {
$recipient = base64_decode($input['value']);
}

if( $input['name'] == 'email' ) {
$email = $input['value'];
}

if( $input['name'] == 'name' ) {
$name = $input['value'];
}

if( $input['name'] == 'subject' ) {
$subject = $input['value'];
}

if( $input['name'] == 'message' ) {
$message = nl2br( $input['value'] );
}

if( $input['name'] == 'captcha_question' ) {
$captcha_question = $input['value'];
$showcaptcha = true;
}

if( $input['name'] == 'captcha_answer' ) {
$captcha_answer = $input['value'];
$showcaptcha = true;
}
}

if($showcaptcha) {
if ( md5($captcha_question)!= $captcha_answer ) {
return '<span class="sppb-text-danger">'. JText::_('COM_SPPAGEBUILDER_ADDON_AJAX_CONTACT_WRONG_CAPTCHA').'</span>';
}
}

$emai_body = 'Имя: ' . $name . '<br />';
$emai_body .= 'Номер: ' . $subject . '<br />';
$emai_body .= 'Cообщение: ' . $message . '<br />';
$sender = array($email, $name);
if (!empty($from_email)) {
$sender = array($from_email, $from_name);
$mail->addReplyTo($email, $name);
}
$mail->setSender($sender);
$mail->addRecipient($recipient);
$mail->setSubject($subject);
$mail->isHTML(true);
$mail->Encoding = 'base64';
$mail->setBody($emai_body);

if ($mail->Send()) {
return '<span class="sppb-text-success">'. JText::_('COM_SPPAGEBUILDER_ADDON_AJAX_CONTACT_SUCCESS').'</span>';
} else {
return '<span class="sppb-text-danger">'. JText::_('COM_SPPAGEBUILDER_ADDON_AJAX_CONTACT_FAILED').'</span>';
}

}
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Сделать код аддона как HTML модуль, опубликовать на невидимой позиции, по клику на кнопку показывать его как инлайн элемент - не?
Просто не знаю что такое SP Page Builder и зачем он вообще нужен, так то делается элементарно нативными инструментами
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

TW-WEB

  • Новичок
  • 6
  • 0 / 0
Цитировать
Сделать код аддона как HTML модуль, опубликовать на невидимой позиции, по клику на кнопку показывать его как инлайн элемент - не?[/size]Просто не знаю что такое SP Page Builder и зачем он вообще нужен, так то делается элементарно нативными инструментами

Как я понимаю - site.php - это обработчик и сама форма в одном.
SP Page Builder это что-то типо конструктора элементов с определенным набором аддонов, в котором как раз-таки и есть эта форма) Можно в одном месте сконструировать разметку и добавить необходимые элементы (как стандартные, так и самописанные)
Буду очень благодарен, если прокурируете процесс действий
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модернизировать модуль

Автор kurz

Ответов: 4
Просмотров: 535
Последний ответ 13.09.2022, 15:35:31
от kurz
sp page builder contact form

Автор AzaTT

Ответов: 4
Просмотров: 556
Последний ответ 04.07.2022, 11:09:23
от AzaTT
SP Page Builder - ajax Contact

Автор TW-WEB

Ответов: 4
Просмотров: 2688
Последний ответ 29.01.2019, 15:47:53
от Akeksandr
Как выполнить 2 разных скрипта в одном ajax-запросе?

Автор fbr

Ответов: 16
Просмотров: 1456
Последний ответ 02.03.2018, 00:08:04
от robert
Improved AJAX Login & Register + социальные кнопки

Автор atkaa1

Ответов: 12
Просмотров: 3418
Последний ответ 07.10.2017, 18:02:29
от vipiusss