Sitecore民意调查模块示例代码

时间:2011-12-09 12:02:44

标签: sitecore sample

我安装并配置了Poll模块以正常工作。我正在处理的网站将在页面上有一个轮询实例,作为左侧轨道或右侧轨道项目。民意调查将设置在一个单独的文件夹中。在页面项目上将有一个多列表字段,它将指向Polls文件夹,用户可以选择他们选择的任何一个民意调查。该文件夹还将包含不同的子布局,可以选择这些子布局显示在导轨上。我有一些自定义代码,它将查看上面提到的多列表字段并显示这些轨道项目。

我不知道如何以编程方式显示轮询。我没有找到任何代码示例,也不知道在哪里设置子布局。我应该在Poll模板上设置它然后让代码显示它吗?我怎样才能在代码中实现这一点?任何代码示例都会有所帮助。

2 个答案:

答案 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文件来找到它。