我安装并配置了Poll模块以正常工作。我正在处理的网站将在页面上有一个轮询实例,作为左侧轨道或右侧轨道项目。民意调查将设置在一个单独的文件夹中。在页面项目上将有一个多列表字段,它将指向Polls文件夹,用户可以选择他们选择的任何一个民意调查。该文件夹还将包含不同的子布局,可以选择这些子布局显示在导轨上。我有一些自定义代码,它将查看上面提到的多列表字段并显示这些轨道项目。
我不知道如何以编程方式显示轮询。我没有找到任何代码示例,也不知道在哪里设置子布局。我应该在Poll模板上设置它然后让代码显示它吗?我怎样才能在代码中实现这一点?任何代码示例都会有所帮助。
答案 0 :(得分:3)
希望您这次接受答案,我为您写了以下内容(基于OMS民意调查模块:
读出项目上的字段:
Sitecore.Data.Fields.ReferenceField selectedPoll = (Sitecore.Data.Fields.ReferenceField)Sitecore.Context.Item.Fields["Poll"];
获取pollItem:
if (selectedPoll.TargetItem != null)
{
Item pollItem = selectedPoll.TargetItem;
if (pollItem != null)
{
检查投票是打开还是关闭并放置:
Sitecore.Data.Fields.CheckboxField pollClosed = (Sitecore.Data.Fields.CheckboxField)pollItem.Fields["Closed"];
if (pollClosed.Checked == false)
{
// Set the header of the snippetBlock
ltPollHeader.Text = pollItem.Name;
PollVotingSublayout pollSublayout = (PollVotingSublayout)LoadControl("/sitecore modules/Shell/Poll Module/Controls/PollVotingSublayout.ascx");
pollSublayout.Attributes.Add("sc_parameters", "PollPath=" + pollItem.Paths.FullPath);
pollSublayout.CurrentPoll = (PollItem)pollItem;
this.pollRegion.Controls.Add(pollSublayout);
phPollSnippet.Visible = true;
int blockPos = 0;
if (snippetField != null)
{
if (snippetField.GetItems().Any())
{
blockPos = 1;
}
}
string cssClass = String.Empty;
if (blockPos == 0)
{
cssClass = "snippetColHomeFirst";
}
this.SetClass("snippetColHome", cssClass);
}
希望你可以使用这个片段来弥补一些事情。祝你好运!
答案 1 :(得分:1)
sitecore域上应该有一个名为“poll”的用户帐户。此帐户通常由投票内部使用。在此帐户的评论中说:“请不要删除此帐户”。该帐户应具有Sitecore最小页面编辑器角色。我不知道民意调查用户凭据,但您可以通过使用反射器或打开可以通过下载源获得的cs文件来找到它。