我的工作在鏌鋣創建的網站上執行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