Nội quy chuyên mục: - Khu vực này chỉ dành cho việc phát triển các theme và các tính năng mới cho hệ thống.
- Tên topic chính là tên Theme. Không được đặt tên Theme trùng với Block, Module, Theme đã có.
- Các thảo luận cho theme nào phải được gửi ngay tại topic mà người đầu tiên gửi nó lên.
- Vui lòng không gửi câu hỏi và các yêu cầu trợ giúp tại đây. Topic vi phạm nội quy sẽ bị xóa ngay lập tức!
#81761 gửi bởi kingscript
Ngày 04 Tháng 03 2011 , 03:14
Theo như hướng dẫn trên video cho Nukeviet 3 thì ở phiên bản 3.1 có một số thay đổi như sau.

Trong hướng dẫn có đoạn code TOP_MENU : themes\default\theme.php
Mã: Chọn hết

foreach ($site_mods as $modname => $modvalues)
{
if( ! empty( $modvalues['in_menu'])){
$module_current = ($modname = $module_name) ? ' class="current"' : '';
$array_menu = array(
"title" => $modvalues['custom_title'], "class" => $modname, "current" => $module_current
);
$xtpl -> assign('TOP_MENU', $array_menu);
$xtpl -> parse('main.top_menu');
}
}

Trong khi phiên bản Nukeviet 3.1 thì không có đoạn code này.
Vì vậy khi xem video hướng dẫn đến bước chèn code hiện thị menu
Mã: Chọn hết

<!-- BEGIN: top_menu -->
<li><a href="{TOP_MENU.link}">{TOP_MENU.title}</a></li>
<!-- END: top_menu -->


==> dẫn đến không hiện thị menu như hướng dẫn. Mình đã xem video hướng dẫn và gõ lại đoạn code trên vào theme.php cho nukeviet 3.1 nhưng còn thiếu phần chèn link cho Menu nên chỉ hiện menu như mong muốn nhưng chưa có link. Hy vọng đội code giúp viết phần link còn lại dùm hoặc hướng dẫn chèn lại.

Mã: Chọn hết
foreach ($site_mods as $modname => $modvalues)
{
if( ! empty( $modvalues['in_menu'])){
$module_current = ($modname = $module_name) ? ' class="current"' : '';
$array_menu = array(
"title" => $modvalues['custom_title'], "class" => $modname, "current" => $module_current[b][color=#FF0000], "link" => ...... <== Còn thiếu[/color][/b]
);
$xtpl -> assign('TOP_MENU', $array_menu);
$xtpl -> parse('main.top_menu');
}
}


Tiếp đến mình xem code trong theme.php của modern cũng như trong video hướng dẫn có đoạn code

Mã: Chọn hết
[b]$aryay_menu[/b] = array(
"title" => $modvalues['custom_title'], "class" => $modname, "current" => $module_current
);
$xtpl -> assign('TOP_MENU', [b]$aryay_menu[/b]);
$xtpl -> parse('main.top_menu');


$aryay_menu <=== đúng ra là array_menu thì phải, Nhưng cái này không bị lỗi là do tên biến trên và dưới giống nhau nên không sao. Hong biết có đúng là đội code viết sai phần này không ? Nói chung phần này sửa hay không vẫn không ảnh hưởng đến code đúng không vậy ?.
#81804 gửi bởi kingscript
Ngày 04 Tháng 03 2011 , 10:24
Sau khi nghiên cứu thì mình copy lại đoạn code đã bị xoá trong video hướng dẫn chèn Menu vào Template.
Lúc này thì Menu đã được chèn vào template. Nhưng chưa có hiện được sub menu.

Có một điều là trong hướng dẫn không có đoạn code đó mà vẫn hiện được Menu. Block Menusite cũng hiện được menu. Nhưng khi copy code từ Block Menu Site vào template không hiện được Menu.

Đội code có thể giải thích nguyên lý hoạt động của Top_Menu trong phiên bản mới được không ?