Nội quy chuyên mục: - Chuyên mục này chỉ sử dụng cho việc chia sẻ các tài liệu và hướng dẫn, vui lòng không đặt câu hỏi tại đây. Các thảo luận có liên quan vui lòng gửi đúng topic.
- Các tài liệu chính thức được cung cấp tại http//wiki.nukeviet.vn/technical_manual
#62377 gửi bởi laser
Ngày 21 Tháng 08 2010 , 15:14
Tổng quan về block cho NukeViet 3.0
Hệ thống NukeViet 3.0 chia làm 2 loại block:
    - Block Global: sử dụng chung cho toàn bộ site, ở mọi vị trí. Block loại này hiện có 4 kiểu: File, Khối quảng cáo, Dạng HTML, Dạng lấy từ RSS.
    Block Global kiểu file được đặt trong thư mục \includes\blocks\
    Tên file block được đặt theo kiểu global.block_name.php, trong đó block_name là tên block, được sử dụng các chữ thường, số và ký tự "_" trong bảng chữ cái latin.
    - Block của module: chỉ sử dụng được tại module đó. Block loại này là block dạng file, được đặt trong thư mục block của module: \modules\module_name\blocks\
    Tên file block được đặt theo kiểu module.block_name.php, trong đó block_name là tên block, được sử dụng các chữ thường, số và ký tự "_" trong bảng chữ cái latin.
Nếu các block trên muốn sử dụng các giao diện riêng thì phần giao diện cho nó được đặt ở đây: \themes\theme_name\blocks\
Các mẫu giao diện chung cho block ở mỗi theme được đặt ở đây: \themes\theme_name\layout\

Chú ý: Từ NukeViet 3.1, Block Global của module có thể đặt trong thư mục block của module. Chuẩn tên không thay đổi.

Nâng cấp các block của NukeViet 2.0 sử dụng cho NukeViet 3.0:

Nói chung, các block của NukeViet 2.0 mà không đọc vào database thì có thể sử dụng chung cho NukeViet 3.0 chỉ với một chút sửa đổi. cụ thể như sau.
Ví dụ tôi có block block-thoitiet_HN_HP_HCM.php của NukeViet 2.0 như sau:
Mã: Chọn hết
<?php

if ((!defined('NV_SYSTEM')) AND (!defined('NV_ADMIN'))) {
Header("Location: ../index.php");
exit;
}
$content = "<!-- http://xaydungcauduong.net -->";
$content .= "<p>Hà Nội<br><img alt=\"Thời tiết thủ đô Hà Nội\" border=\"0\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48820.gif\" height=41 width=127></p>";
$content .= "";
$content .= "<p>Hải Phòng<br><IMG height=41 alt=\"Thời tiết Bạch Long Vĩ, Hải Phòng\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48839.gif\" width=127></p>";
$content .= "";
$content .= "<p>TP.HCM<br><img alt=\"Thời tiết TP. Hồ Chí Minh\" border=\"0\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48900.gif\" height=41 width=127></p>";
$content .= "";
$content .= "<!-- code by http://xaydungcauduong.net -->";
?>

Tôi sẽ bỏ đi đoạn:
Mã: Chọn hết
if ((!defined('NV_SYSTEM')) AND (!defined('NV_ADMIN'))) {
Header("Location: ../index.php");
exit;
}
và thay vào đó đoạn code:

Mã: Chọn hết
if ( ! defined( 'NV_SYSTEM' ) ) die( 'Stop!!!' );

Đoạn code còn lại là:
Mã: Chọn hết
<?php
/**
* @Project NUKEVIET 3.0
* @Author VINADES.,JSC (contact@vinades.vn)
* @Copyright (C) 2010 VINADES., JSC. All rights reserved
* @Createdate 3/25/2010 18:6
*/
if ( ! defined( 'NV_SYSTEM' ) ) die( 'Stop!!!' );

$content = "<!-- http://xaydungcauduong.net -->";
$content .= "<p>Hà Nội<br><img alt=\"Thời tiết thủ đô Hà Nội\" border=\"0\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48820.gif\" height=41 width=127></p>";
$content .= "";
$content .= "<p>Hải Phòng<br><IMG height=41 alt=\"Thời tiết Bạch Long Vĩ, Hải Phòng\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48839.gif\" width=127></p>";
$content .= "";
$content .= "<p>TP.HCM<br><img alt=\"Thời tiết TP. Hồ Chí Minh\" border=\"0\" ";
$content .= "src=\"http://banners.wunderground.com/banner/gizmotimetemp_both/language/english/global/stations/48900.gif\" height=41 width=127></p>";
$content .= "";
$content .= "<!-- code by http://xaydungcauduong.net -->";
?>

