2011-04-11 62 views
1

http://www.vector.safwanmanpower.com/通過Web界面對css文件進行永久更改?

我正在開發一個網站包,這個包的網站將給予第三方公司 因此,如果第三方公司想改變背景顏色,字體臉css來改變這一點,我創建了一個網頁,供所有這個css屬性被指定,並且在文本框中它們將選擇背景顏色,字體值和這些更改應該在提交更改後在css文件中生效。

我的目標背後是這家公司可以通過網頁界面進行更改,我不希望他們找到css代碼並更改它們的值以使工作變得輕鬆。

enter image description here

+3

問題是什麼? – 2011-04-11 09:00:23

+0

要通過網頁永久更改css文件 – 2011-04-11 09:03:16

+0

您的特定問題是什麼?到目前爲止,你只描述了你的系統,這聽起來對我來說確實很好。你到底在問什麼? – 2011-04-11 09:04:54

回答

1

這個想法聽起來不錯,但它可能會有點工作,並超出1個單一的答案。但這是我如何接近它。

有一個數據庫存儲當前的選擇器,屬性和值。

如:

selector | property | value 
---------+----------+---------- 
div  | color | #FFFFFF 
div  | float | left 

等等,等等......

在用戶提交的變化,做以下事情

1 - 更新數據庫中的行,例如如果我,用戶將div更改爲#440044,則更新該行使其如此讀取:

selector | property | value 
---------+----------+---------- 
div  | color | #440044 
div  | float | left 

2 - 使用PHP(或您的服務器端語言選擇)拉數據庫的內容,通過選擇組織,利用沿線的MySQL查詢:

$query = 'SELECT * FROM css ORDER BY selector'; 

3 - 循環遍歷這些值,將它們分組成陣列的陣列是這樣的:

$css_array = array(); 
foreach($rows as $row) { 
    if(! array_key_exists($row['selector'], $css_array)) { 
     $css_array[$row['selector']] = array(); 
    } 
    // push each value onto the sub array 
    $css_array[$row['selector']][] = $row['property'] . ':' . $row['value']; 

} 

這會留下與數組的數組 - 表示CSS

array(
    'div' => array(
     'color:#440044', 
     'float:left' 
    ), 
    'h1' => array(
     'font-size:16px' 
    ) 
); 

4的元件的每個子陣列 - 利用這種陣列和內爆法,建立一個龐大的字符串,如:

foreach($css_array as $key => $value) { 
    $s .= key . '{'; 
    $s .= implode(';\n', $value); 
    $s .= key . '}'; 
} 

5 - 這應該離開你看起來像一個正常的CSS表的字符串。使用PHP中的fopen等函數將其寫入一個名爲style.css或類似文件的文件中。

0

你需要一點點的PHP腳本,假設你添加了PHP的標籤,因爲這是你選擇的語言。

該腳本將不得不打開相應的css文件,搜索相關部分進行更改,更改並將更改後的文件寫入磁盤。您可以使用正則表達式來查找css文件的相關類&屬性。