2010-08-26 69 views
2

我们正在创建几个(19)网站以在Sharepoint 2007中进行托管并希望使用Google Analytics。第一部分很简单,只需将Google Analytics JavaScript放入Sharepoint主页面即可,并且按预期工作。如何在Sharepoint主页面中包含动态信息?

但是,我们希望19个网站中的每个网站都生成单独的统计信息,并且这是通过为每个网站设置不同的ID来完成的。我首先想到的是要存储在每个站点的web.config中的ID和更改母版页阅读本作的JavaScript:

<%= ConfigurationManager.AppSettings["google.analytics.key"]%> 

不幸时,SharePoint不喜欢这样说:代码块中不允许这个文件。

我的问题是:

有没有一种方法来读取web.config中的appSettings在SharePoint母版页?或

是否有更好的Sharepoint方法将特定于站点的信息导入母版页?或

我坚持使用单独的每个网站的母版页吗?

+0

不完全确定,如果我得到这个 - 但你可以主持一个非常简单的web部件什么都不是,但更新您的母版页中的Web.config中的值)? – Shaneo 2010-08-26 15:08:23

+0

也许吧,但似乎有点矫枉过工,不得不创建一个web部件来处理一条小线可以完成的事情。如果Sharepoint没有涉及,我可以把它放在master页面中,它可以很好地工作 - 我认为必须有一个“共享点方式”做同样的事情,我根本不知道。 – Ragoczy 2010-08-26 15:21:34

回答

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位置中的代码。

另一个选择是使用代码隐藏,但我假设根据你的问题,你不想这样做。

+0

这样做!谢谢!必须将VirtualPath更改为“/ _catalogs/masterpage/*”,因为我们是自定义的,但它现在就像一个魅力! – Ragoczy 2010-08-26 19:39:30

6

你提出的建议是非常不安全的,因为它允许任何贡献者使用SharePoint设计师添加任何代码到母版页,这绝不是一个好主意。我会建议在任何情况下使用服务器控件,这只需要几分钟的开发,但会为您节省很多头痛后

+0

感谢您的警告。因为我们只有两名开发人员在Sharepoint工作,所以我们最初将使用web.config解决方案,但我们会考虑未来的服务器控件。 – Ragoczy 2010-08-27 12:38:57

相关问题