Sau đó tôi lưu lại file này với tên global.thoitiet_hn_hp_hcm.php và đặt nó tại \includes\blocks\

Cuối cùng tôi chỉ việc vào Admin Control Panel của NukeViet 3.0, tạo block mới kiểu file và trỏ tới block này.

Chú ý:
  1. Block có ảnh hưởng trực tiếp đến giao diện site. NukeViet 3 sử dụng chuẩn xHTML 1.0 và CSS 1.1 vì vậy bạn cần kiểm tra để hợp chuẩn bằng cách click vào nút valid xHTMLCSS có ở theme mặc định, tránh vì một vài block mà phá vỡ chuẩn mực giao diện của site.
  2. Vì NukeViet 3.0 có hỗ trợ rewrite nên nếu block trong của bạn sử dụng các tệp tin từ website hoặc có link là đường dẫn tương đối thì phải chèn vào đầu mỗi đường dẫn tương đối đoạn code:
    Mã: Chọn hết
    /


    / sẽ chỉ ra địa chỉ đường dẫn một cách chính xác khi bạn phải duyệt qua URL ảo do rewrite tạo ra. Lưu ý là đằng sau / không có gạch chéo nào cả, ví dụ tôi cài NukeViet 3 tại thư mục gốc của tên miền http://nukeviet.vn, khi muốn chỉ đến trang chủ website (file index.php) tôi sẽ phải ghi địa chỉ link như sau:
    Mã: Chọn hết
    /index.php

Mọi nẻo đường đều dẫn tới tương lai!
#62449 gửi bởi laser
Ngày 22 Tháng 08 2010 , 06:31
Huetrang đã viết:Sao mình copy một block của một module bất kỳ làm block global đều không được nhỉ (đã đổi tên)?

:-SS ai xui bạn làm thế? Nếu thế thì cứ là block thì cho hết vào 1 chỗ chứ làm ra cái block cho module làm gì cho nó mất công???

Block cho module là của module, không có chuyện đổi tên thôi là được. Nguyên nhân: Vì block của module chủ yếu là kết nối vào CƠ SỞ DỮ LIỆU của module và sử dụng những tài nguyên mà chỉ khi module được gọi ra thì nó mới được thực thi. Mục đích của block cho module là giúp cho module có thể tùy biến bố cục giao diện được ở mức cao nhất.

Mọi nẻo đường đều dẫn tới tương lai!
#62456 gửi bởi hoandateh
Ngày 22 Tháng 08 2010 , 07:45
Huetrang đã viết:Sao mình copy một block của một module bất kỳ làm block global đều không được nhỉ (đã đổi tên)?

Phải sửa trong code chứ.
Như mình cũng mới thử sửa blocks haederline thành global
Demo
#62485 gửi bởi huetrang
Ngày 22 Tháng 08 2010 , 10:37
laser đã viết:
Huetrang đã viết:Sao mình copy một block của một module bất kỳ làm block global đều không được nhỉ (đã đổi tên)?

:-SS ai xui bạn làm thế? Nếu thế thì cứ là block thì cho hết vào 1 chỗ chứ làm ra cái block cho module làm gì cho nó mất công???

Block cho module là của module, không có chuyện đổi tên thôi là được. Nguyên nhân: Vì block của module chủ yếu là kết nối vào CƠ SỞ DỮ LIỆU của module và sử dụng những tài nguyên mà chỉ khi module được gọi ra thì nó mới được thực thi. Mục đích của block cho module là giúp cho module có thể tùy biến bố cục giao diện được ở mức cao nhất.


Ý mình không phải vậy, mà copy vào include/blocks rồi mà vào admin không thấy nó hiện tên lên để chọn cơ :-/
#62565 gửi bởi huetrang
Ngày 23 Tháng 08 2010 , 00:44
laser đã viết:@Huetrang, cho xem file block của bạn nào?


Híc, có chút lỗi, mình sửa được rồi, nhưng cho hỏi: ở block_headline hàm $global_array_cat[$arr_catid[0]]['alias'] sử dụng thế nào thế, mình chuyển block đó thành global nhưng link đều bị thiếu catid (alias) ở các mocule không phải là news

[url]news//Cong-bo-du-an-NukeViet-3-0-sau-1-thang-ra-mat-VINADES-JSC-2/[/url]