易優cms目錄名稱與系統內建衝突,去掉限制方法詳解!

黄文Rex發表於2024-08-17

易優cms目錄名稱與系統內建衝突,去掉限制方法詳解!

第一步,遮蔽檢測檔案

檔案位置: \application\admin\controller\Arctype.php

找到程式碼病註釋掉

				if (!empty($post['dirname']) && !$this->arctypeLogic->dirname_unique($post['dirname'], $post['id'])) {
                    $arctype_is_del = Db::name('arctype')->where(['dirname'=>$post['dirname'], 'lang'=>$this->admin_lang])->value('is_del');
                    if (empty($arctype_is_del)) {
                        $this->error('目錄名稱與系統內建衝突,請更改!');
                    } else {
                        $this->error('目錄名稱與回收站裡的欄目衝突,請更改!');
                    }
                }

第二步, 雖然現取消了重複檢測, 但如果提交重複路徑, 系統會隨機加3個數字,繼續修改

檔案位置: \application\common\logic\ArctypeLogic.php

找到程式碼並註釋掉

        if (strval(intval($dirname)) == strval($dirname)) {
            if (preg_match('/^([0-9]+)$/i', $dirname)) {
                $dirname .= get_rand_str(3,0,0);
            } else {
                $dirname .= get_rand_str(3,0,2);
            }
        }
        $dirname = preg_replace('/(\s)+/', '_', $dirname);
        if (!$this->dirname_unique($dirname, $id, $newDirnameArr)) {
            $nowDirname = $dirname.get_rand_str(3,0,2);
            return $this->get_dirname($typename, $nowDirname, $id, $newDirnameArr);
        }

第三步, 截止目錄可以正常提交了, 但會報資料庫錯誤。

這一步, 需要進入資料庫管理, 執行sql語句。

alter table ey_arctype drop index dirname

執行結束後,就可以提交重複的目錄名稱了。

相關文章