本教程需要4.6.0及其以上版本使用(内部教程暂不公开使用)
Myfield.php是用于插件自定义字段的配置文件,例如内容系统中自定义模块字段、自定义栏目字段等等功能。
<?php // 自定义字段的支持函数 // 初始化信息 function myfield_init_xxxxxxxxx($relatedname, $relatedid) { $data = \Phpcmf\Service::M()->init(['table' => '表名'])->get($relatedid); if (!$data) { return dr_return_data(0, dr_lang('相关数据不存在(%s)', $relatedid)); } return dr_return_data(1, 'ok', [ 'data' => $data, 'name' => '某某字段', 'backurl' => '', // 返回uri地址 ]); } // 获取表名称 function myfield_tablename_xxxxxxxxx($field, $siteid, $relatedname, $relatedid) { $data = \Phpcmf\Service::M()->table('表名')->get($relatedid); if (!$data) { return; } return $field['ismain'] ? '自定义表前缀_'.$data['table'] : '自定义表前缀_'.$data['table'].'_data_{tableid}'; } // 执行sql function myfield_sql_xxxxxxxxx($sql, $ismain) { $table = \Phpcmf\Service::M()->dbprefix('自定义表前缀_'.\Phpcmf\Service::M('field')->data['table']); // 主表名称 if (!\Phpcmf\Service::M()->db->tableExists($table)) { return; } if ($ismain) { // 更新主表 格式: 站点id_名称 \Phpcmf\Service::M()->db->simpleQuery(str_replace('{tablename}', $table, $sql)); \Phpcmf\Service::M('field')->_table_field[] = $table; } else { for ($i = 0; $i < 200; $i ++) { if (!\Phpcmf\Service::M()->db->query("SHOW TABLES LIKE '".$table.'_data_'.$i."'")->getRowArray()) { break; } \Phpcmf\Service::M()->db->simpleQuery(str_replace('{tablename}', $table.'_data_'.$i, $sql)); //执行更新语句 \Phpcmf\Service::M('field')->_table_field[] = $table.'_data_'.$i; } } } // 字段是否存在 function myfield_field_xxxxxxxxx($name) { // 主表 $table = \Phpcmf\Service::M()->dbprefix('自定义表前缀_'.\Phpcmf\Service::M('field')->data['table']); $rt = \Phpcmf\Service::M('field')->_field_exitsts('id', $name, $table, SITE_ID); if ($rt) { return 1; } // 附表 $rt = \Phpcmf\Service::M('field')->_field_exitsts('id', $name, $table.'_data_0', SITE_ID); if ($rt) { return 1; } return 0; } // 更新缓存
function myfield_cache_xxxxxxxxx() {
}
自定义字段地址字符串:
dr_url("field/index", ["relatedname" => "xxxxxxxxx", "relatedid"=>9999某表数据的id号])
文档最后更新时间:2022-08-19 14:05:08