2010-08-26 3 views
2

Мы создаем несколько (19) сайтов, которые будут размещены в Sharepoint 2007, и вы хотите использовать Google Analytics. Первый бит был простым, просто поместив javascript Google Analytics на главную страницу Sharepoint, и все работало, как ожидалось.Как включить динамическую информацию в главную страницу Sharepoint?

Однако мы хотим, чтобы каждый из 19 сайтов генерировал отдельные статистические данные, и это делается с использованием другого идентификатора для каждого сайта. Моя первая мысль была хранить идентификатор в web.config каждого сайта и изменить главную страницу, чтобы прочитать это для JavaScript:

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

К сожалению, Sharepoint не нравится это и говорит: блоки кода не допускается этот файл.

Мой вопрос:

Есть ли способ чтения AppSettings из web.config в главной странице Sharepoint? или

Есть ли лучший способ Sharepoint для получения информации о конкретном сайте на главной странице? или

Я застрял с использованием отдельных главных страниц для каждого из сайтов?

+0

Не совсем уверен, если я получу это - но вы могли бы разместить очень простой веб-сайт (это ничего, кроме обновления какого-либо поля на главной странице со значения в вашем Web.config)? – Shaneo

+0

Возможно, но, похоже, слишком сложно создать веб-страницу для того, что можно сделать с помощью одной маленькой строки. Если бы Sharepoint не был задействован, я мог бы просто поместить это на главную страницу, и это будет работать нормально - я думаю, что должен быть «sharepoint-way» делать то же самое, о чем я просто не знаю. – Ragoczy

ответ

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, чтобы код в MasterPage. Вы можете использовать ту же идею, чтобы разрешить код в других местах SharePoint.

Другой вариант - использовать codebehind, но я предполагаю, исходя из ваших вопросов, что вы не хотите этого делать.

+0

Вот и все! Благодаря! Пришлось изменить VirtualPath на «/ _catalogs/masterpage/*», потому что наш пользовательский, но теперь он работает как шарм! – Ragoczy

6

Вы предлагаете крайне небезопасно, так как он позволяет любому вкладчику, использующему конструктор sharepoint, добавлять код на главную страницу, это никогда не будет хорошей идеей. Я бы предложил использовать серверный контроль в любом случае, это займёт всего несколько минут для разработки, но потом сэкономит вам много головной боли.

+0

Спасибо за предупреждение. Поскольку у нас есть только два разработчика, работающие в Sharepoint, мы сначала используем решение web.config, но мы рассмотрим серверные элементы управления на будущее. – Ragoczy

Смежные вопросы