【问题标题】:How do you create a Sitecore pipeline processor that runs when a new item is upload to the Media Library如何创建在将新项目上传到媒体库时运行的 Sitecore 管道处理器
【发布时间】:2015-10-13 19:08:06
【问题描述】:

我想构建一个 Sitecore 管道处理器,它会在上传媒体项目时获取其 ID,并将该 ID 保存到第三方应用程序使用的现有自定义数据库中。

我找不到任何操作方法或有关如何执行此操作的示例?

我正在为我的代码使用 Sitecore 8.0 Update 5 和 MVC 结构。

【问题讨论】:

    标签: sitecore sitecore8 sitecore-mvc


    【解决方案1】:

    您可以签入uiUpload 管道,但不会触发以编程方式创建的项目,即它只会在用户通过 CMS 界面上传项目时触发。

    创建一个新的处理器类:

    public class ExternalSystemProcessor
    {
        public void Process(UploadArgs args)
        {
            foreach (Item file in args.UploadedItems.Where(file => file.Paths.IsMediaItem))
            {
                // Custom code here
                SaveToExternalSystem(file.ID);
            }
        }
    }
    

    然后在默认保存处理器之后打补丁:

    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
      <sitecore>
        <processors>
          <uiUpload>
            <processor type="MyProject.Custom.Pipelines.ExternalSystemProcessor, MyProject.Custom" mode="on"
                       patch:after="*[@type='Sitecore.Pipelines.Upload.Save, Sitecore.Kernel']" />
          </uiUpload>
        </processors>
      </sitecore>
    </configuration>
    

    【讨论】:

      【解决方案2】:

      我不记得在将新项目上传到媒体库时会执行任何管道,但您应该可以使用 item:created 事件。

      只需检查 args (ItemCreatedEventArgs) 中的项目是否为媒体项目并执行您的代码。

      public void OnItemCreated(object sender, EventArgs args)
      {
          var createdArgs = Event.ExtractParameter(args, 0) as ItemCreatedEventArgs;
      
          if (createdArgs != null)
          {
              if (createdArgs.Item != null)
              {
              ...
              }
          }
      }
      

      【讨论】:

      • 您可以使用item.Paths.IsMediaItem检查项目是否为媒体
      猜你喜欢
      • 2014-05-05
      • 2015-03-05
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2012-01-29
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多