Пример кода модуля опроса Sitecore - PullRequest
1 голос
/ 09 декабря 2011

Я установил и настроил модуль опроса для нормальной работы. Веб-сайт, над которым я работаю, будет иметь экземпляр Poll на странице в виде левого или правого рельса. Опросы будут настроены в отдельной папке. На элементе страницы будет поле из нескольких списков, которое будет указывать на папку «Опросы», и пользователь сможет выбрать любой опрос, который он выберет. Папка также будет содержать различные подслои, которые могут быть выбраны для отображения на направляющей. У меня есть некоторый пользовательский код, который будет смотреть на вышеупомянутое многолистное поле и показывать эти элементы рельса.

Я не знаю, как программно отобразить опрос. Я не нашел никаких примеров кода, а также не уверен, где установить подслой. Должен ли я установить его в самом шаблоне опроса, а затем разрешить использовать код для его отображения? Как я могу добиться этого в коде? Любые примеры кода будут полезны.

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Надеясь, что в этот раз вы примете ответ, я написал для вас следующее (на основе модуля опроса 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 голос
/ 13 декабря 2011

В домене sitecore должна быть учетная запись пользователя с именем poll.Этот аккаунт обычно используется внутренним опросом.В комментарии к этой учетной записи указано: «Пожалуйста, не удаляйте эту учетную запись».учетная запись должна иметь роль редактора минимальных страниц Sitecore.Я не знаю учетных данных пользователя опроса, но вы можете обнаружить это, используя отражатель или открыв файлы cs, которые вы можете получить, загрузив исходный код.

...