Hướng dẫn viết module Nukeviet 4 - Phần 1

Thảo luận trong 'Coding' đăng bởi dangdinhtu, 26/06/2016 05:52.

  • YÊU CẦU NGƯỜI HỌC PHẢI BIẾT CƠ BẢN VỀ PHP, HTML, CSS

     KHÔNG CÓ KIẾN THỨC NỀN TẢNG THÌ MÌNH CÓ VIẾT GÌ BÊN DƯỚI CÁC BẠN CŨNG CHẲNG BIẾT GÌ ĐÂU Ạ

    Cấu trúc một module Nukeviet 4 đơn giản bao gồm các file thư mục như sau

    modules 

    ----sample 

    --------funcs 

    ------------main.php 

    ------------index.html 

    --------functions.php 

    --------version.php 

    --------index.html 

    config.ini

    Trong đó

    1. index.html là tệp tin rỗng dùng để dấu file tồn tại trong tất cả các thư mục của site

    2. funcs là thư mục chứa các file xử lý chính

    3. funcs/main.php là file xử lý chính hay còn gọi là trang chủ của module (bắt buộc)

    <?php
    
    /**
     * @Project NUKEVIET 4.x
     * @Author DANGDINHTU (dlinhvan@gmail.com)
     * @Copyright (C) 2016 nuke.vn. All rights reserved
     * @Blog  http://dangdinhtu.com
     * @License GNU/GPL version 2 or any later version
     * @Createdate  Sun, 26 Jun 2016 14:00:59 GMT
     */
    
    if( ! defined( 'NV_IS_MOD_SAMPLE' ) ) die( 'Stop!!!' );
    
    $page_title = $module_info['custom_title'];
    $key_words = $module_info['keywords'];
    // viet code o day
    
    $contents = 'Hello World !';
    include NV_ROOTDIR . '/includes/header.php';
    echo nv_site_theme( $contents );
    include NV_ROOTDIR . '/includes/footer.php';
    

    4. functions.php là tệp tin xử lý chính trước khi gọi đến các tệp tin php trong thư mục funcs thường được dùng để kiểm tra liên kết và các tham số truyền vào để kiểm tra việc gọi tới các file nào trong thư mục funcs hay các hàm dùng chung 

    <?php
    
    /**
     * @Project NUKEVIET 4.x
     * @Author DANGDINHTU (dlinhvan@gmail.com)
     * @Copyright (C) 2016 nuke.vn. All rights reserved
     * @Blog  http://dangdinhtu.com
     * @License GNU/GPL version 2 or any later version
     * @Createdate  Sun, 26 Jun 2016 14:00:59 GMT
     */
    
    if ( ! defined( 'NV_SYSTEM' ) ) die( 'Stop!!!' );
    
    define( 'NV_IS_MOD_SAMPLE', true );
    
    // viet code o day
    
    

    5 version.php là tệp tin khai báo các thông số của modules

    <?php
    
    /**
     * @Project NUKEVIET 4.x
     * @Author DANGDINHTU (dlinhvan@gmail.com)
     * @Copyright (C) 2016 nuke.vn. All rights reserved
     * @Blog  http://dangdinhtu.com
     * @License GNU/GPL version 2 or any later version
     * @Createdate  Sun, 26 Jun 2016 14:00:59 GMT
     */
    
    if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
    
    $module_version = array(  
    	'name' => 'Sample', 
    	'modfuncs' => 'main', 
    	'submenu' => '', 
    	'change_alias' => '',
    	'is_sysmod' => 0, 
    	'virtual' => 1,  
    	'version' => '4.0.29',  
    	'date' => 'Sun, 26 Jun 2016 14:00:59 GMT',  
    	'author' => 'DANGDINHTU (dlinhvan@gmail.com)',  
    	'uploads_dir' => array( ),  
    	'note' => '' 
    );

    6. config.ini là tệp tin khai báo tên ứng dụng cũng như tác giả

    [extension]
    id="0"
    type="module"
    name="Sample"
    version="4.0.29"
    
    [author]
    name="DANGDINHTU"
    email="dlinhvan@gmail.com"
    
    [note]
    text=""
    

    Sau khi tạo xong các tệp tin theo đúng cấu trúc trên bạn đã có một module mang tên sample  xuất ra câu chào "Hello World" tiến hành nén zip file này thành tms_module_sample.zip và cài đặt vào hệ thống theo

     

     

     

    phần 2 mình sẽ hướng dẫn các bác viết một module có sử dụng cơ sở dữ liệu nhưng vẫn ở mức cơ bản.

     

     

    Tệp đính kèm:

    Lần sửa cuối bởi một điều hành viên: 06/08/2016 11:40
  • RainMachineghg

    RainMachineghg zzusalmejtfkdswGP zzusalmesnbbzdnGP

    Xin ý tưởng tổng hợp lên hocmot.net nhé bác

     
  • Nhớ để bản quyền diễn đàn Nuke.vn nhé sad

     
    Lần sửa cuối bởi một điều hành viên: 04/07/2016 15:03
    hoanglongvnpt thích điều này.
  • Để xuất ra các nội dung khác bạn chỉ cần mở file modules/sample/main.php lên để tiến hành viết code gì tùy thích chẳng hạn như xuất ra một form nhập vào họ tên và gửi đi xuất ra câu chào bạn Đặng Đình Tứ chẳng hạn

    <?php
    
    /**
     * @Project NUKEVIET 4.x
     * @Author DANGDINHTU (dlinhvan@gmail.com)
     * @Copyright (C) 2016 nuke.vn. All rights reserved
     * @Blog  http://dangdinhtu.com
     * @License GNU/GPL version 2 or any later version
     * @Createdate  Sun, 26 Jun 2016 14:00:59 GMT
     */
    
    if( ! defined( 'NV_IS_MOD_SAMPLE' ) ) die( 'Stop!!!' );
    
    $page_title = $module_info['custom_title'];
    $key_words = $module_info['keywords'];
    
    //$contents = 'Hello World !';
    //viet code o day
    $contents = '';
    if( $nv_Request->isset_request('save', 'post' ) )
    {
    	$hoten = $nv_Request->get_title('hoten', 'post', '');
    	$contents.='Chào bạn ' . $hoten;
    }else{
    	$contents.= '<form action="" method="POST">';
    	$contents.= '<input type="text" class="form-control" value="" name="hoten" placeholder="Nhập họ tên">';
    	$contents.= '<input type="hidden" value="1" name="save">';
    	$contents.= '<div style="text-align:center;margin-top:10px"><input type="submit" class="btn btn-primary" value="Xuất tên" id="button-submit"></div>';
    	$contents.= '</form>';
    }
    include NV_ROOTDIR . '/includes/header.php';
    echo nv_site_theme( $contents );
    include NV_ROOTDIR . '/includes/footer.php';
    

     

     
    Lần sửa cuối bởi một điều hành viên: 15/07/2016 14:41
  • Để tìm hiểu về các phương thức lấy dữ liệu và trả về kết quả bạn có thể tham khảo

    $nv_Request

    Là biến chứa class request

    • Lấy mảng:
      $nv_Request ->get_typed_array ( $name, $mode = null, $type = null, $default = null );

       

    • Lấy chuỗi kí tự:
      $nv_Request ->get_string ( $name, $mode = null, $default = null, $decode = true );

       

    • Lấy số thực:
      $nv_Request ->get_float ( $name, $mode = null, $default = null, $decode = true );

       

    • Lấy số nguyên:
      $nv_Request ->get_int ( $name, $mode = null, $default = null, $decode = true );

       

    • Lấy giá trị logic:
      $nv_Request ->get_bool ( $name, $mode = null, $default = null, $decode = true );

       

    • Kiểm tra tồn tại của một request:
      $nv_Request ->isset_request ( $names, $mode, $all = true );

       

    • Xóa bỏ request:
      $nv_Request ->unset_request ( $names, $mode );

       

    • Lưu session:
      $nv_Request ->set_Session ( $name, $value = '' );

       

    • Lưu cookie:
      $nv_Request ->set_Cookie ( $name, $value = '', $expire = 0, $encode = true );

       

     
    ngoctu2008 nguyenductin nhimthulinh thích điều này.
  • Professionaloiv

    Professionaloiv zwusaymernjczqaGP xzusaymekmlgzguGP

    Có thể có một bài hướng dẫn về PHP trong Nuke không các bác? NHư thế vào những bài này sẽ dễ hiểu hơn.

     
  • hướng dẫn về php trong Nuke là sao bạn. Muốn xây dựng được một module bạn buộc phải hiểu căn bản về php không thì hướng dẫn này cũng vô ích thôi bạn ạ.

     
    pbxuyen thích điều này.
  • Rupertliart

    Rupertliart RupertliartMX RupertliartMX

    Làm videos về cái này đi bác Tứ ơi! chứ nói thế này anh em không chuyên khó hiểu quá. Làm videos bác nói được nhiều thứ hơn là viết!

     
    baophu thích điều này.
  • Tiếp đi bác! Giờ là một module có csdl! Mình đang mò, nên những bài viết cực kỳ ý nghĩa với mình!

     

     
  • Trả bài cho thầy Tứ nè. 

    nhưng mà không có dùng được không biết có bị sai cái gì không

     

     

    Tệp đính kèm:

    • 2.jpg
      2.jpg
      Dung lượng:
      14.93 KB
      Lượt xem:
      1
  • nghe tên như con gái vậy. BD chăng

     
  • Fortresssnl

    Fortresssnl xzusafmewnazxwpGP zvusafmegmqhc3dGP

     

    :D Nói ai đó thím ?

     
  • Tiếp đi bác Tứ! Đang chờ!

     
  • rãnh rỗi sinh nông nỗi làm 1 cái. Cài xong chưa thấy được trong admin đâu nên ai có thắc mắc thì xem xong đừng hỏi sao nó ko có xuất hiện. Ra site gõ thêm sample sau domain của bạn thì nó mới ra nhé.

     
  • sochibearlyday

    sochibearlyday sochibearlydayXG sochibearlydayXG

     

    E cũng nộp bài trên FB rồi nhé bác

     
  • Professionaloiv

    Professionaloiv zwusaymernjczqaGP xzusaymekmlgzguGP

    Bác giải thích thêm câu lệnh để anh em dễ hiểu. Em hiểu thế này đúng không?

    $contents = ''; // đầu tiên cái biến content gán cho nó rỗng?
    if( $nv_Request->isset_request('save', 'post' ) )// kiểm tra cái request đưa vào có rỗng không? 
    {
        $hoten = $nv_Request->get_title('hoten', 'post', ''); // biến hoten sẽ lấy giá trị được người dùng post từ form vào
        $contents.='Chào bạn ' . $hoten;// xuất ra câu chào bạn + với cái giá trị họ tên lấy được

     

    Còn cái else kia em không hiểu dc. Thấy chỉ là để xuất form cho người dùng nhập?

     
  • Professionaloiv

    Professionaloiv zwusaymernjczqaGP xzusaymekmlgzguGP

    Em cũng muốn thầy giải thích và cho thêm từng ví dụ ở câu lệnh để anh em dễ hiểu hơn.

     
  • Fortresssnl

    Fortresssnl xzusafmewnazxwpGP zvusafmegmqhc3dGP

     

    ++ $contents = ''; //  Định nghĩa biến contents.

    ++i f( $nv_Request->isset_request('save', 'post' ) )// kiểm tra xem có truyền Request vào file PHP đó không.

     

    ++ $hoten = $nv_Request->get_title('hoten', 'post', ''); // Định nghĩa biến $hoten : Lấy giá trị name là hoten, phương thức post, kiểu dữ liệu là text thuần (title), nếu không có thì trả về rỗng.

     

     ++ $contents.='Chào bạn ' . $hoten;// Nối tiếp vào biến $contents bên trên ( là dùng .= ) với giá trị của $hoten.

     

    ++ Còn cái else kia em không hiểu dc. Thấy chỉ là để xuất form cho người dùng nhập?

    => Anh có thể hiểu là nếu không có request nào truyền vào thì hiển thị form để người dùng nhập, bấm vào truyền dữ liệu và xuất ra câu "Chào bạn".

     
    xuanthuy235 khicon038 thích điều này.
  • Fortresssnl

    Fortresssnl xzusafmewnazxwpGP zvusafmegmqhc3dGP

    Còn mớ $nv_Request thì thường có thể hiểu như sau:

     

    $nv_Request ->get_xxx_data ( // tên trong form truyền vào, // Phương thức truyền vào là post hay get ( get là lấy từ URL) , // Loại dữ liệu, // Giá trị ban đầu mặc định);

    Còn các cái kia khác rõ nghĩa rồi, mình xem là hiểu :D

     
    xuanthuy235 thích điều này.
  • Professionaloiv

    Professionaloiv zwusaymernjczqaGP xzusaymekmlgzguGP

    $contents.= '<input type="hidden" value="1" name="save">';

    Câu này nghĩa là sao em, Kenny Nguyen?

     

Chia sẻ trang này

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây