我的工作在镆铘创建的网站上执行PHP代码。我需要知道的是创建的任何资源时,我可以执行PHP代码,还可以编辑关联到创建的资源模板变量的方式。镆铘:创建任何资源时
0
A
回答
0
您可以使用plugin,设为在OnDocFormSave事件上运行做到这一点。此事件具有模式属性刚刚创建要保存的文件时会被设置为新 - 你可以做一个简单的检查了这对防止插件正在运行的每一个文件保存时间。
要为当前资源电视机值,这样做:
// get the required TV object by name (or id)
$tv = $modx->getObject('modTemplateVar',array('name'=>'tvName'));
// set the new value and save it
$tv->setValue($modx->resource->get('id'), $newValue);
$tv->save();
0
答案由okyanet是正确的,但我已经添加了对那些不熟悉镆铘细节。
创建一个插件,并将其配置为在两个系统事件'onBeforeDocFormSave'和'onDocFormSave'上执行。这两个事件只是在资源被保存之前和之后被触发。当资源被保存时,$模式变量是提供给你的插件,如果它是一个新的资源它的值是modSystemEvent :: MODE_NEW如果更新它的值是modSystemEvent:MODE_UPD
我写了一个要点,其中包括完整的代码示例:
https://gist.github.com/2768300
这个例子展示了如何通过目标switch语句,以及如何进一步针对“新”或“更新”无论哪种情况行动的状态。对于使用onBeforeDocFormSave事件,你可以简单地改变任何资源字段名与$资源 - >设置(“yourFieldname”)拦截和改变资源领域,它很容易。没有$资源 - >另存为这此事件后自动发生所需的()。
由于处理tvs的方式,使用onBeforeDocFormSave事件保存电视明显要困难得多,因此该示例显示了如何使用系统事件'onDocFormSave'更新电视。再次没有需要$ resource-> save(),因为当你调用setValue时立即保存tvs。
一个插件可以被设计为仅需要其中一个系统事件,但由于使用上述两种状态都有好处,并且有助于解释,所以我已经使用了这两个。
相关问题
- 1. 镆铘非www资源 - > WWW资源
- 2. 镆铘getResources显示未上市资源
- 3. 镆铘倒计时
- 4. 镆铘 - 用户个人资料照片
- 5. 镆铘getresources的foreach
- 6. 镆铘:占用资源展示儿童,而不是资源数量
- 7. 镆铘getResources显示子资源以及母公司层面的资源
- 8. 镆铘getResources:显示所有资源的id
- 9. 镆铘资源列表的复选框,为用户
- 10. 镆铘 - 问题与别名
- 11. 镆铘 - 为特定页面
- 12. 的if/else在镆铘
- 13. 镆铘埃沃:无法创建images文件夹
- 14. 创建在镆铘雷沃新文章不起作用
- 15. 镆铘雷沃:创建密码保护的网页
- 16. 镆铘插件:设置资源的createdby以匹配电视的价值
- 17. 镆铘革命:获得第二级子
- 18. 镆铘IF返回空白页
- 19. 镆铘革命乘法值车
- 20. 镆铘登录色彩风格
- 21. 镆铘革命的Wayfinder回空行
- 22. 镆铘:摘录条和解析瓦尔
- 23. 镆铘插件手动安装
- 24. 电视输出镆铘革命
- 25. 镆铘与minishop2查看所有类别
- 26. 镆铘MySQL的数组排序
- 27. 镆铘电子表格发出
- 28. 镆铘PHP与模板变量
- 29. 镆铘和PDO:用PHP变量查询
- 30. 意外的标记 - 镆铘革命2.2.9