本教程需要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
我来修改此文档(1) 不会操作怎么办?