我们正在创建几个(19)网站,以便在Sharepoint 2007中托管,并希望使用Google Analytics。第一点很容易,只需将Google Analytics javascript放在Sharepoint母版页中,所有内容都按预期工作。
但是,我们希望19个站点中的每个站点生成单独的统计信息,这可以通过为每个站点使用不同的ID来完成。我的第一个想法是将id存储在每个站点的web.config中,并更改母版页以便为javascript读取此内容:
<%= ConfigurationManager.AppSettings["google.analytics.key"]%>
不幸的是,Sharepoint不喜欢这样说并且说:此文件中不允许使用代码块。
我的问题是:
有没有办法在Sharepoint母版页中从web.config读取appSettings?或
是否有更好的Sharepoint方式将特定于站点的信息导入母版页?或
我是否坚持为每个网站使用单独的母版页?
答案 0 :(得分:6)
您提出的建议非常不安全,因为它允许任何使用sharepoint设计器的贡献者向母版页添加任何代码,这绝不是一个好主意。我建议在任何情况下使用服务器控件,这只需要几分钟的时间来开发,但之后会为你节省很多麻烦
答案 1 :(得分:5)
默认情况下,SharePoint不允许母版页中的代码,因此您需要将主页标记为对代码安全。在您的web.config中,您将具有以下设置:
<SharePoint>
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" totalFileDependencies="50" AllowPageLevelTrace="false">
<PageParserPaths>
</PageParserPaths>
</SafeMode>
您需要将其更改为包括:
<PageParserPaths>
<PageParserPath VirtualPath="/_layouts/masterpage/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true"/>
</PageParserPaths>
这将告诉SharePoint允许母版页中的代码。您可以使用相同的想法来允许其他SharePoint位置中的代码。
另一种选择是使用代码隐藏,但我假设您根据自己的问题不想这样做。