2012-03-26 22 views
5

Tôi đang sử dụng Joomla 2.5 để tạo một thành phần đặc biệt được thực hiện từ giao diện người dùng.Làm thế nào để gọi trình đơn xây dựng lại từ thành phần front-end tùy chỉnh trong Joomla?

Thành phần này phân tích tập tin xml để xây dựng đơn Joomla, tôi đang thực hiện INSERT INTO #__menu truy vấn, nhưng tôi lại 0s cho lftrgt lĩnh vực.

Thực đơn đang được xây dựng rất lộn xộn, và khi tôi nhấp Rebuild nút back-end mọi thứ trông hoàn hảo sau đó, đường, lftrgt lĩnh vực đang được điền một cách chính xác.

Tôi đã dành 2 ngày cố gắng để thực hiện xây dựng lại nhiệm vụ từ bộ điều khiển và mô-đun phần front-end của tôi, tôi đã thậm chí cố gắng sử dụng jimport ('joomla.database.tablenested') nhưng tôi thiếu PHP kiến thức OOP không giúp tôi thực hiện một cách chính xác xây dựng lại chức năng ...

điều cuối cùng tôi đã viết là thế này:

jimport('joomla.database.tablenested'); 
class BSImportModelBSImport extends JModel 
{ 
    ... 
    function theimport() 
    { 
    ... 
    $db =& JFactory::getDBO(); 
    $menu = new JTableNested('Menu', 'id',&$db); 
    return $menu->rebuild(); 
    } 
} 

Xin đừng ném đá vào đầu của tôi nếu câu hỏi của tôi có vẻ ngu ngốc ... tôi lại đồng minh cần được giúp đỡ ...

+3

Holy StackOverflow! Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn! Tôi xin lỗi vì đã từ bỏ quá nhanh khi câu trả lời quá gần ... Tất nhiên !!! Tôi chỉ cần thiết để thay thế: '$ đơn = new JTableNested ('Menu', 'id', &$db); ' với ' $ đơn = new JTableNested ('#__ menu', 'id', &$db);' Tôi hy vọng điều này sẽ giúp ai đó ... Tôi xin lỗi người kiểm duyệt vì lỗi của tôi lần nữa ... Cảm ơn bạn! –

+0

bạn nên đăng câu trả lời và chấp nhận nó để đóng câu hỏi này ... – StiGMaT

Trả lời

0

tôi sử dụng tiết kiệm phương pháp bảng menu:

$data = array ( 
    'id' => 0 , 
    'title' => '{menu name}' , 
    'note' => '', 
    'link' => '{link}', 
    'menutype' => '{menutype}' , 
    'type' => 'url', 
    'published' => 1 , 
    'parent_id' => 1 , 
    'level' => 1 , 
    'component_id' => 0 , 
    'browserNav' => 0 , 
    'access' => getLevel() , 
    'template_style_id' => 0 , 
    'language' => '*' , 
    'params' => array ( 
     'menu-anchor_title' => '' , 
     'menu-anchor_css' => '' , 
     'menu_image' => '{url of logo for menu}', 
     'menu_text' => 1) , 
); 
$menuTable = JTable::getInstance('Menu', 'JTable', array()); 
$menuTable->save($data); 

Phương pháp này tạo menu mới và xây dựng lại tự động.

Các vấn đề liên quan