2011-10-18 13 views
1

我試圖在WordPress網站上顯示隨機選擇的背景圖片。我的策略是內聯<html>元素的style屬性,就像這樣:如何將絕對文件路徑轉換爲一個CSS可以使用?

<html style="background:#e8e6da url(<?php 
$bg_imgs = glob(get_template_directory().'/backgrounds/*.jpg'); 
shuffle($bg_imgs); 
echo $bg_imgs[0]; ?>) left top fixed"> 

在我的本地服務器上,此輸出

<html style="background:#e8e6da url(C:\xampp\htdocs\mysite/wp-content/themes/my_theme/backgrounds/paper2.jpg) left top fixed"> 

...該瀏覽器不喜歡,因爲它是問獲取本地資源。即使這一點在網站生效後不會成爲問題,我只需要一個相對路徑來映射文件。

所以我打算用substr()來剔除路徑中不需要的部分,但我不能確定,根據網站的部署位置,將返回什麼get_template_directory()。我不想對可能會有所不同的任何內容進行硬編碼。

返回相對於網站URL的隨機圖像路徑的最佳策略是什麼?如果有更好的東西,我很樂意拋棄上述內容。

+0

我知道這沒有幫助,但我只是等到這個網站是活的並且硬編碼URL。 –

+0

在這種情況下,我需要使用客戶端在本地服務器上查看該站點,並且必須運行。此外,這是主題的一部分,因此應由客戶端攜帶。 –

+0

在這種情況下,您可能會:a)硬編碼一次以顯示客戶端。然後b)設置一個表單來插入一個文件路徑(存儲在一個變量中,傳遞給css等) –

回答

1

你可以嘗試獲取文檔根目錄和砍它關閉你的完整路徑的開頭:

$docRoot_len = strlen($_SERVER['DOCUMENT_ROOT']); 
$bg_imgs = glob(get_template_directory().'/backgrounds/*.jpg'); 
shuffle($bg_imgs); 
echo substr($bg_imgs[0], $docRoot_len); 

我知道這是不是萬無一失的 - 它只是一個理念。

+0

基於這個想法,我做了這個:''/<?php $ bg_imgs = get_template_directory(); $ root_path_length = strlen($ bg_imgs); $ bg_imgs = glob($ bg_imgs。'/ backgrounds/*。jpg'); shuffle($ bg_imgs); echo substr($ bg_imgs [0],$ root_path_length);?>)left頂部固定「>'這似乎工作!我不明白爲什麼當網站是活的時候它不起作用......是嗎? –

+0

它應該可以在任何網站上運行:您正在有效地採取絕對路徑並取出作爲文檔根目錄的基本部分 - 讓您瞭解文檔的路徑。唯一需要注意的是你在其餘路徑中保留起始「/」。 –

+0

是的,硬編碼它,你可以看到。甜,男人,這幫了我很多。我從來沒有考慮過統計'$ _SERVER ['DOCUMENT_ROOT']'返回的字符。 –

1
+0

這是我做的第一件事情,glob()需要一個完整的文件路徑,我猜:什麼也不返回 –

+0

那麼,你是混合文件系統路徑與URL路徑。這是一個禁忌。你將不得不按摩返回的路徑,將它們變成對URL有效的東西。 –

+0

對。因此,這個問題。做這件事的最佳策略是什麼? –

相關問題