Sitecore 的标准编码模式应该是什么

What should be the standard coding pattern for Sitecore

使用 Sitecore 8.0、MVC、VS2015
我设法根据需要为练习站点生成页脚内容,但想知道做事的标准方法。问题很简单,但试图详细解释。请多多包涵:)

要求:页脚应显示办公室地址,并且内容作者应可对其进行编辑。 Sitecore 模板: 位置,Telephone 1,Telephone 2,IsActive(类型复选框)。
数据源:包含上述模板项目的文件夹。
代码:

    public class FooterViewModel 
        {
            public List<Sitecore.Data.Items.Item> Addresses { get; set; }
        }  

    public class FooterController : Controller
        {
            public ActionResult Footer()
            {
                var datasource = RenderingContext.Current.Rendering.Item;
                FooterViewModel viewModel = new FooterViewModel();            
                viewModel.Addresses = new List<Item>();

            if(datasource != null && datasource.HasChildren && datasource.Children.Count > 0)
                {
                    foreach(Item address in datasource.Children)
                    {
                        if (address["IsActive"] == "1")
                            viewModel.Addresses.Add(address);
                    }
                }

                return View("~/Views/Shared/Footer.cshtml", viewModel);            
            }
        }

使用 Sitecore 控制器渲染 html 渲染
cshtml:

@using Sitecore.Mvc
@using Sitecore.Mvc.Presentation
@model Democore.Models.FooterViewModel

<div>
    @foreach (var address in Model.Addresses)
    {
        <div>
            <h3>@Html.Sitecore().Field("Location", address)</h3>
            <ul>         
                <li>
                    @Html.Sitecore().Field("Telephone 1", address) 
                </li>
                <li>
                    @Html.Sitecore().Field("Telephone 2", address) 
                </li>
            </ul>
        </div>
    }  
</div>    
<div>
    <p>&copy Copyright @DateTime.Now.Year. All rights reserved</p>
</div>

这是我的问题。 (..好吧,所有 3 个都或多或少相似)

  1. 如何改进这个 code/structure(或者)在什么情况下它可能会失败。

  2. 我不喜欢在控制器中对字段名称进行硬编码的方式 & CShtml。如果作者更改字段名称怎么办。如何应对 那.

  3. 它在真实场景中是如何工作的,比如作者 想要显示第三个 phone 号码。他们会联系开发商吗? 因为这也需要更改设计和代码吗?

这是一个非常广泛的问题,可能会被关闭 - 但这里有一些提示!

  1. 就错误处理而言,您的控制器没问题。您真的想为您的站点添加一个全局错误处理程序。这是一个很好的例子:http://www.sitecorenutsbolts.net/2015/10/23/Rendering-Exception-Handling-The-Right-Way/

  2. 您有 2 个选择 - 使用常量和字段 ID 而不是名称,这不是一个很好的选择,但可以工作。更好的选择是使用 ORM/Wrapper 来做到这一点。两个不错的是 Fortis and Glass Mapper - 都非常好 - 我为 Fortis 做出了贡献,所以这将是我的推荐。

  3. 通常,如果组件的设计发生变化,则需要开发支持。您可以使用诸如 BrainJock's Score 或 ZenGarden 之类的工具来构建您的网站,然后编辑器拥有更多控制权。但仍然可能需要开发人员。

希望这对您有所帮助。有关良好 Sitecore 架构的一些信息,请查看此处:Sitecore Helix and Sitecore Habitat