[英]load article inside a page php
如何做到這一點:
http://jennamolby.com/how-to-display-dynamic-content-on-a-page-using-url-parameters/
使用PHP?
假設我有以下網址:
到那里,我在pages-folder / works.php中有一個鏈接:
<a href="pages-folder/works-folder/content-manager?article=my-article"> link </a>
這應該打開content-manager.php在div里面我應該加載my-article.php
編輯:
我有一個索引文件,其中將我需要的所有頁面加載到div.container中,因此在這種情況下,我的works.php文件使用以下命令加載到div.container中:
<?php
$page = $_GET['page'];
if(!empty($page)){
$page .= '.php';
include($page);
}
else {
include('pages/home.php');
}
由於我還需要在不重新加載頁面的情況下更新網址,因此我使用以下腳本:
function ChangeUrl(page, url) {
if (typeof (history.pushState) != "undefined") {
var obj = { Page: page, Url: url };
history.pushState(obj, obj.Page, obj.Url);
}
}
$('ul.menu li a').on('click', function(){
var page = $(this).attr('href');
var pageUrl = page.split("/");
pageUrl = pageUrl[1];
$('.container').load(page + '.php', function(){
//fadeout old content
//fadein new content
});
ChangeUrl('Page1', '?page=' + page);
return false;
})
一旦我將我的works.php加載到div.container中,我就有了上面提到的鏈接,該鏈接應引導我前往:pages-folder / works-folder / content-manager.php
在此頁面中,我想將my-article.php加載到content-manager.php的主要div中
我認為添加?article =變量可以使用與上述相同的系統來工作:
$article = $_GET['article'];
if(!empty($article)){
$article .= '.php';
include($article);
}
else {
...
}
但這不是...我怎么能做到這一點?
為什么不只是將文章添加為查詢參數?
並建立這樣的鏈接
<a href="pages-folder/works-folder/content-manager&article=<?php echo $_GET['article'] ?>"> link </a>
這只是了解您想做什么的一個示例,不要在生產中使用這種代碼,他很容易受到CSRF攻擊
編輯:與回聲,最好是抱歉
我本身尚未回答您的問題,但這是您正在尋找的代碼類型:
<?php if (isset($_GET["page"]) && strtolower($_GET["page"]) == "1") { ?>
<p>You are on page one</p>
<a href="thisPage.php">Back</a>
<?php } elseif (isset($_GET["page"]) && strtolower($_GET["page"]) == "2") { ?>
<p>You are on page two</p>
<a href="thisPage.php">Back</a>
<?php } else { ?>
<p>You have not selected a page. Click one of the links:</p>
<a href="thisPage.php?page=1">Page one</a>
<a href="thisPage.php?page=2">Page two</a>
<?php } ?>
$_GET
如何工作? $_GET
是一個超級全局變量-意味着可以從任何地方訪問它。
它是通過URL參數傳遞到當前腳本的變量的關聯數組。
這些是在URL中的問號( ?
)之后指定的。 要指定多個參數,必須在每個參數之間使用&
字符。
必須在URL的末尾指定$_GET
。
http://www.example.com/thisPage.php?page=a
http://www.example.com/thisPage.php?page=a&theme=light
第一個URL將產生一個帶有一個元素的$_GET
,該元素可以通過以下方式訪問: $_GET["page"]
並返回一個字符a
的字符串。
第二個將產生:
$_GET["page"]; // returns "a"
$_GET["theme"]; // returns "light"
請注意,為每個參數創建了一個新的鍵值對。
我在SO Documentation上對超全局變量進行了全面的解釋,但此后不推薦使用。 撕碎我的辛苦:P
從上面我的回答中可以看到。 您可以使用簡單的if語句檢查值是什么。
首先,確保$_GET
isset
然后檢查值。
我將數組的值轉換為小寫,因為"A"
與"a"
。
您鏈接的示例確實使事情變得過於復雜 。 老實說,並不需要所有的正則表達式,它也依賴於JavaScript,這不一定是一個好主意。
在頂部的示例中,用戶體驗之間沒有區別,因為PHP是服務器端的,因此所有內容都經過處理然后提供給用戶。
使用此功能,您可以執行額外的步驟,並擁有一個事件偵聽器,並將其與AJAX結合在一起。
更改我的初始示例,您可以執行以下操作。
我使用了jQuery庫,因為它易於實現。
<div id="test">
<?php if (isset($_GET["page"]) && strtolower($_GET["page"]) == "1") { ?>
<p>You are on page one</p>
<a href="t.php">Back</a>
<?php } elseif (isset($_GET["page"]) && strtolower($_GET["page"]) == "2") { ?>
<p>You are on page two</p>
<a href="t.php">Back</a>
<?php } else { ?>
<p>You have not selected a page. Click one of the links:</p>
<a href="t.php?page=1">Page one</a>
<a href="t.php?page=2">Page two</a>
<?php } ?>
</div>
function myAJAX() {
$("a").on("click", function(e) {
e.preventDefault();
// get the clicked page number
if (this.href.indexOf("&") > -1) {
var d = this.href.substring(this.href.indexOf("page=") + "page=".length, this.href.indexOf("&"))
} else {
var d = this.href.substr(this.href.indexOf("page=") + "page=".length)
}
$.ajax({
method: "GET",
url: "t.php",
data: "page=" + d,
success: function(data, textStatus, jqXHR) {
// change the content of the #test div
$("#test").html($($.parseHTML(data)).filter("#test")[0]);
myAJAX();
}
});
});
}
myAJAX();
請注意,HTML並未包裝在<div id="test">
,因此JavaScript可以找到該元素並在函數中對其進行更改。
$("#test").html($($.parseHTML(data)).filter("#test")[0]);
是要獲取HTML並使用您嘗試單擊的頁面中的數據對其進行更改的行。
我還在內部調用了該函數,以便它將重新附加到錨鏈接上。 如果刪除此行,則頁面將照常重定向。
關於此實現的好處是,如果您的用戶沒有JavaScript,則該頁面將正常運行,並且將正常重新加載該網站。
無需您做任何額外的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.