Page plugin development

Page plugin is an add-on to Kooboo CMS, and is responsible for making data source available for page access. It is similar to module, but while module contains user interface for both the backend and the frontend site, page plugin does not contain any UI.  Some of the uses of page plugin are:

  • Get data from remote service for users on the Page.
  • Submit a Page to add content OR send an email.
  • Other requests.

It is ok to write the data access code on the layout OR views, but it is not recommended in the MVC pattern. A better solution for such cases is to use the Page Plug-in to write the logic code into a custom assembly, then upload it into Kooboo CMS and use it in Pages or Views.
It is easy to develop a Page Plug-in. We have released the VS Project Template to help developers create Page Plug-in projects more eaisly. The "PagePluginSample.cs" in the project template is the same Page Plug-in. The brief of developing a Page Plug-in is implementing the interface of "IPagePlugin".

 public interface IPagePlugin     {         string Description { get; }           ActionResult Execute(Page_Context pageContext, PagePositionContext positionContext);

ActionResult HttpGet(Page_Context context, PagePositionContext positionContext);        ActionResult HttpPost(Page_Context context, PagePositionContext positionContext);

    }  NOTE: The HttpGet and HttpPost are new methods in Kooboo CMS 4.0. They will be executed corresponding to the HttpMethod(Get and Post).

Developing Page Plug-ins

  • Download Kooboo.CMS.PluginTemplate.vsi.
  • Double click the Kooboo.CMS.PluginTemplate.vsi to install the project templates into Visual Studio.
  • Create a Page plug-in project using the project template under "Visual C# -> Web".

  • Remove these three files: "AssemblyInitializer.cs","CustomContentEventSubscriber.cs","CustomSiteEventsSubscriber.cs".
  • Rename the "PagePluginSample" as your own plug-in name.
  • Write the logic code in the "Execute" method.

Using Page Plug-ins

  • Upload assembly of the Page Plug-in into Kooboo CMS Site. NOTE: Please also upload the dependency assemblies of the plugin assembly, otherwise you will encounter an "assembly not found" message at runtime.

  • Add the plugin into the Page or View. NOTE: The execution sequence at runtime will be the same for you to add the plugin into either Page or View.

 

The execution sequence of Page Plug-in
All the Page Plug-ins are added both in the Page and Views(The views added in the page, which are not using RenderView.) will be invoked in the controller. The sequence flow for the Page execution will be: Kooboo CMS Request Flow.jpg

The picture shows the Page Plug-ins will be invoked foremost the controller action.

  • When the "Execute" method returns a NOT-Null ActionResult value, the controller action will be returned without running the following code. For example: The plug-in want to return a JsonResult, JavascriptResult, ContentResult,FileResult etc...
  • When the "Execute" method returns a Null value, the controller action will continue to run the following and render the Page html. In this case, the developer can store the custom data into ViewData, which can be used in the Layout and Views.

 pageViewContext.ControllerContext.Controller.ViewBag.PluginData = "Hello plug-in";  
    By default, the page plugin will be invoked in all types of http requests, but you can filter by the http method to limit it to run only on specific types of requests. e.g:
    if (pageViewContext.ControllerContext.RequestContext.HttpContext.Request.HttpMethod.ToUpper() =="POST")   {     }

 Built-in Page Plug-ins
There are three types of Page Plug-ins built into Kooboo CMS.

  • AddTextContentPlugin, used to add content using the submission values.
  • UpdateTextContentPlugin, used to update text content using the submission values.
  • DeleteTextContentPlugin, used to delete text content.

