2016-04-28 2 views
1

Ich habe ein Modul erstellt, in dem es auf einer der Seiten hakt. Wie kann ich den Link meines benutzerdefinierten Moduls im oberen horizontalen Menü von Prestashop 1.6 anzeigen? Wenn ich zu Modulen -> Module navigiere und nach dem obersten horizontalen Menü suche. und wenn ich auf die Schaltfläche Konfigurieren klicke, um auf die Modulkonfigurationsseite zuzugreifen, wie kann ich meinen Modullink in den verfügbaren Elementelisten sehen. d. h. das Bild im Link "Verfügbare Elemente, die ich möchte" anzeigen möchte. Link von meinem benutzerdefinierten Modul, das ich entwickelt habe. das heißt, wenn mein benutzerdefinierter Modul den Link installiert ist, muss hier in den verfügbaren Elementen erscheinen, so dass ich meine Gewohnheit das ausgewählte Element Link hinzufügen kann enter image description hereSo fügen Sie einen neuen Link für meine benutzerdefinierte Modulseite zum oberen horizontalen Menü in Prestashop 1.6.4 hinzu

Antwort

2

Sie haben zwei Möglichkeiten:

  • es von Hand erstellen im Backoffice

    In der Konfigurationsseite des Blocktopmenü-Moduls können Sie einen neuen benutzerdefinierten Link unter ADD A NEW LINK Block erstellen. Der Link zu Ihrem Modul lautet /module/your_module_name/your_controller_name. Dann können Sie diesen Link zu Ihrem Menü unter MENU TOP LINK hinzufügen.

  • es programmatisch

    Im Installationsmethode des Moduls erstellen Sie diesen benutzerdefinierten Link Methoden blocktopmenu erstellen können.

    if (Module::isInstalled("blocktopmenu")) 
    { 
        // You will have to put the right path in here 
        require_once('../blocktopmenu/menutoplinks.class.php'); 
    
        $languages = $this->context->controller->getLanguages(); 
        $shops = Shop::getContextListShopID(); 
    
        $links_label = array(); 
        $labels = array(); 
    
        foreach ($languages as $key => $val) 
        { 
         // You need to replace "my_module" and "my_controller" to get a link to your controller 
         $links_label[$val['id_lang']] = Context::getContext()->link->getModuleLink("my_module", "my_controller"); 
         // Here set your link label for the menu 
         $labels[$val['id_lang']] = "My Link Name"; 
        } 
    
        foreach ($shops as $shop_id) 
        { 
         $added = MenuTopLinks::add($links_label, $labels, 0, (int) $shop_id); 
         // You can check wether $added is true or false 
    
        } 
    } 
    
  • es

    public function install() 
    { 
        if (! parent::install()) 
        { 
         return false; 
        } 
    
        if (Module::isInstalled("blocktopmenu")) 
        { 
         // You will have to put the right path in here 
         require_once('../blocktopmenu/menutoplinks.class.php'); 
    
         $languages = $this->context->controller->getLanguages(); 
         $shops = Shop::getContextListShopID(); 
    
         foreach ($shops as $shop_id) 
         { 
    
          $links_label = array(); 
          $labels = array(); 
    
          foreach ($languages as $key => $val) 
          { 
           // You need to replace "my_module" and "my_controller" to get a link to your controller 
           $links_label[$val['id_lang']] = Context::getContext()->link->getModuleLink("my_module", "my_controller", array(), null, $val['id_lang'], $shop_id); 
           // Here set your link label for the menu 
           $labels[$val['id_lang']] = "My Link Name"; 
          } 
    
          $added = MenuTopLinks::add($links_label, $labels, 0, (int) $shop_id); 
    
          if ($added) { 
           $link_id = Db::getInstance()->getValue(" 
            SELECT DISTINCT id_linksmenutop 
            FROM `"._DB_PREFIX_."linksmenutop_lang` 
            WHERE link LIKE '" . $link . "' 
            AND id_shop LIKE '" . $shop_id . "' 
           "); 
    
           Configuration::set("MY_MODULE_LINKS_TOP_" . $shop_id, $link_id); 
          } 
         } 
        } 
    } 
    
    public function uninstall() 
    { 
        if (! parent::uninstall()) 
        { 
         return false; 
        } 
    
        if (Module::isInstalled("blocktopmenu")) 
        { 
         // You will have to put the right path in here 
         require_once('../blocktopmenu/menutoplinks.class.php'); 
    
         $shops = Shop::getContextListShopID(); 
    
         foreach ($shops as $shop_id) 
         { 
          $link_id = Configuration::get("MY_MODULE_LINKS_TOP_" . $shop_id); 
    
          if ($link_id !== false) 
          { 
           MenuTopLinks::remove($link_id, $shop_id); 
          } 
         } 
        } 
    } 
    

    -Code nicht getestet programmatisch mit automatischer Unterdrückung schaffen, sondern mit Prestashop 1.6 arbeiten müssen.

+0

Ok Es funktioniert und ich habe den Pfad korrekt gesetzt require_once ('/../ blocktopmenu/menutoplinks.class.php'); Aber wenn ich mein Modul von BO deinstallieren die Links werden nicht entfernt So, wie das zu entfernen Muss ich etwas in die Deinstallation auch? @Florian Lemaitre –

+0

ja, bei der Deinstallationsmethode 'MenuTopLinks :: remove ($ id_linksmenutop, $ id_shop)' verwenden, um Ihre Links zu entfernen – leninhasda

+0

Hi @JerryAbraham wird es Ihnen nichts ausmachen, diese Antwort zu akzeptieren, um diesen Thread als gelöst zu markieren? Oder benötigen Sie weitere Informationen? –

Verwandte Themen