Где $ this-> baseurl определяется в joomla?

Сначала я задал этот вопрос на stackoverflow.com (вопрос здесь ). В комментариях вы можете прочитать, что было бы лучше, если бы я задал этот вопрос здесь.

На моем веб-сайте joomla я использую echo $ this-> baseurl;, но он возвращает URL-адрес, содержащий «/index.php». Я хочу изменить это, чтобы удалить «/index.php» из baseurl. Но я не могу найти строку определения $ this-> baseurl;.

Я нашел этот поток , но это основано на шаблоне владелец вопроса и в моем шаблоне нет ничего подобного.

Предложения очень оценены:)

10 голосов | спросил Therk 19 +04002014-10-19T23:56:36+04:00312014bEurope/MoscowSun, 19 Oct 2014 23:56:36 +0400 2014, 23:56:36

2 ответа


10

$ this-> baseurl; - это в основном ярлык для JUri :: base (). Он получает URL-адрес, указанный вами в качестве переменной live_site в файле configuration.php . Если это не имеет значения, тогда он будет использовать некоторую магию PHP, основанную на нескольких переменных.

Итак, давайте проведем несколько тестов. Пожалуйста, сообщите о результатах:

Тест 1:

& л;? PHP
  echo 'Правило 1:'. JUri :: base (). '\ П';
  echo 'Правило 2:'. $ _SERVER ['PHP_SELF']. '\ П';
  echo 'Правило 3:'. $ _SERVER ['REQUEST_URI']. '\ П';
  echo 'Правило 4:'. $ _SERVER ['SCRIPT_NAME']. '\ П';
? >

Тест 2:

& л;? PHP
    echo JUri :: base ();
    echo JUri :: base (true);
? >

Тест 3:

В глобальной конфигурации (бэкэнд Joomla) попробуйте установить переписывание URL на Да . Если это не работает, прочитайте шаги 1 , 2 и 5 раздел Apache на этой странице и повторите попытку.


Тест 4:

В верхней части файла index.php вашего шаблона добавьте следующий

& л;? PHP
    $ this-> baseurl = JUri :: base ();
? >
ответил Lodder 20 +04002014-10-20T00:18:58+04:00312014bEurope/MoscowMon, 20 Oct 2014 00:18:58 +0400 2014, 00:18:58
7

$ this-> baseurl; - это ярлык, который будет использоваться изнутри шаблона, вместо вызова метода JURI: base (); Класс JURI. Это часть ядра, и вы можете найти ее в /libraries/joomla/environment/uri.php (~ строка 218).

Если вы посмотрите на метод, вы увидите, что он проверяет в файле конфигурации, чтобы определить, определена ли переменная $ live_url. Если да, он вернет этот URL-адрес, в противном случае он проведет ряд других проверок и вернет ваш фактический базовый URI.

Скорее всего, у вас есть переменная live_url , определенная в config.php , которая включает в себя .index.php в конце. Проверьте там ...

Другая возможность заключается в том, что ваша текущая система шаблонов /шаблонов где-то определила свойство $ this-> baseurl . Вы можете легко переопределить $ this-> baseurl внутри вашего шаблона, повторно указав его в верхней части файла index.php вашего шаблона, например: $ this-> baseurl = JURI :: base ();

* Обновление:

  • Я упомянул, где вы можете найти метод, но это не значит, что вы должны пойти туда и внести какие-либо изменения в ядро. Это было только для информационных целей.

Обновление 2 - для будущих ссылок

Чтобы завершить информацию, указанную в этом сообщении, JURI :: base ($ pathonly boolean) принимает один аргумент, $ pathonly, который является логическим тип данных - false по умолчанию.

С помощью $ pathonly = true он вернет только путь к сайту.

Примеры:

<? php echo JURI :: base (); ? > Будет звучать примерно так: http :: //localhost /joomla25 /
<? php echo JURI :: base (true); ? > Будет эхо: /joomla25

Обратите внимание, что при $ pathonly = true завершающая косая черта в конце пути URI omited.

ответил FFrewin 20 +04002014-10-20T00:30:42+04:00312014bEurope/MoscowMon, 20 Oct 2014 00:30:42 +0400 2014, 00:30:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132