2010-11-26 83 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!它的所有工作。

相关问题