2

prestashop1.5.3のモジュールを開発しています。モジュールのインストール中にカスタム管理タブを作成する必要があります。私はこのようにインストールします

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

そして、_createTabメソッドは次のとおりです。

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;
}

そして何も起こりません..私は何を間違っているのですか..そしてどこで良いprestashop開発者リファレンスを見つけるのですか?

4

2 に答える 2

6

インストール中にモジュールのカスタムタブを作成するには、次のコードを使用できます。

注:ニュースと呼ばれるテストモジュールを検討しています。

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*/

上記のコードがお役に立てば幸いです

于 2013-02-27T15:34:49.030 に答える
0

ええと、私は自分でPrestaShopモジュールを開発しているので、誰かがここに着陸した場合に備えて、適切な方法です。

ルートタブの場合:

$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();

バージョン1.5に関する注意:ルートタブを作成するとき、システムはモジュールのフォルダーでタブアイコンとして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');

add()関数は、失敗するとfalseを返すため、save()関数で実行しようとしていたようにif()で使用できます。

悲しいことに、PrestaShopは、私が使用しなければならなかった文書化されたCMSシステムの中で群を抜いて最悪であり、実際にコーディングする唯一の方法はコードを読み取ることなので、誰かに役立つことを願っています。

于 2015-06-26T07:29:45.737 に答える