ExpressionEngine 1到ExpressionEngine 2使用nGen文件字段升级

Ann*_*irl 11 expressionengine

我即将对ExpressionEngine v1进行ExpressionEngine v1升级,并在nGen文件字段中存储大量数据.

升级前后需要采取哪些步骤才能使这些数据与EE2 SafeCracker文件字段一起正常工作?

Bra*_*lly 21

升级到EE2后,找到每个ex-nGen文件字段并将其字段类型更改为File,然后运行此SQL查询:

UPDATE exp_channel_data
SET field_id_X = CONCAT('{filedir_Y}', field_id_X)
WHERE field_id_X != ''
AND field_id_X NOT LIKE '{filedir_%'
Run Code Online (Sandbox Code Playgroud)

将"X"替换为"文件"字段的ID(可以从exp_channel_fields获取),将Y替换为nGen文件字段设置为的上载首选项ID.

如果在EE1中安装了Matrix,请升级到Matrix 2/EE2并对任何ex-nGen文件列执行相同操作,而是使用此SQL查询:

UPDATE exp_matrix_data
SET col_id_X = CONCAT('{filedir_Y}', col_id_X)
WHERE col_id_X != ''
AND col_id_X NOT LIKE '{filedir_%'
Run Code Online (Sandbox Code Playgroud)

同样,X ==您的Matrix列ID(您可以从exp_matrix_cols获取),Y ==您的上传首选项ID.

(当然,归功于Rob Sanchez.)


Cha*_*ell 6

我也为一个网站写了这个 - 这里没有矩阵支持,但是对于常规字段,它可以快速正确地工作.

对于数组,左列是您更改为文本预升级的每个字段ID,需要更改为文件升级后,右侧是您要附加到文件上载目录的filedir_X的X.领域

// Insert file upload directories

$array = array(
    '16' => '1',
    '22' => '1',
    '121' => '3',
    '58' => '1',
    '67' => '1',
    '68' => '1',
    '71' => '1',
    '76' => '1',
    '78' => '1',
    '94' => '1',
    '99' => '1',
    '108' => '3',
    '109' => '3',
    '110' => '3',
    '139' => '1'
    );

foreach($array as $field_id => $dir_id) {

    $q_entries = $this->EE->db->query("SELECT entry_id, field_id_{$field_id} as 'field' from exp_channel_data where field_id_{$field_id} != '' order by entry_id asc");

        if ($q_entries->num_rows() > 0) {

            echo '<h3>field_id_'.$field_id.'</h3>';

            foreach($q_entries->result_array() as $entry) {

                echo $entry['entry_id'];

                $filename = trim('{filedir_'.$dir_id.'}'.$entry['field']);

                echo ' - '.$filename.'<br/>';

                $data = array(
                    'field_id_'.$field_id => $filename,
                    );
                $sql = $this->EE->db->update_string('exp_channel_data', $data, "entry_id = '{$entry['entry_id']}'");
                $this->EE->db->query($sql);

            }
        }

}

echo 'done';
Run Code Online (Sandbox Code Playgroud)


Cre*_*ean 5

我有一篇关于此的博文,这篇博文基于我的经验和布兰登在答案中引用的主题.博客文章在这里.