[Module news] Hướng dẫn thêm ảnh minh họa tại khu vực đăng tin thành viên

Thứ tư - 12/07/2017 19:06
Vì nhiều lý do, module news hiện tại chưa cho phép tải hình minh họa khi đăng tin tại khu vực giành cho thành viên site. Hướng dẫn này giúp bạn bổ sung tính năng này nếu có nhu cầu

Với thay đổi này, khu vực đăng tin của thành viên sẽ được trang bị thêm nút "Chọn hình minh họa". Ảnh sau khi upload sẽ được lưu vào thư mục uploads đúng theo cấu hình module news.

thêm ảnh minh họa module news nukeviet
Nút chọn ảnh minh họa tại khu vực đăng tin của thành viên

 

Sửa modules/news/funcs/content.php

Tìm và xóa (khoảng dòng 265)
// Xu ly anh minh hoa
$rowcontent['homeimgthumb'] = 0;
if (! nv_is_url($rowcontent['homeimgfile']) and nv_is_file($rowcontent['homeimgfile'], NV_UPLOADS_DIR . '/' . $module_upload)) {
    $lu = strlen(NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/');
    $rowcontent['homeimgfile'] = substr($rowcontent['homeimgfile'], $lu);
    if (is_file(NV_ROOTDIR . '/' . NV_FILES_DIR . '/' . $module_upload . '/' . $rowcontent['homeimgfile'])) {
        $rowcontent['homeimgthumb'] = 1;
    } else {
        $rowcontent['homeimgthumb'] = 2;
    }
} elseif (nv_is_url($rowcontent['homeimgfile'])) {
    $rowcontent['homeimgthumb'] = 3;
} else {
    $rowcontent['homeimgfile'] = '';
}

Tìm
if ($rowcontent['id'] == 0) {
Thêm bên trên
$fileupload = '';
if (isset($_FILES['upload_fileupload']) and is_uploaded_file($_FILES['upload_fileupload']['tmp_name'])) {

$username_alias = defined('NV_IS_USER') ? change_alias($user_info['username']) : 'guest';
$array_structure_image = array();
$array_structure_image[''] = $module_upload;
$array_structure_image['Y'] = $module_upload . '/' . date('Y');
$array_structure_image['Ym'] = $module_upload . '/' . date('Y_m');
$array_structure_image['Y_m'] = $module_upload . '/' . date('Y/m');
$array_structure_image['Ym_d'] = $module_upload . '/' . date('Y_m/d');
$array_structure_image['Y_m_d'] = $module_upload . '/' . date('Y/m/d');
$array_structure_image['username'] = $module_upload . '/' . $username_alias;

$array_structure_image['username_Y'] = $module_upload . '/' . $username_alias . '/' . date('Y');
$array_structure_image['username_Ym'] = $module_upload . '/' . $username_alias . '/' . date('Y_m');
$array_structure_image['username_Y_m'] = $module_upload . '/' . $username_alias . '/' . date('Y/m');
$array_structure_image['username_Ym_d'] = $module_upload . '/' . $username_alias . '/' . date('Y_m/d');
$array_structure_image['username_Y_m_d'] = $module_upload . '/' . $username_alias . '/' . date('Y/m/d');

$structure_upload = isset($module_config[$module_name]['structure_upload']) ? $module_config[$module_name]['structure_upload'] : 'Ym';
$currentpath = isset($array_structure_image[$structure_upload]) ? $array_structure_image[$structure_upload] : '';

if (file_exists(NV_UPLOADS_REAL_DIR . '/' . $currentpath)) {
    $upload_real_dir_page = NV_UPLOADS_REAL_DIR . '/' . $currentpath;
} else {
    $upload_real_dir_page = NV_UPLOADS_REAL_DIR . '/' . $module_upload;
    $e = explode('/', $currentpath);
    if (!empty($e)) {
        $cp = '';
        foreach ($e as $p) {
            if (!empty($p) and !is_dir(NV_UPLOADS_REAL_DIR . '/' . $cp . $p)) {
                $mk = nv_mkdir(NV_UPLOADS_REAL_DIR . '/' . $cp, $p);
                if ($mk[0] > 0) {
                    $upload_real_dir_page = $mk[2];
                    try {
                        $db->query("INSERT INTO " . NV_UPLOAD_GLOBALTABLE . "_dir (dirname, time) VALUES ('" . NV_UPLOADS_DIR . "/" . $cp . $p . "', 0)");
                    } catch (PDOException $e) {
                        trigger_error($e->getMessage());
                    }
                }
            } elseif (!empty($p)) {
                $upload_real_dir_page = NV_UPLOADS_REAL_DIR . '/' . $cp . $p;
            }
            $cp .= $p . '/';
        }
    }
    $upload_real_dir_page = str_replace('\\', '/', $upload_real_dir_page);
}

$currentpath = str_replace(NV_ROOTDIR . '/', '', $upload_real_dir_page);
$uploads_dir_user = NV_UPLOADS_DIR . '/' . $module_upload;
if (!defined('NV_IS_SPADMIN') and strpos($structure_upload, 'username') !== false) {
    $array_currentpath = explode('/', $currentpath);
    if ($array_currentpath[2] == $username_alias) {
        $uploads_dir_user = NV_UPLOADS_DIR . '/' . $module_upload . '/' . $username_alias;
    }
}

$upload = new NukeViet\Files\Upload(array('images'), $global_config['forbid_extensions'], $global_config['forbid_mimes'], $global_config['nv_max_size'], NV_MAX_WIDTH, NV_MAX_HEIGHT);
$upload_info = $upload->save_file($_FILES['upload_fileupload'], NV_ROOTDIR . '/' . $currentpath, false);
@unlink($_FILES['upload_fileupload']['tmp_name']);
if (empty($upload_info['error'])) {
    mt_srand((double) microtime() * 1000000);
    $maxran = 1000000;
    $random_num = mt_rand(0, $maxran);
    $random_num = md5($random_num);
    $nv_pathinfo_filename = nv_pathinfo_filename($upload_info['name']);
    $new_name = NV_ROOTDIR . '/' . $currentpath . '/' . $nv_pathinfo_filename . '.' . $random_num . '.' . $upload_info['ext'];
    $rename = nv_renamefile($upload_info['name'], $new_name);
    if ($rename[0] == 1) {
        $fileupload = $new_name;
    } else {
        $fileupload = $upload_info['name'];
    }
    @chmod($fileupload, 0777);

    // tạo thumb
    nv_create_thumb(str_replace(NV_ROOTDIR . '/', '', $fileupload));

    $rowcontent['homeimgfile'] = str_replace(NV_ROOTDIR, '', $fileupload);
} else {
    $is_error = true;
    $error[] = $upload_info['error'];
}
unset($upload, $upload_info);
}

$rowcontent['homeimgthumb'] = 0;
if (! nv_is_url($rowcontent['homeimgfile']) and nv_is_file($rowcontent['homeimgfile'], NV_UPLOADS_DIR . '/' . $module_upload)) {
$lu = strlen(NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/');
$rowcontent['homeimgfile'] = substr($rowcontent['homeimgfile'], $lu);
if (is_file(NV_ROOTDIR . '/' . NV_FILES_DIR . '/' . $module_upload . '/' . $rowcontent['homeimgfile'])) {
    $rowcontent['homeimgthumb'] = 1;
} else {
    $rowcontent['homeimgthumb'] = 2;
}
} elseif (nv_is_url($rowcontent['homeimgfile'])) {
$rowcontent['homeimgthumb'] = 3;
} else {
$rowcontent['homeimgfile'] = '';
}

Tìm (khoảng dòng 591)
$rowcontent['homeimgfile'] = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/' . $rowcontent['homeimgfile'];
Thêm lên trên
if(file_exists(NV_ROOTDIR . '/' . NV_ASSETS_DIR . '/' . $module_upload . '/' . $rowcontent['homeimgfile'])){
    $rowcontent['homeimgthumb'] = NV_BASE_SITEURL . NV_ASSETS_DIR . '/' . $module_upload . '/' . $rowcontent['homeimgfile'];
}

Tìm (khoảng dòng 526)
$xtpl->assign('HTMLBODYTEXT', $htmlbodyhtml);

Thêm bên dưới
if(!empty($rowcontent['homeimgthumb'])){
    $xtpl->parse('main.homeimgthumb');
}


Sửa modules/news/functions.php

Thêm cuối file
 

/**
 * nv_create_thumb()
 *
 * @param mixed $fileName            
 * @return
 *
 */
function nv_create_thumb($fileName)
{
    global $db;

    $array_thumb_config = array();

    $sql = 'SELECT * FROM ' . NV_UPLOAD_GLOBALTABLE . '_dir ORDER BY dirname ASC';
    $result = $db->query($sql);
    while ($row = $result->fetch()) {
        $array_dirname[$row['dirname']] = $row['did'];
        if ($row['thumb_type']) {
            $array_thumb_config[$row['dirname']] = $row;
        }
    }
    unset($array_dirname['']);

    if (preg_match('/^' . nv_preg_quote(NV_UPLOADS_DIR) . '\/(([a-z0-9\-\_\/]+\/)*([a-z0-9\-\_\.]+)(\.(gif|jpg|jpeg|png|bmp|ico)))$/i', $fileName, $m)) {
        $viewFile = NV_FILES_DIR . '/' . $m[1];

        if (file_exists(NV_ROOTDIR . '/' . $viewFile)) {
            $size = @getimagesize(NV_ROOTDIR . '/' . $viewFile);
            return array(
                $viewFile,
                $size[0],
                $size[1]
            );
        } else {
            $m[2] = rtrim($m[2], '/');

            if (isset($array_thumb_config[NV_UPLOADS_DIR . '/' . $m[2]])) {
                $thumb_config = $array_thumb_config[NV_UPLOADS_DIR . '/' . $m[2]];
            } else {
                $thumb_config = $array_thumb_config[''];
                $_arr_path = explode('/', NV_UPLOADS_DIR . '/' . $m[2]);
                while (sizeof($_arr_path) > 1) {
                    array_pop($_arr_path);
                    $_path = implode('/', $_arr_path);
                    if (isset($array_thumb_config[$_path])) {
                        $thumb_config = $array_thumb_config[$_path];
                        break;
                    }
                }
            }

            $viewDir = NV_FILES_DIR;
            if (! empty($m[2])) {
                if (! is_dir(NV_ROOTDIR . '/' . $m[2])) {
                    $e = explode('/', $m[2]);
                    $cp = NV_FILES_DIR;
                    foreach ($e as $p) {
                        if (is_dir(NV_ROOTDIR . '/' . $cp . '/' . $p)) {
                            $viewDir .= '/' . $p;
                        } else {
                            $mk = nv_mkdir(NV_ROOTDIR . '/' . $cp, $p);
                            if ($mk[0] > 0) {
                                $viewDir .= '/' . $p;
                            }
                        }
                        $cp .= '/' . $p;
                    }
                }
            }
            $image = new NukeViet\Files\Image(NV_ROOTDIR . '/' . $fileName, NV_MAX_WIDTH, NV_MAX_HEIGHT);
            if ($thumb_config['thumb_type'] == 4) {
                $thumb_width = $thumb_config['thumb_width'];
                $thumb_height = $thumb_config['thumb_height'];
                $maxwh = max($thumb_width, $thumb_height);
                if ($image->fileinfo['width'] > $image->fileinfo['height']) {
                    $thumb_config['thumb_width'] = 0;
                    $thumb_config['thumb_height'] = $maxwh;
                } else {
                    $thumb_config['thumb_width'] = $maxwh;
                    $thumb_config['thumb_height'] = 0;
                }
            }
            if ($image->fileinfo['width'] > $thumb_config['thumb_width'] or $image->fileinfo['height'] > $thumb_config['thumb_height']) {
                $image->resizeXY($thumb_config['thumb_width'], $thumb_config['thumb_height']);
                if ($thumb_config['thumb_type'] == 4) {
                    $image->cropFromCenter($thumb_width, $thumb_height);
                }
                $image->save(NV_ROOTDIR . '/' . $viewDir, $m[3] . $m[4], $thumb_config['thumb_quality']);
                $create_Image_info = $image->create_Image_info;
                $error = $image->error;
                $image->close();
                if (empty($error)) {
                    return array(
                        $viewDir . '/' . basename($create_Image_info['src']),
                        $create_Image_info['width'],
                        $create_Image_info['height']
                    );
                }
            } elseif (copy(NV_ROOTDIR . '/' . $fileName, NV_ROOTDIR . '/' . $viewDir . '/' . $m[3] . $m[4])) {
                $return = array(
                    $viewDir . '/' . $m[3] . $m[4],
                    $image->fileinfo['width'],
                    $image->fileinfo['height']
                );
                $image->close();
                return $return;
            } else {
                return false;
            }
        }
    } else {
        $size = @getimagesize(NV_ROOTDIR . '/' . $fileName);
        return array(
            $fileName,
            $size[0],
            $size[1]
        );
    }
    return false;
}

 

Sửa themes/default/modules/news/content.tpl

Tìm

<form action="{CONTENT_URL}" name="fsea" method="post" id="fsea" class="form-horizontal">


Thay bằng

<form action="{CONTENT_URL}" name="fsea" method="post" id="fsea" class="form-horizontal" enctype="multipart/form-data">


Tìm (khoảng dòng 54)

<div class="form-group">
    <label class="col-sm-4 control-label">{LANG.content_homeimg}</label>
    <div class="col-sm-20">
        <input class="form-control" name="homeimgfile" id="homeimg" value="{DATA.homeimgfile}" type="text" />
    </div>
</div>


Thay bằng

<div class="form-group">
    <label class="col-sm-4 control-label"><strong>{LANG.content_homeimg}</strong></label>
    <div class="col-sm-20">
        <div class="input-group">
            <input type="text" class="form-control" id="file_name" disabled>
            <span class="input-group-btn">
                <button class="btn btn-default" onclick="$('#upload_fileupload').click();" type="button">
                    <em class="fa fa-folder-open-o fa-fix">&nbsp;</em> {LANG.file_selectfile}
                </button> </span>
        </div>
        <input type="file" name="upload_fileupload" id="upload_fileupload" style="display: none" />
        <input type="hidden" name="homeimgfile" value="{DATA.homeimgfile}" />

        <!-- BEGIN: homeimgthumb -->
        <img style="margin-top: 10px" src="{DATA.homeimgthumb}" class="img-thumbnail" />
        <!-- END: homeimgthumb -->

        <script type="text/javascript">
            $('#upload_fileupload').change(function(){
                 $('#file_name').val($(this).val().match(/[-_\w]+[.][\w]+$/i)[0]);
            });
        </script>
    </div>
</div>

Tổng số điểm của bài viết là: 21 trong 6 đánh giá

Xếp hạng: 3.5 - 6 phiếu bầu
Click để đánh giá bài viết
Rao vặt Đà Nẵng là công cụ mới giúp bạn dễ dàng mang thông tin đến với người xem. Qua đây người dùng có thể đăng tin miễn phí, về các chủ đề như rao vặt, việc làm Đà Nẵng,... lên website mà không phát mất một loại phí nào. 

  Ý kiến bạn đọc

Trung tâm ứng dụng NukeViet
Ghi rõ nguồn khi sao chép thông tin từ website này.

Powered by NukeViet - a product of VINADES.,JSC