it-swarm-vi.com

$ This-> baseurl được định nghĩa trong j Joomla ở đâu?

Tôi đã hỏi câu hỏi này trên stackoverflow.com trước (câu hỏi tại đây ). Trong các bình luận bạn có thể đọc rằng sẽ tốt hơn nếu tôi hỏi câu hỏi đó ở đây.

Trên trang web Joomla của tôi, tôi đang sử dụng echo $this->baseurl; nhưng nó trả về url chứa "/index.php". Tôi muốn thay đổi điều này để xóa "/index.php" khỏi basurl. Nhưng tôi không thể tìm thấy dòng định nghĩa của $this->baseurl;.

Tôi đã tìm thấy chủ đề này nhưng điều này dựa trên mẫu của chủ sở hữu câu hỏi và trong mẫu của tôi không có cái gì đó như thế này.

Gợi ý rất cảm kích :)

14
Therk

$this->baseurl; Về cơ bản là lối tắt cho JUri::base(). Nó nhận URL mà bạn đã chỉ định là biến live_site Trong tệp configure.php. Nếu cái này không có giá trị, thì nó sẽ sử dụng một số phép thuật PHP dựa trên một vài biến.

Vì vậy, hãy chạy một vài thử nghiệm. Vui lòng báo cáo kết quả lại:

Kiểm tra 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';
?>

Bài kiểm tra 2:

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

Bài kiểm tra 3:

Trong Cấu hình toàn cầu (phụ trợ Joomla), hãy thử đặt lại viết lại URL thành . Nếu điều này không hoạt động thì hãy đọc các Bước 1 , 2 5 của phần Apache trên trang này và thử lại.


Bài kiểm tra 4:

Ở đầu tệp index.php của mẫu, hãy thêm vào đây

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

$this->baseurl; Là một phím tắt được sử dụng từ bên trong một mẫu, thay vì gọi phương thức JURI:base(); của lớp JURI. Nó là một phần của lõi và bạn có thể tìm thấy nó tại /libraries/joomla/environment/uri.php (~line 218).

Nếu bạn nhìn vào phương thức, bạn sẽ thấy nó kiểm tra trong tệp cấu hình để xem biến $live_url Được xác định. Nếu có, nó sẽ trả về URL này, nếu không, nó sẽ trải qua một số kiểm tra khác và trả về URI cơ sở thực tế của bạn.

Rất có thể bạn có biến live_url được xác định trong configuration.php bao gồm index.php ở cuối. Kiểm tra ở đó ...

Một khả năng khác là hệ thống mẫu/mẫu hiện tại của bạn có một nơi nào đó được xác định thuộc tính $this->baseurl. Bạn có thể dễ dàng ghi đè $this->baseurl Bên trong mẫu của mình bằng cách xác định lại nó ở đầu tệp index.php Của mẫu của bạn, như: $this->baseurl = JURI::base();

* Cập nhật :

  • Tôi đã đề cập đến nơi bạn có thể tìm thấy phương thức, nhưng điều này không có nghĩa là bạn nên đến đó và thực hiện bất kỳ sửa đổi nào cho cốt lõi. Điều đó chỉ dành cho mục đích thông tin.

Cập nhật 2 - để tham khảo trong tương lai

Để hoàn thành thông tin được cung cấp trong bài đăng này, JURI::base($pathonly boolean) lấy một đối số, $pathonlykiểu dữ liệu boolean - false là mặc định.

Với $pathonly = true, Nó sẽ chỉ trả về đường dẫn đến trang web.

Ví dụ :

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

Lưu ý rằng khi $ pathonly = true, dấu gạch chéo ở cuối đường dẫn URI sẽ xuất hiện.

8
FFrewin