2010-11-26 140 views
0

我有幾個靜態文件(頁面),這些靜態文件基本上是我的網站頁面源代碼的副本,其內容已更改。將內容添加到靜態文件(頁面)

這些文件以各種方式支持我的網站(保持相同格式)。

例如菜單的部分是: -

<body> 

<div id="menu"> 

<ul class="level1" id="root"> 
etc 
etc. until 
</ul> 
    </div> 

不幸的是每隔一個月左右我的菜單欄的變化和我必須手動更新每個靜態文件。 由於每個靜態文件都有相同的菜單。

是否有可能有一個菜單文件可以更新,並有靜態文件自動加載它們。

我打算有幾個更多的靜態文件。所以如果有人能夠建議如何實現這一點,這將是一個很大的幫助。

回答

0

哦,是的。使用一些javascript魔術在加載頁面時加載菜單欄並將其保存在menu.html中。

+0

就我個人而言,我不會在這種情況下看到菜單 - 我從來沒有爲網站啓用JavaScript,我想沒有它可以做。 – Arsen7 2010-11-26 12:49:18

0

一個解決方案可能是使用蜘蛛(wget --recursive)直接從您的應用程序下載生成的頁面。一個命令,你有你的網站的完整副本。 (只需添加一些有用的選項,例如--convert-links)。

另一種選擇可能是在控制器中寫入after_filter,並將生成的內容寫入文件(並非總是,但例如在添加參數?refresh_copy = 1時)。也許只是打開頁面緩存將是合適的?但問題在於你無法輕易觸發控制器動作。

如果您不希望複製整個網站,只需添加一些特定的路由或控制器(/ mirrorable/...)並在其上運行蜘蛛,或者手動訪問它們(以觸發將內容保存在文件)。

0

我最終創建了一個沒有模型的控制器。

rails g controller staticpages 

我然後在「staticpages的視圖」創建了導入到佈局中的各個變化的佈局文件,經由「產量」綁在視圖文件「content_for」(靜態文件(頁) (例如縮寫,aboutthissite等等等等)。

裝載在佈局中常用的「產量」靜態文件的其餘部分。作品一種享受。沒有更多更新的菜單欄全部自動完成。

要得到正確的靜態文件我創建了一個路線使用: -

match 'static/:static_page_name'=> 'staticpages#show' (or in rails 2.x:- 
map.connect 'static/:static_page_name', :controller=> "staticpages", :action=> "show" 

「static_page_name」變量接受後的URL任何「/靜態/」,並將其傳遞給控制器​​「staticpages」我在其中設置了包含show動作: -

def show 
@static_page_name = params[:static_page_name] 
allowed_pages = %w(abbreviations aboutthissite etc, etc,) 
if allowed_pages.include?(@static_page_name) 
    render @static_page_name 
else 
    redirect_to '/'      #redirects to homepage if link does not exists 
end 

然後我只需要更改網站中的鏈接。 (例如<%= link_to「關於本網站」,「/ static/aboutthissite'%>)

and viola!它的所有工作。

相關問題