Kooboo中怎么写Page Plugin -摘自官方文档的更多相关文章

  1. [Qt] 文本文件读写, 摘自官方文档

    Reading Files Directly The following example reads a text file line by line: QFile file("in.txt ...

  2. 别开心太早,Python 官方文档的翻译差远了

    近几天,很多公众号发布了 Python 官方文档的消息.然而,一个特别奇怪的现象就发生了,让人啼笑皆非. Python 文档的中文翻译工作一直是“默默无闻”,几个月前,我还吐槽过这件事<再聊聊P ...

  3. 教大家怎么看monaco-editor的官方文档

    最近业务中有用到浏览器在线编辑器,用的是monaco-editor,官网文档只在首页介绍了npm安装方式. 但其实还有另外一种<script>的引入方式,但是这种方式体现在API文档中,由 ...

  4. 微信小程序官方文档中表单组建button部分有关function(type)中type的个人理解

    官方文档关于button组件的简介 xml页面挺容易理解,但js部分起初对整体写的形式都不太理解,随着逐渐阅读代码基本理解了 xml页面代码: <button type="defaul ...

  5. 【AutoMapper官方文档】DTO与Domin Model相互转换(中)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  6. swift官方文档中的函数闭包是怎么理解的?

    官方文档中的16页: numbers.map({ (number: Int) -> Int in let result = * number return result }) 不知道这个怎么用, ...

  7. java中的方法引用(method reference)官方文档总结

    2017/7/5 转载写明出处:http://www.cnblogs.com/daren-lin/p/java-method-reference.html 今天要说的是java中的一项新特性,方法引用 ...

  8. 《SpringCloudDubbo开发日记》(一)Nacos连官方文档都没写好

    背景 现在的微服务框架一般分dubbo和springcloud两套服务治理体系,dubbo是基于zookeeper为注册中心,springcloud是基于eureka作为注册中心. 但是现在eurek ...

  9. 从官方文档中探索MySQL分页的几种方式及分页优化

    概览 相比于Oracle,SQL Server 等数据库,MySQL分页的方式简单得多了,官方自带了分页语法 limit 语句: select * from test_t LIMIT {[offset ...

随机推荐

  1. hdu 4358 Boring counting 离散化+dfs序+莫队算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358 题意:以1为根节点含有N(N <= 1e5)个结点的树,每个节点有一个权值(weight ...

  2. Mac操作系统常用快捷键

    复制:cmd+c      粘贴:cmd+v      剪切:先cmd+c,再cmd+opt+v 显示桌面:cmd+F3      切换输入法:cmd+space 打开Spotlight:ctrl+s ...

  3. cocos2dx3.4 分割plist图片

    如果想要修改一个plist文件新打包成plist,而此刻原来的小图都找不到了,那只能把plist分解了,代码如下: void UiManage::DecodePlist(string imgPath, ...

  4. Python标准库与第三方库详解(转载)

    转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%ac%ac%e4%b8%89%e6%96%b ...

  5. Automotive Security的一些资料和心得(7):AUTOSAR和Security

    1. 密码模块[1] 密码模块在Services Layer Configurable and common access to 密码子程序 硬件支持密码模块 2. 应用 应用和密码子程序分离 Cry ...

  6. PYTHON的CGIServer的进化

    按例程,一步一步理解如何从SOCKET,TCP,HTTP,CGIHTTP进化的. 最终,静态文件和脚本分享,且能处理FORM提交和展示. 下一步,到数据库??:) A,SOCKET #HTTPserv ...

  7. WINDOWS 2008 SERVER域用户自动登陆

    The user I wanted to auto-logon as didn’t have a password, this reg hack worked instead: HKEY_LOCAL_ ...

  8. linux-0.11内核 任务的堆栈切换

    http://blog.163.com/di_yang@yeah/blog/static/86118492201212534924900/ 一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆 ...

  9. easyui源码翻译1.32--Layout(布局)

    前言 使用$.fn.layout.defaults重写默认值对象.下载该插件翻译源码 布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的.每个边缘区域面板都可以通过拖 ...

  10. [jobdu]数组中出现次数超过一半的数字

    找到以后要再扫一遍确认. http://zhedahht.blog.163.com/blog/static/25411174201085114733349/ #include <iostream ...