手册:页面内容模型

来自MyaWiki.Org
跳转到导航 跳到搜索

其他语言:
OOJS UI图标 扩展 发展 •。标记扩展 •。解析器函数 •。钩子 •。专版 •。皮肤 •。魔法词 •。美国石油学会 •。内容模型

这个接线员引入媒体维基1.21允许您添加新的内容模型除了WiKiTeX.它使得Wiki页面可以由WiKiTeXT以外的数据组成,并以任何方式表示:例如:MulkDebug、RealStudioDeXT、ICALDENAR或自定义XML格式。这些内容模型的显示和编辑可以以自定义方式进行处理(例如不同的语法高亮显示,或全新的数据输入表单。

本页将介绍如何在扩展中创建新的内容模型。它假定对通用扩展开发实践有一些熟悉。有关需求的简要摘要,请参见总结部分在这一页的底部。

无意义的山羊“内容模型将用于示例。还可以检查数据段扩展,这是扩展:实例是的。

注册

首先,将内容模型的名称和处理程序类添加到您的扩展子以下内容:

“竞争者”以下内容: {
	“山羊”以下内容: “MiaWiki\ExpDe\GoATEXT \ GoAtAccess”
}
  • 左边的值是内容类型的名称,它可以是任何你想要的唯一字符串,它与五个内置的内容类型“WiKiTeXT”、“JavaScript”、“CSS”、“纯文本”和“JSON”一起存在。此值在诸如特殊:变更实体模型页面信息是的。
  • 右边值是扩展的类的完全限定名。接线员是的。

(注意,必须添加GoAtEng内容和GoATCopeStand)类。AutoLoad类(第三章)

可选内容模型常量

上面的“山羊”字符串是内容模型的ID(通常称为$MIDID在代码中,并且通常也被定义为常量。这些常数是为所有内置内容模型定义的,许多文档引用“CaltToMyMyxxxx”常数。如果你没有定义它们,这可能有点混乱。定义应该通过回调扩展项。例如:

进入扩展子以下内容:

“回调”以下内容: “MyaWiki\Extuti\GoAtExt\\HoKs::注册回调”

进入包含/Hook.PHP以下内容:

命名空间 MeavaWik\Reave\GoATEXT(二)
 钩子 {
    公众的 静止的 功能 注册回调() {
        //必须匹配在ExtExc.JSON的“CaseDeNelsLs”部分中使用的名称。
        定义 “山羊模型”我是说, “山羊” 
    }
}

你不必这样做,只需使用字符串即可。

将内容模型分配给页面

如果您希望整个wiki命名空间具有默认内容模型,您可以在Exeltual.JSON中定义它。

“命名空间”以下内容: [
	{
		“身份证”以下内容: 555个我是说,
		“常数”以下内容: “NS-山羊”我是说,
		“姓名”以下内容: “山羊”我是说,
		“子页面”以下内容: 我是说,
		“内容”以下内容: 我是说,
		“默认内容模型”以下内容: “山羊”
	}
	{
		“身份证”以下内容: 556个我是说,
		“常数”以下内容: “NSG”我是说,
		“姓名”以下内容: “山羊胡话”我是说,
		“子页面”以下内容: 我是说,
		“内容”以下内容: 我是说,
		“默认内容模型”以下内容: “WiKiTeXT”
	}
]

或者,如果希望通过在Wiki页面名称上添加一个准文件类型后缀来确定内容类型,可以使用可供选择的故障模型挂钩例如:

命名空间 MeavaWik\Reave\GoATEXT(二)
 钩子 {
	公众的 静止的 功能 OnCurrand的故障模型 标题 美元头衔我是说, &美元模型  {
		//任何页标题(在任何扩展)中以“山羊”结尾。
		如果  子序列 美元头衔>获得文本(二) - === “山羊”  {
			//这是前面定义的常数。
			美元模型 = 山羊模型(二)
			//如果更改内容模型,返回false。
			返回 (二)
		}
		/如果你不改变它,返回true。
		返回 (二)
	}
}

接线员

接下来要定义的是GoATSCONTENDENDELL类,在这里我们也指定这个内容类型将存储什么格式(在这种情况下,文本)。竞争者们对任何事情一无所知。特殊页面内容,但确定内容的一般结构和存储。

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

 哥特森德安德勒 延伸 接线员 {

	公众的 功能 β-构造 $MIDID = “山羊”  {
		起源::β-构造 $MIDID我是说, [ 内容格式文本 ] 
	}

	受保护的 功能 获取内容类() {
		返回 山羊膏::(二)
	}
}

内容处理程序也将实现SerialIZECONTION()和unSerialeCeCon()方法,但稍后我们将了解这些内容。

内容

GoAtEngress类是内容数据的表示,不知道任何有关页面、修订或存储在数据库中的内容。

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

 山羊膏 延伸 抽象内容 {

	公众的 功能 β-构造 $MIDID = “山羊”  {
		起源::β-构造 $MIDID 
	}

}

编辑表单

现在我们已经建立了骨架,我们想尝试编辑一只山羊。要做到这一点,我们创造GoatContentHandler::GATAcOcon OrrdScript()并指定要映射到哪些类的动作。首先,我们将处理“编辑”(对应于“?”)。Actudio =在URL中进行编辑。

	公众的 功能 获取动作覆盖() {
		返回 [
			“编辑” => 编辑动作::我是说,
		
	}

我们将创建新的EdgActudio类,基本上与核心编辑动作相同,但使用我们自己的编辑页面:

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

使用 编辑动作 作为 协同作用(二)

 编辑动作 延伸 协同作用 {

	公众的 功能 商展() {
		$此>使用事务时间限制();
		美元编辑页面 =  页面编辑 $此>第页 
		美元编辑页面>设置上下文标题 $此>获得所有权() 
		美元编辑页面>编辑();
	}

}

我们的新编辑页面类是动作发生的地方(借口双关语):

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

使用 页面编辑 作为 核心页面(二)
使用 OOI场布局(二)
使用 Oui\Twitter小部件(二)

 页面编辑 延伸 核心页面 {

	受保护的 功能 显示内容形式() {
		美元 = $此>上下文>获得输出();

		获取数据。
		美元名称 = $此>获取当前内容()>获取GoGATND();

		//创建表单。
		美元域名 =  现场布置
			 文本对象控件 [ “名字” => “山羊”我是说, “价值” => 美元名称 ] )我是说,
			[ “标签” => '名称'我是说, “对齐” => “左” ]
		
		美元>AdvHTML 美元域名 
	}

}

您现在应该能够编辑一个页面并查看您的表单。但是,当你把数据放入它,并点击“预览”,你会看到事情还没有完全工作,你没有得到输出,也不是你提交的文本再次显示的形式。

因此,我们必须重写“提交”操作,使用新的子动作类和添加“提交”=提交::对我们GoatContentHandler::GATAcOcon OrrdScript()方法我们的提交类应该与核心相同,但是继承我们的编辑动作。

显示

内容模型负责产生用于显示的任何需要的输出。这通常涉及到用它的数据和以某种方式产生HTML,以添加到解析器输出。

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

 山羊膏 延伸 \摘要内容 {

	受保护的 功能 填充输出
		标题 美元头衔我是说, 雷维德我是说, 帕塞斯期权 $选项我是说, 通用HTML我是说, 帕塞尔输出 &美元产量
	 {
		//例如$输出-> SETTATE($HTML);
	}

}

显示描述/文档

有时,您可能希望为具有自定义内容模型(如JSON)的文章显示一些信息或一些文档。其实没有系统消息在这些页面上方显示一些文本(除此之外)清除你的缓存上面只显示了JavaScript和CSS页面。你可能想看看PHAB:T206395详情请参阅。

比较修订

托多以下内容:

概要

要使用自定义编辑表单实现新的内容模型,请创建以下内容:

<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

 山羊膏 延伸 抽象内容  {
	公众的 功能 β-构造 $MIDID = “山羊”  {
		起源::β-构造$MIDID
	}
	受保护的 功能 填充输出 标题 美元头衔我是说, 雷维德我是说, PARS选项 $选项我是说, 通用HTML我是说, PARS输出 &美元产量 {}
	公众的 功能 获取文本文件() {}
	公众的 功能 GETWikTestExchange() {}
	公众的 功能 获取文本摘要 最大长度 = 250个  {}
	公众的 功能 获得所有权() {}
	公众的 功能 获取大小() {}
	公众的 功能 复制() {}
	公众的 功能 可数的 $HasLink = 无效的  {}
}
<?PHP

命名空间 MeavaWik\Reave\GoATEXT(二)

 哥特森德安德勒 延伸 接线员 {	
	公众的 功能 β-构造 $MIDID = 山羊模型我是说, 美元格式 = [“文本/ X山羊”]  {
		起源::β-构造$MIDID我是说, 美元格式
	}
	受保护的 功能 获取内容类() {}
	公众的 功能 支持指挥() {}
	公众的 功能 串行化内容 含量 美元内容我是说, $格式 = 无效的  {}
	公众的 功能 非序列化内容 $BLB我是说, $格式 = 无效的  {}
	公众的 功能 弥补内容() {}
	公众的 功能 获取动作覆盖() {}
}

另见