$db : Dùng để truy vấn vào csdl
$db_config : Dùng để xác định tiền tố của các bảng CSDL mặc định khi cài sẽ là nv4
$module_info : Dùng để xác định tên theme đang dùng ví dụ (default) và nhiều thành phần của mảng trong bảng này các bạn có thể var_dump($module_info) để biết thêm các thành phần khác của nó
$global_config : Dùng để xác định tên thêm mặc định, tên site, ... các bạn có thể var_dump( $global_config ) để có thêm các thành phần khác của nó
$site_mods : Dùng đễ xác định quyền, tên module hiện thời truy cập, bao gồm cả module_data, module_file... các bạn có thể var_dump( $global_config ) để biết thêm chi tiết
$block_config : Dùng để xuất nội dung từ hàm cấu hình của block
$nv_Request : Dùng để lấy thông tin từ các Request submit form
Phần 1: Hướng dẫn viết block theo theme
Để viết một block theo theme bạn cần xác định đường dẫn chứa file block của nó như sau:
Root/themes/theme_ban/blocks/ten_block.php
Root/themes/theme_ban/blocks/ten_block.ini
Root/themes/theme_ban/blocks/ten_block.tpl
Trong đó Root là đường dẫn tới file index.php của bộ mã nguồn Nukeviet
theme_ban: Là tên theme bạn đang sử dụng
ten_block: là block bạn sẽ tạo ra để sử dụng
Bước một: Cấu trúc ten_block như sau
global.tenbandat.php
Nếu block bạn muốn sử dụng có chức năng cấu hình bạn cần thêm một file tương tự với tên đuôi file là .ini
global.tenbandat.ini
Như vậy cấu trúc của bạn sẽ gồm 2 file
global.tenbandat.php
global.tenbandat.ini
Bước hai: Tạo nội dung cho các file
a. file global.tenbandat.php
<?php
/**
* @Project Block Test
* @Author DANGDINHTU (dlinhvan@gmail.com)
* @Copyright (C) 2014 Webdep24.com
* @Createdate 16:58 11/11/2014
*/
if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
if ( ! nv_function_exists( 'nv_block_test' ) )
{
function nv_block_test ( )
{
$content ='Chào thế giới';
return $content;
}
}
if ( defined( 'NV_SYSTEM' ) )
{
$content = nv_block_test( );
}
Bây giờ mình sẽ tiến hành tạo một block có chứa phần cấu hình. Bạn cần thêm các fuction cấu hình vào để nó có thể nhận diện được
<?php
/**
* @Project Block Test
* @Author DANGDINHTU (dlinhvan@gmail.com)
* @Copyright (C) 2014 Webdep24.com
* @Createdate 16:58 11/11/2014
*/
if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
if ( ! nv_function_exists( 'nv_block_test' ) )
{
function nv_block_config_test ( $module, $data_block, $lang_block )
{
$html = "";
$html .= "<tr>";
$html .= " <td>" . $lang_block['year'] . "</td>";
$html .= " <td><input type=\"text\" name=\"config_year\" size=\"50\" value=\"" . $data_block['year'] . "\"/></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= " <td>" . $lang_block['name'] . "</td>";
$html .= " <td><input type=\"text\" name=\"config_name\" size=\"50\" value=\"" . $data_block['name'] . "\"/></td>";
$html .= "</tr>";
return $html;
}
function nv_block_config_test_submit ( $module, $lang_block )
{
global $nv_Request;
$return = array();
$return['error'] = array();
$return['config'] = array();
$return['config']['year'] = $nv_Request->get_int( 'config_year', 'post', 0 );
$return['config']['name'] = $nv_Request->get_string( 'config_name', 'post', '' );
return $return;
}
function nv_block_test ( $block_config )
{
$content ='Xin chào ' . $block_config['name'] . '<br>';
$content .='Tuổi của bạn là: ' . $block_config['year'];
return $content;
}
}
if ( defined( 'NV_SYSTEM' ) )
{
$content = nv_block_test( $block_config );
}
<?xml version="1.0" encoding="utf-8"?>
<block>
<info>
<name>Block Hello World</name>
<author>DANG DINH TU</author>
<website>http://webdep24.com</website>
<description>Block Hello World</description>
</info>
<config>
<year>30</year>
<name>Tứ</name>
</config>
<datafunction>nv_block_config_test</datafunction>
<submitfunction>nv_block_config_test_submit</submitfunction>
<language>
<en>
<year>Year</year>
<name>Your name</name>
</en>
<vi>
<year>Tuổi</year>
<name>Tên bạn</name>
</vi>
</language>
</block>
sửa file global.tenbandat.php function nv_block_test
<?php
/**
* @Project Block Test
* @Author DANGDINHTU (dlinhvan@gmail.com)
* @Copyright (C) 2014 Webdep24.com
* @Createdate 16:58 11/11/2014
*/
if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
if ( ! nv_function_exists( 'nv_block_test' ) )
{
function nv_block_config_test ( $module, $data_block, $lang_block )
{
$html = "";
$html .= "<tr>";
$html .= " <td>" . $lang_block['year'] . "</td>";
$html .= " <td><input type=\"text\" name=\"config_year\" size=\"50\" value=\"" . $data_block['year'] . "\"/></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= " <td>" . $lang_block['name'] . "</td>";
$html .= " <td><input type=\"text\" name=\"config_name\" size=\"50\" value=\"" . $data_block['name'] . "\"/></td>";
$html .= "</tr>";
return $html;
}
function nv_block_config_test_submit ( $module, $lang_block )
{
global $nv_Request;
$return = array();
$return['error'] = array();
$return['config'] = array();
$return['config']['year'] = $nv_Request->get_int( 'config_year', 'post', 0 );
$return['config']['name'] = $nv_Request->get_string( 'config_name', 'post', '' );
return $return;
}
function nv_block_test ( $block_config )
{
global $module_info;
$xtpl = new XTemplate( 'global.tenbandat.tpl', NV_ROOTDIR . '/themes/' . $module_info['template'] . '/blocks' );
$xtpl->assign( 'YEAR', $block_config['year'] );
$xtpl->assign( 'NAME', $block_config['name'] );
$xtpl->parse( 'main' );
return $xtpl->text( 'main' );
}
}
if ( defined( 'NV_SYSTEM' ) )
{
$content = nv_block_test( $block_config );
}
<!-- BEGIN: main -->
<div>
Chào bạn: <strong>{NAME}</strong><br>
Tuổi của bạn là: <strong>{YEAR}</strong>
</div>
<!-- END: main -->
Như vậy bạn đã có một block theo đúng chuẩn của Nukeviet vấn đề của bạn ở đây là tùy biến nội dung trong hàm nv_block_test để có được những sản phẩm theo ý bạn muốn
0 Comments