Joomla에서 $ this-> baseurl은 어디에 정의되어 있습니까?


14

먼저 stackoverflow.com에서이 질문을했습니다 (질문 여기 ). 의견에서 당신은 내가 그 질문을 여기에 묻는다면 더 좋을 것이라고 읽을 수 있습니다.

내 joomla 웹 사이트에서 사용하고 echo $this->baseurl;있지만 "/index.php"를 포함하는 URL을 반환합니다. baseurl에서 "/index.php"를 제거하기 위해 이것을 변경하고 싶습니다. 그러나의 정의 줄을 찾을 수 없습니다 $this->baseurl;.

이 스레드를 찾았 지만 질문 소유자의 템플릿을 기반으로하며 내 템플릿에는 이와 같은 것이 없습니다.

제안 매우 감사합니다 :)

답변:


14

$this->baseurl;기본적으로 바로 가기입니다 JUri::base(). configuration.php 파일 live_site에서 변수로 지정한 URL을 가져옵니다 . 이것이 가치가 없다면, 몇 가지 변수를 기반으로 PHP 마법을 사용합니다.

따라서 몇 가지 테스트를 실행 해 보겠습니다. 결과를 다시보고하십시오.

시험 1 :

<?php
  echo 'Rule 1: ' . JUri::base() . '\n';
  echo 'Rule 2: ' . $_SERVER['PHP_SELF'] . '\n';
  echo 'Rule 3: ' . $_SERVER['REQUEST_URI'] . '\n';
  echo 'Rule 4: ' . $_SERVER['SCRIPT_NAME'] . '\n';
?>

시험 2 :

<?php
    echo JUri::base();
    echo JUri::base(true);
?>

시험 3 :

글로벌 구성 (Joomla를 백엔드)에서 설정하려고 재 작성 URL있음을 . 그래도 문제가 해결되지 않으면 이 페이지Apache 섹션1 , 25 단계를 읽고 다시 시도하십시오.


시험 4 :

템플릿의 index.php 파일 맨 위에 다음을 추가하십시오.

<?php
    $this->baseurl = JUri::base();
?>

안녕, 답변 주셔서 감사합니다. live_siteconfiguration.php 파일 의 변수를 내 URL로 변경했습니다 (아무것도 변경되지 않았습니다). 결과는 다음과 같습니다. 규칙 1 : my-url.com 규칙 2 : /index.php 규칙 3 : / 규칙 4 : /index.php
Therk

@Therk-확인 및 전역 구성에서 URL 재 작성 이 해제되어 있습니까?
Lodder

@Therk-내 답변의 테스트 2 참조
Lodder

당신은 mod_rewrite를 의미합니까? Joomla 구성에서 해제되어 있습니다.
Therk

테스트 2 : echo JUri::base()" myurl.com "을 echo JUri::base(true)반환하고 아무것도 반환하지 않음
Therk

8

$this->baseurl;대신 호출하는 템플릿 내부에서 사용하는 바로 가기입니다 JURI:base();JURI 클래스, 메소드. 그것은 핵심의 일부이며 당신은 그것을 찾을 수 있습니다/libraries/joomla/environment/uri.php (~line 218).

메소드를 보면 $live_url변수가 정의 되어 있는지 확인하기 위해 구성 파일을 검사하는 것을 볼 수 있습니다. 그렇다면이 URL을 반환하고, 그렇지 않으면 여러 가지 다른 검사를 수행하여 실제 기본 URI를 반환합니다.

아마도 끝에 끝에 포함 된 live_url 변수가 정의되어있을 것 configuration.php입니다 index.php. 확인하십시오 ...

또 다른 가능성은 현재 템플릿 / 템플릿 시스템이 $this->baseurl속성을 정의한 곳일 수 있습니다. 다음 과 같이 템플릿 파일 $this->baseurl맨 위에서 템플릿을 다시 정의하여 템플릿 내부를 쉽게 재정의 할 수 있습니다 index.php.$this->baseurl = JURI::base();

*최신 정보:

  • 방법을 찾을 수있는 곳을 언급했지만 이것이 핵심을 수정해야한다는 것을 의미하지는 않습니다. 그것은 단지 정보 제공의 목적이었습니다.

업데이트 2-향후 참조를 위해

이 게시물에 주어진 정보를 완료하려면는 JURI::base($pathonly boolean)하나 개의 인수, 소요 $pathonlyA는 부울 데이터 유형 - false기본값입니다.

을 사용 $pathonly = true하면 사이트 경로 만 반환합니다.

예 :

<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25

때 참고 $가 pathonly = true를 , URI 경로의 끝에 후행 슬래시가 ommited된다.


답변 주셔서 감사합니다. 방법을 찾았습니다. 거기에서 아무것도 바꾸지 않아야합니까? configuration.php 파일에서 변수 live_site를 내 URL로 정의하고 더 이상 아무것도 정의 하지 않았습니다 (어딘가에 index.php를 추가하지 않았습니다).
Therk

그렇습니다. 핵심의 변화는 없습니다. 다른 사람이 이미 이전에 무언가를 한 경우 예외는 ...이 기능이 이런 식으로 작동하게 한 것입니다. 실제로 설정에서 live_url 변수를 정의해야합니까? 일반적으로 필요하지 않습니다.
FFrewin

좋아 :) live_url 변수를 정의해도 문제가되지 않습니다. 아무것도 변경하지 않습니다 ... index.php가 항상 나타납니다. 코드를 사용하여 문제를 해결할 수는 있지만 매우 해킹되고 매우 추한 것이므로이 작업을 원하지 않습니다. 그래서 index.php가없는 baseurl을 수정하고 싶습니다.
Therk

대안적이고 빠른 방법은 템플릿 내에 사용자 정의 baseurl 변수를 정의하고이를 사용하는 것입니다. $ mybaseurl = JURI :베이스 (true); 에코 $ mybaseurl;
FFrewin

템플릿을 변경하면 $ this-> baseurl에 영향을 미치는지 확인할 수 있습니다.
FFrewin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.