Tìm kiếm nhanh

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.

  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    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 nv4_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 bạn: 06/08/2016 11:40
  • thucvinharc

    thucvinharc thucvinharc Lê Thúc Vinh

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

     
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

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

     
    Lần sửa cuối bởi bạn: 04/07/2016 15:03
    hoanglongvnpt thích điều này.
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    Để 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 bạn: 15/07/2016 14:41
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    Để 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.
  • khicon038

    khicon038 Nguyễn Minh Hoàng

    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.

     
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đà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.
  • dotuyen

    dotuyen Đỗ Văn Tuyên

    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!

     
  • ngoctu2008

    ngoctu2008 Phạm Ngọc Tú

    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!

     

     
  • vanvuong2402

    vanvuong2402 Phạm Vương

    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
  • vanvuong2402

    vanvuong2402 Phạm Vương

    nghe tên như con gái vậy. BD chăng

     
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

     

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

     
  • ngoctu2008

    ngoctu2008 Phạm Ngọc Tú

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

     
  • caolaogia7

    caolaogia7 Bầu Đá

    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é.

     
  • anpy.ceo

    anpy.ceo David An

     

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

     
  • khicon038

    khicon038 Nguyễn Minh Hoàng

    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?

     
  • khicon038

    khicon038 Nguyễn Minh Hoàng

    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.

     
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

     

    ++ $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.
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

    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.
  • khicon038

    khicon038 Nguyễn Minh Hoàng

    $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