2013-02-22 6 views
2

사전 시작 1.5.3 용 모듈을 개발 중입니다. 모듈을 설치하는 동안 사용자 지정 관리 탭을 만들어야합니다. ... 어디 좋은 PrestaShop 버전 개발자 참조를 찾을 내가 잘못 뭐하는 거지 ..백스톱의 Prestashop 사용자 정의 탭

private function _createTab() 
{ 
    $tab = new Tab(); 
    $tab->id_parent = 7; // Modules tab 
    $tab->class_name='AdminWarranty'; 
    $tab->module='fruitwarranty'; 
    $tab->name[(int)(Configuration::get('PS_LANG_DEFAULT'))] = $this->l('Warranty'); 
    $tab->active=1; 
     if(!$tab->save()) return false; 
return true; 
} 

그리고 아무 반응이 없습니다 : 내가있는이

public function install() 
{ 
    if((parent::install() == false)||(!$this->_createTab()) ) 
     return false; 
    return true; 
} 

그리고 _createTab 방법과 같이 설치합니다.?

답변

6

설치 중에 모듈에 대한 사용자 지정 탭을 만들려면 다음 코드를 사용할 수 있습니다.

참고 : News라는 테스트 모듈을 고려하고 있습니다.

private function _createTab() 
{ 
    /* define data array for the tab */ 
    $data = array(
        'id_tab' => '', 
        'id_parent' => 7, 
        'class_name' => 'AdminNews', 
        'module' => 'news', 
        'position' => 1, 'active' => 1 
       ); 

    /* Insert the data to the tab table*/ 
    $res = Db::getInstance()->insert('tab', $data); 

    //Get last insert id from db which will be the new tab id 
    $id_tab = Db::getInstance()->Insert_ID(); 

    //Define tab multi language data 
    $data_lang = array(
        'id_tab' => $id_tab, 
        'id_lang' => Configuration::get('PS_LANG_DEFAULT'), 
        'name' => 'News' 
        ); 

    // Now insert the tab lang data 
    $res &= Db::getInstance()->insert('tab_lang', $data_lang); 

    return true; 

} /* End of createTab*/ 

가 나는 경우 누군가가 여기에 토지에, 그래서 자신, 적절한 방법을 PrestaShop 버전 모듈을 개발하고있어, 위의 코드가 잘 감사

+0

귀하의 경우에 class_name은 무엇입니까? 예를 들어 주시겠습니까? –

+0

내 경우에는 class_name이 AdminNews입니다. 클래스 이름을 AdminWarranty로 변경할 수 있습니다. –

+0

그래, 알았어.하지만 그 수업은 뭐니? 그것이 무엇을 나타내는가? 스 니펫을 보여줄 수 있습니까? 미리 감사드립니다. –

0

을 도움이되기를 바랍니다. 루트 탭에 대한

: 버전 1.5에 대한

$rootTab = new Tab(); 
$rootTab->active = 1; 
$rootTab->class_name = 'YourAdminControllerName'; 
$rootTab->name = array(); 
foreach (Language::getLanguages(true) as $lang) { 
    $rootTab->name[$lang['id_lang']] = $this->l("Root tab"); 
} 
$rootTab->id_parent = 0; // No parent 
$rootTab->module = $this->name; 
$rootTab->add(); 

참고 : 루트 탭을 만들 때, 시스템은 탭 아이콘으로 모듈의 폴더에 YourAdminControllerName.gif 찾습니다. 또한 루트 탭은 class_name이 필요함에도 불구하고 링크로 작동하지 않습니다. 루트가 아닌 탭에 대한

: 당신이 부모로서 기존 탭을 설정하려면

$tab = new Tab(); 
$tab->active = 1; 
$tab->class_name = 'YourAdminControllerName'; 
$tab->name = array(); 
foreach (Language::getLanguages(true) as $lang) { 
    $tab->name[$lang['id_lang']] = $this->l("Non-root tab"); 
} 
$tab->id_parent = $rootTab->id; // Set the root tab we just created as parent 
$tab->module = $this->name; 
$tab->add(); 

, 당신은 getIdFromClassName 기능을 사용할 수 있습니다. 예를 들어, 귀하의 경우 : 실패하면

$tab->id_parent = (int)Tab::getIdFromClassName('AdminModules'); 

추가() 함수는 false를 반환, 그래서 당신은 저장() 함수를 사용하는 것을 시도했다 당신은 경우()에서 사용할 수 있습니다.

슬프게도 PrestaShop은 지금까지 내가 해왔 던 가장 최악의 CMS 시스템이며, 실제로 코드를 작성하는 유일한 방법은 코드를 읽는 것이므로 다른 사람을 돕기를 바랍니다.