修改已有模块

对视图层(ui)扩展 分享链接 /book/extension-dev/ext-ui-1335.html

作者:zentaoteam 最后编辑:石洋洋 于 2024-10-08 15:34:00 浏览量:2693


视图文件的扩展分为两种方式,一种是完全覆盖,第二种是通过钩子机制来扩展。

一、完全覆盖

视图文件的覆盖可以通过完全覆盖的方式来重新定义。比如我对bug模块的create页面进行扩展。原来的视图文件是存放在module/bug/ui/create.html.php。如果需要对其进行扩展,只需要将这个create.html.php拷贝到extension/custom/bug/ext/ui/create.html.php,然后对这个网页进行修改就可以了。

需要注意拷贝过去时候,包含路径相应改动。

二、通过钩子进行扩展

第一种方法比较简单,也比较直观,但有它的缺点,就是代码无法重用。假设后面版本有了新的改动之后,老版本的视图文件和新版本的程序就有可能不兼容。所以可以考虑通过钩子脚本来实现代码的重用。钩子脚本的命名规则为方法名.扩展名.html.hook.php。该钩子文件会在整个模板加载完之后加载,在里面可以执行相应的php代码。这样就提供了一种通过js来动态修改页面元素的机制,从而达到对页面元素的完全控制。

比如extension/custom/misc/ext/ui/view.test.html.hook.php


<?php
namespace zin;
query('button#toStory, a#createCase')->remove();

这段代码通过选择器移除掉button和a标签。注意:使用PHP编写的zin代码,会转义为js代码执行。


更详细的例子可以下载下方附近进行参考。

评论列表
📓
李艾桦 2025-05-21 10:41:02 回复
我按照您的思路尝试了 发现确实可以新增自定义字段,但是CSS等样式丢失了? 我又尝试把css等文件拷贝到ZenTao\app\zentao\extension\custom\story 发现还是无法生效
回复
需要确认一下是否引用的css文件位置不正确,可以在浏览器中查看一下源码和网络请求,判断一下请求的资源是否存在。扩展的代码里引用的样式文件路径肯定和module里引用路径不同的,可以排查确认一下。
🐭
2024-12-06 16:11:12 回复
你好,18版本有进行二次开发,升级20后,怎么兼容之前的二次开发,需要修改嘛?
回复
您好,升级前注意备份,包括数据库和二次开发的代码。升级后,原先二开的代码可能和新版本不兼容,需要重新二次开发做兼容。
回复
你好,请问一下模态要怎么用js打开,旧版本是url直接拼上onlybody=true就可以,但是现在的话加上这个参数还是相当于onlybody=false的效果
🎷
风度翩翩的橡皮擦 2024-12-04 13:29:52 回复
''需要注意的是拷贝过去时候,包含路径要做相应的改动。''这句话的意思是代码内部的路径要改动吗?
回复
这句话的意思是,需要根据扩展的界面判断方法属于哪个模块,比如涉及BUG的扩展,路径就要找到bug/ext 下,其他的界面要放到对应的方法名下面才会生效。
丁芝
高级客户经理
17663906485
1481227768
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。 问题反馈反馈点击这里,让我们聆听您的建议与反馈。