2011-05-10 78 views
3

我在sitecore中成功创建站点A并已部署到生产环境,现在我想将另一个站点B添加到同一个站点内核实例。我意识到如何做到这一点,但我不知道如何将这两个网站的代码(布局,控件等)分开,以便不会真正依赖其他网站。而不是将两个站点结合在同一个站点中在Visual Studio中的一个项目,我想知道是否可以为站点B创建一个新项目,但是仍然重用站点A项目中的sitecore文件?我想要真正理解的是在sitecore中构建多站点解决方案的最佳实践。有任何想法吗? 注意:站点A和站点B在各个方面都完全不同,除了它们需要在同一个站点核心实例上运行。sitecore多站点设置

回答

3

,我建议你在文件系统上的每个站点的资产分成文件夹:

/Website/ 
/Website/sites/ 
/Website/sites/SiteA (<-- specific to SiteA) 
/Website/sites/SiteB (<-- specific to SiteA) 
/Website/sites/Common (<-- shared across any sites) 

在Sitecore的,为您呈现部件做同样的。

- layouts 
    - SiteA 
    - SiteB 
    - Common 
    - Sublayouts 
    - SiteA 
    - SiteB 
    - Common 

与同为模板:

Templates 
    User Defined 
    SiteA 
    SiteB 
    Common 

分离出C#类库也因此他们是具体到每一个网站,并有hared代码的共同项目的任何网站(如工具代码,扩展方法,助手类等)。 Visual Studio解决方案:

- WebApp 
- SiteALib (<- SiteA specific code) 
- SiteBLib (<- SiteB specific code) 
- CommonLib (<- reusable code for any site) 

至于内容树的网站,他们也处于同一水平分离出来:

sitecore 
    content 
    SiteA (<-- root item for SiteA) 
     home (<-- start item for SiteA) 
    SiteB (<-- root item for SiteB) 
     home (<-- start item for SiteB) 
+0

谢谢你,这是有道理的。但为了进一步分离项目,我正在考虑为站点B创建一个新项目,该站点将有sitecore dll引用到站点A项目,并为每个项目/站点维护两个独立的web.configs。网页。siteA的网站节点的配置将指向内容树中的siteA,siteB的web.config将指向内容树中的siteB。有了这个模型,我希望在一个使用相同sitecore实例的解决方案中实现两个不同的项目。我希望我能说清楚自己在说什么;)。 – xoail 2011-05-10 17:50:12

+2

啊,这听起来像你想从Sitecore解决方案中删除你的网站的具体细节。看看这个:http://seankearney.com/post/Visual-Studio-Projects-and-Sitecore.aspx – 2011-05-10 18:47:43

0

我认为最简单的解决方案就是为每个站点使用布局,子布局等。

你可能只需要在布局文件夹2个文件夹:

布局/站点A 布局/ SiteB中

它们将包含每个站点的ASPX & ASCX文件。然后你会使用相同的Sitecore文件。如果需要的话,您也可以在解决方案中共享DLL或其他项目(如果您有一个基于Util的DLL或您在所有解决方案中使用的一些常规WebControls)。

这可能不是分离它们的最佳方式,但它很简单。

只要记住在section中有独立的s,并且在web.config的publish:end部分也有新的站点。

记住,你就可以从一个网站访问内容到另一个(即www.sitea.com/sitecore/content/Siteb.aspx),除非你有一些代码,处理该。

另一个常用技巧是使用外部URL来链接站点,并且为了避免Sitecore将它们更改为内部URL,请在另一个域(即edit.mysites.com)上设置editingsite。因为如果您在www.sitea.com/sitecore上进行编辑并在www.sitea.com上插入外部网址,Sitecore会“帮助您”并将其转换为内部网址,因为域名匹配。