2011-09-29 50 views
1

建立一個WordPress選項面板。它所做的一件事就是允許用戶選擇自定義顏色。我使用默認的樣式表,然後調用樣式來定製輸入。不過,我只是將這些插入頭中,而不是讓這些自定義值駐留在它們自己的樣式表中(因爲我需要通過PHP調用用戶的選擇)。這應該在它自己的樣式表中,以及如何? (PHP樣式表?)

舉個例子,我有一些代碼在我的標題是這樣的:

<style type="text/css"> 
p a { <?php echo get_option('to_custom_css'); ?> } 
</style> 

在我的功能:

array("name" => "Custom CSS", 
    "desc" => "Want to add any custom CSS code? Put in here, and the rest is taken care of. This overrides any other stylesheets. eg: a.button{color:green}", 
    "id" => $shortname."_custom_css", 
    "type" => "text", 
    "std" => ""),  

我怎麼會有這種駐留在其自己的樣式表,同時仍使用<?php echo get_option('to_custom_css'); ?>調用用戶輸入?

+0

...這是我一整天聽到的最悲慘的消息。 – siouxfan45

+0

請參閱由daiscog回答什麼是解決方法。 – Sparky

+0

@LucasWynne你可以將樣式表的擴展名設置爲.php。或者,如果您使用的是Apache,您可以設置任何特定的文件以供PHP處理,甚至可以使用mod_rewrite將some_file.css的所有請求傳遞給some_other_file.php。您只需要記住將PHP文件中的Content-type標頭設置爲「text/css」。 – megaflop

回答

6

您可以在PHP中創建樣式表,但需要將Content-type標頭設置爲text/css。在你的HTML:

<head> 
    <link rel="stylesheet" type="text/css" href="user-styles.php" /> 
    <!-- ... --> 

的用戶,styles.php:

<?php 

header('Content-type: text/css'); 

?> 
/* now put your css here : */ 

p a { 
    <?php echo get_option('to_custom_css'); ?> 
} 

/* and so on... */ 
0

最終你應該寫出來的CSS可以包括從主機頁的文件。這樣它可以被瀏覽器緩存。

<link rel="stylesheet" type="text/css" href="user1024/style.css" /> 
+1

瀏覽器可以緩存任何PHP文件。只需設置相關的HTTP標頭。 – megaflop

3

首先,將它添加到您的.htaccess文件,以便它會解釋的CSS文件中找到PHP:

AddType application/x-httpd-php .css 

然後鏈接到外部樣式表。使鏈接包括動態,以確定用戶的CSS值(可能是一個ID號)所需要的信息,這樣的:

<link rel="stylesheet" href="http://www.yourserver.com/customstyle.css?id=<?php echo $userid; ?>" type="text/css" /> 

最後將PHP代碼中動態地打印出的CSS,像這樣的樣式表:

<?php echo get_option('to_custom_css'); ?> 

使用$_GET['parametername']來檢索允許您計算css數據的參數。