• C#操作Kentico cms


    C#操作Kentico cms 中的 content(winform环境)

    前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内容的修改。现在将对content的操作方法简单的介绍一下。

    我们想要操作kentico网站的content(如下图),操作步骤如下。

    一、引入kentico相关的dll文件,配置数据库链接环境

    不直接使用sql查询语句去操作,而是使用kentico cms的方法去直接操作,我们需要引入kentico cms系统中的dll文件,这些文件在kentico cms网站的/bin目录下面可以找到,就是一些前缀是CMS.的文件,如下图,下图只是一部分:

    接下来就是需要在配置数据库连接,在app.config中添加配置代码如下:

    1 <connectionStrings>
    2     <add name="CMSConnectionString" connectionString="Persist Security Info=False;database=expert_fi_7;server=.SQLEXPRESS;user id=sa;password=******;Current Language=English;Connection Timeout=240;" />
    3   </connectionStrings>

    该配置连接的name必须为CMSConnectionString,这样才能有cms类库自动的识别。

    二、初始化kentico CMS环境

    引入命名空间:using CMS.CMSHelper

    在需要使用content操作的代码前加上

    1 CMSContext.Init();

    三、操作content节点

    对节点的操作无非就是增、删、改、查这几种操作,下面一一介绍

    • 查询操作
      复制代码
       1 TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);//获取当前content树对象
       2 
       3  var node = tree.SelectSingleNode(CMSContext.CurrentSiteName
       4 , "/Tuotteet"     //该处为Alias path,见下图
       5 , "en-us",true);   //获取节点Tuotteet
       6 
       7 value = node.GetValue(columnNames["propertyName"]).ToString();  //获取某一属性值
       8 //【注】该node不能直接用node.Children去获取,node.Children获取的只是最基本的信息
       9 
      10 //获取指定节点所有属性名
      11 DataClassInfo dci = DataClassInfoProvider.GetDataClass(node.NodeClassName);
      12 var columnNames=new List<string>();  //创建属性名对象
      13 if (dci != null)
      14 {
      15       CMS.FormEngine.FormInfo fi = new CMS.FormEngine.FormInfo(dci.ClassFormDefinition);
      16       columnNames = fi.GetColumnNames();
      17 }
      18 
      19 //获取所有子节点
      20 var childrenNodes=node.Children
      复制代码

      如果你想获取所有子节点的属性,你可以遍历childrenNodes,然后使用SelectSingleNode(……)的方法去获取指定子节点的对象,然后去获取它的属性。
      对于上面提到的Alias path,见下图示例:

    • 添加节点
      复制代码
       1         public void AddNode(string nodeAliasPath,List<string[]> categorys )
       2         {
       3             var parentNodeAliasPath = nodeAliasPath.Substring(0, nodeAliasPath.LastIndexOf('/'));
       4             var tree = new TreeProvider(CMSContext.CurrentUser);
       5             var parentNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, parentNodeAliasPath, "fi-FI", true);
       6             var className = categorys[1][1];
       7             TreeNode newNode = TreeNode.New(className, tree);
       8             newNode.DocumentName = categorys[1][0];//设置节点名
       9             newNode.DocumentCulture = "fi-FI";//设置节点的document环境
      10             for (int i = 2; i < categorys[0].Length - 2; i++)
      11             {
      12                 newNode.SetValue(categorys[0][i], categorys[1][i]);//为节点添加新的属性,SetValue(属性名,值)
      13             }
      14             DocumentHelper.InsertDocument(newNode, parentNode, tree);
      15         }
      复制代码

      这里要注意的是必须给节点新节点添加属性,不然该节点在添加后不会显示出来

    • 删除节点
      复制代码
      1         public void DeleteNode(string nodeAliasPath)
      2         {
      3             var tree = new TreeProvider(CMSContext.CurrentUser);
      4             var deleteNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
      5             if (deleteNode != null)
      6             {
      7                 DocumentHelper.DeleteDocument(deleteNode, tree, true, true, true);
      8             }
      9         }
      复制代码

      关于DeleteDocument的说明,如下图

    • 修改节点内容
      复制代码
       1         public void UpdateNode(string nodeAliasPath,List<string[]> categorys )
       2         {
       3             var tree = new TreeProvider(CMSContext.CurrentUser);
       4             var updateNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
       5             updateNode.DocumentName = categorys[1][0];
       6             for (int i = 1; i < categorys[0].Length-1;i++ )
       7             {
       8                 updateNode.SetValue(categorys[0][i], categorys[1][i]);
       9             }
      10             DocumentHelper.UpdateDocument(updateNode, tree);
      11         }
      复制代码

      当然,还有很多节点的属性你可以修改,例子代码没有列出来。

    就以上的这些内容,基本可以去简单操作kentico cms中的content内容了,欢迎大家讨论。

    参考:http://devnet.kentico.com/Documentation.aspx

    珍惜作者劳动成果,如须转载,请说明出处。

     
     
    标签: kentico cmscontent
  • 相关阅读:
    php mysql基本操作
    php之curl的使用
    linux下操作php和apache
    ThinkPHP_目录结构和初始化
    ubuntu下计划任务cron的使用
    linux下操作mysql
    php操作csv文件
    HTML5基础一:常用布局标签
    liunx下shell脚本的创建和使用
    一个完整的ajax登陆实例
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3247142.html
Copyright © 2020-2023  润新知