Новости 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 можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

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

dremora

  • Захожу иногда
  • 461
  • 48 / 12
PHP и Joomla не предлагать, так как делаю проект на Kohana. А тут роуты такие, что непонятно как получать текущий URL, а не текущий контроллер, как у меня выходит...

Можно вариант через jquery... Можно вариант через getElementById, только подстановка нужна по рендерингу страницы, а не по клику на что-то...

Неед Хелп! Забыл немного JavaScript сам никак не могу въехать...
Всё что не анархия, то фашизм...
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
1. честно говоря не пойму почему вы на форуме Joomla
2. что в кохане нет возможности через PHP поставить дефолтное значение поля?
*

dremora

  • Захожу иногда
  • 461
  • 48 / 12
А вот х.з почему через PHP не работает... В Joomla старой работало вот это:
$_SERVER['REQUEST_URI']

А в кохане 3.3 показывает просто палку "/"

Пробовал ещё:
 URL::site(Request::detect_uri(), TRUE)
 и
URL::site(Request::instance()->uri(), TRUE)
в контроллере не идёт...
Всё что не анархия, то фашизм...
*

dremora

  • Захожу иногда
  • 461
  • 48 / 12
В кохане очень мощная система роутов, настолько, что вот такой банальной вещи не получить, а охото пользователя после логина перемещать на текущую страницу.
Всё что не анархия, то фашизм...
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Ну да покажет / -  $_SERVER['REQUEST_URI'] если ты на главной
$_SERVER['HTTP_HOST']-имя домена
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] или $_SERVER['PHP_SELF']
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Ну так массив $_SERVER вроде вообще как бы сам по себе, при чем тут CMS?
Но если через JS, то должно работать window.location, как то так http://javascript.ru/window-location либо я не понял вопроса
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
вот так в Joomla определяется путь:
Код: php
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])!= 'off')){ $https = 's://';}
else{ $https = '://';}
if (!empty($_SERVER['PHP_SELF']) && !empty($_SERVER['REQUEST_URI'])){
$theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}
else{
$theURI = 'http' . $https . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING']))
{
$theURI .= '?' . $_SERVER['QUERY_STRING'];
}
}
echo $theURI;
*

dremora

  • Захожу иногда
  • 461
  • 48 / 12
Блин всё, я олень... На главной всё искал!
Надо было просто перейти на другой URL в меню.
Вопрос решён...
Всё что не анархия, то фашизм...
*

dremora

  • Захожу иногда
  • 461
  • 48 / 12
Это потому что я простыл может и башка плохо варит с температурой...
Всё что не анархия, то фашизм...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

jquery против javascript

Автор gartes

Ответов: 0
Просмотров: 579
Последний ответ 21.11.2021, 12:04:14
от gartes
Перехват заказов из формы с чужих сайтов

Автор chemerzaev

Ответов: 13
Просмотров: 1936
Последний ответ 02.10.2019, 10:55:42
от winstrool
JavaScript - простое удаление дублей в массиве [РЕШЕНО]

Автор dm-krv

Ответов: 6
Просмотров: 1529
Последний ответ 16.05.2019, 09:25:18
от dm-krv
Безопасная сделка сделка через гаранта

Автор dm-krv

Ответов: 0
Просмотров: 611
Последний ответ 19.09.2018, 07:30:15
от dm-krv
Признавайтесь, кто из вас еще пишет javascript: void(0) или href="#" !

Автор danik.html

Ответов: 45
Просмотров: 33669
Последний ответ 15.08.2016, 21:53:27
от annyka