我处于这样的情况:我被指控向Umbraco提出申请或扩展,使后端用户能够将他们在开发站点上的更改迁移到实际站点.这种迁移应该每天发生一次,或者当后端用户按下后端的按钮时.
我知道Umbraco在Courier包中提供了这个,但显然它对这种情况不起作用.
更多细节:
开发和实时站点都驻留在同一台服务器上,数据库也是如此.数据只需要从一个文件夹传输到另一个文件夹,并与数据库中的表格相同.
我可以看到有两种方法可以解决这个问题.
1)您进行完全迁移,基本上拆除了实时数据库并将其更新到新版本.然后,您也可以复制所需的所有文件.
2)您创建了一个包含文档类型的包,依此类推,您已在开发人员站点上更改并在实际站点上加载该包.
编号1的问题是,当您完成传输时,似乎必须重新发布整个站点.据我所知,你可以通过网络服务做到这一点,但如果我可以使用控制台应用程序,我更喜欢它.
我的问题是:
有没有办法以编程方式创建包并以相同的方式加载它们或以编程方式实现此迁移的最佳方法?
任何建议都会非常感激,因为我有点不知所措:
编辑
我最终实际上做了一个完整的镜像,因为我使用Robocopy传输文件夹中已更改的所有文件,然后我用SQL命令备份了开发站点,然后我恢复了它使用RESTORE SQL命令实时数据库.
在SQL命令中需要进行一些设置,但它运行顺畅,完整传输需要10秒,具体取决于已更改的文件数.
最后一件事.如果您希望更改可见,则需要重新加载Umbraco.您可以通过手动修改web.config文件或以编程方式设置LastWriteTime来完成此操作.
我是一个非营利组织的成员,要求我帮助他们重做他们的网站.
但是,他们不仅仅想要内容和设计更改,还需要一些需要后端编程的功能.例如,组织具有可用的有限插槽的"类",人们必须提前注册.当人们报名参加课程时,他们必须提供额外的文件才能参加课程.
他们在这个类型中有几个要求他们想要添加到网站的请求.
如果只是对现有内容进行简单的重新设计,我建议他们使用Wordpress或任何其他标准CMS来更新其外观.但由于他们也想要这些附加功能,我不确定如何继续.
我还没有机会对MVC网站进行编程,所以我想我会以此为机会学习MVC.与此同时,我不想重新发明轮子.所以我正在考虑使用像Orchard这样的CMS,它使用MVC,但显然是非常可扩展的.
使用Orchard对这种情况有意义吗?如果没有,为什么不呢?CMS还有其他建议吗?我也在看Umbraco,因为看起来他们的最新版本正在使用MVC,但后来我读到它有点儿错误并且缺少旧版本中的一些功能.那么我不确定这是不是正确的方法.
最后,我甚至不确定我是否应该使用CMS!我想知道如果我从头开始做一个应用程序,我是否会更好地学习MVC.在这种情况下,我正在考虑使用CMS作为Web内容,然后将"应用程序"部分编程为一个单独的Web应用程序,该应用程序已链接到其主站点(可能是register.mysite.com).
我只是在寻找建议和指导.如果你穿着我的鞋子怎么办?
我的日常工作是一个大型组织的开发人员.我主要使用.NET编写业务Web应用程序.但是我们还没有任何MVC应用程序,所以我的MVC技能基本上不存在.我想学习MVC,但我也想在一个体面的时间回到非盈利组织.
....所以你......它在......
.net asp.net-mvc umbraco content-management-system orchardcms
我读到umbraco在应用程序启动时运行我的代码我需要继承umbraco.Global并覆盖Application_Start.我已经完成了以下简单的代码,它位于umbraco网站项目引用的自己的程序集中,并在它的bin文件夹中.
public class AtomicF1Global : umbraco.Global
{
protected override void Application_Start(object sender, EventArgs e)
{
base.Application_Start(sender, e);
new WindsorStarter().Start();
throw new Exception("Reached Custom Global");
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的例外是在那里纯粹向我证明它没有被召唤.
据我所知,我所要做的就是我所做的一切.我不需要在任何地方更新umbraco表(就像对umbraco进行许多不同的修改一样).
但是,我的代码永远不会被调用,我也无法找到原因.我需要在某处注册吗?
我还检查过以确保bin目录中没有"App_Global.asax.dll".
我也尝试在umbraco站点项目中创建一个Global.asax,如下所示:
<%@ Application Language="C#" Inherits="umbraco.Global" %>
<%@ Import Namespace="atomicf1.domain" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// Call Global base class first
base.Application_Start(sender, e);
// Code that runs on application startup
new WindsorStarter().Start();
throw new Exception("Reached Custom Global");
}
</script>
Run Code Online (Sandbox Code Playgroud)
umbraco的版本是4.7.1(.NET 4.0).
我需要为umbraco创建一个项目.我不知道从哪里开始以及在哪里看到这个.我用Google搜索,没有发现任何有用的信息,而是让我感到困惑的是什么是umbraco项目.创建一个umbraco项目是否需要在visual studio中创建Web应用程序或类库.
我知道这些是基本的,但我只是在困惑.有人会帮助我为umbraco CMS创建项目.
我们的团队使用Umbraco 7作为我们的CMS.我们有一个简单的MVC网站和两个主要环境; 测试和PROD.每个环境都有自己的Umbraco安装和数据库.
我的任务是设置一个自动部署流程,只需从我们的TEST Umbraco中获取所有内容,媒体和设置,然后将其安装到我们的生产环境中.通过点击Octopos部署中的按钮来触发此过程(这反过来将调用ac#程序,该程序将通过调用必要的Umbraco API和插件来处理实际部署).
作为我的部署工具,我决定使用Courier 2.我正在使用试用版在我在本地设置的两个站点之间进行同步(UmbracoA.local和UmbracoB.local).我设法使用Backoffice中的Courier 2界面,在UmbracoA上创建一个修订版,将其传输到UmbracoB并手动安装.
现在我必须找到一种方法来调用Courier 2 API并自动触发这些步骤.(任何用户都不应该使用Backoffice来完成任何部署过程).
自动化的步骤是:
根据我的理解,Courier 2有一个事件模型,我可以将自己的步骤挂钩,但我只是想触发Courier 2的本地事件,即创建修订并在第二个站点上推送和安装它.当然,这必须是对他们的API的一个相当简单的调用?
你可以想象,我对Umbraco和Courier 2都很新,但基本上我正在寻找的只是一个代码示例,说明如何调用事件来触发这个过程.
在此先感谢,如果我能提供有关我的方案的更多信息,可以帮助我回答我的问题,请告诉我!
额外信息: - Umbraco版本7.5.4 - Courier版本2.52.15
我在xslt中有一个值,我需要把它放到p标签的data-time属性中
<xsl:value-of select="current()/eventTime" />
<p class="time" data-time="1">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p>
Run Code Online (Sandbox Code Playgroud)
这会产生错误
<p class="time" data-time="<xsl:value-of select="current()/eventTime" />">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p>
Run Code Online (Sandbox Code Playgroud)
知道我是怎么做到的吗?
我正在尝试创建一个自定义成员资格提供程序,以便将Umbraco中的用户验证到Umbraco之外的现有数据库.从我到目前为止所学到的,创建一个继承umbraco.providers.members.UmbracoMembershipProvider并覆盖ValidateUser()函数的类应该没有多少工作量 .
我想知道当我希望将这个类包含在我的Umbraco项目中而不是在web.config文件中指定它时我应该怎么做?是否有可能以这种方式扩展Umbraco,重新编译源代码?
编辑 - 我写了一篇关于我如何在http://marcus-abrahamsson.se/post/Membership-Provider-in-Umbraco上实现这一点的文章
是否可以将html字符串输出到csv.
尝试将数据从cms导出到csv和Excel.每个html都可以包含逗号和任何内容.
EG. <p class="myclass">This is an example, of the string</p>
Run Code Online (Sandbox Code Playgroud)
导入在Excel中被破坏,错误的数据出现在错误的列中,尽管前几行是正确的.
我想实现这种格式
col1,col2,col3
"1","<p class="myclass">This is an example, of the string</p>","and more html here"
Run Code Online (Sandbox Code Playgroud)
我尝试过这种事情 - 我在cms中迭代一个内容项,并输出每个属性作为用引号括起来并用逗号分隔的单独的csv数据值.
foreach (var prop in offer.Properties) //.Where(x=>x.Alias != "Id"))
{
var @propValue = prop.Value.ToString().Replace("\"", "'");
// Append comma except last
sb.Append(prop != offer.Properties.Last()
? "\"" + propValue + "\","
: "\"" + propValue + "\"");
}
sb.Append(Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)
更新: 事实证明,这项任务充满了困难.最初的目标是将一组节点及其属性从Umbraco CMS快速导出到Excel文件.我了解到csv可能不是这种类型数据的正确格式,它基于存储在xml中的数据,包括编码的html片段.
在我们的例子中,实现我们想要的最好方法是将导出的数据输出为Excel理解的html表,并保持编辑器友好格式而不是编码的html片段.
我想申请Umbraco Collection的条件.
码:
var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var workCollection = Umbraco.Content(workList);
@foreach (var item in workCollection.Where("productImage!=\"\"").Skip((i - 1) * iterationCount).Take(iterationCount))
Run Code Online (Sandbox Code Playgroud)