Jump to content
GhostRecon

Problem z modułem blocktopmenu

Recommended Posts

Witam,
 
Mam problem z modułem Blocktopmenu.Chodzi o to,że chciałem go umieścić we własnym divie(stworzonym w pliku header.tpl) i z własnym hookiem.
 
Tak więc stworzyłem diva i hooka:

	<!-- Header -->
			<div id="header" class="grid_9 alpha omega">
      <div id="TopStrip">
       {hook h='TopStrip'}
       </div>
				<a id="header_logo" href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}">
					<img class="logo" src="../img/logo.png" alt="{$shop_name|escape:'htmlall':'UTF-8'}" {if $logo_image_width}width="561px"{/if} {if $logo_image_height}height="175px" {/if}/>
				</a>
				<div id="header_right" class="grid_9 omega">
					{$HOOK_TOP}
          
				</div>
        <div id="TopMenu">
        {hook h='TopMenu'}
        </div> 
			</div> 
		<div id="page" class="container_9 clearfix">

w pliku blocktopmenu.php dodałem do instalacji:

public function install()
	{
		if (!parent::install() ||   
      !$this->registerHook('TopMenu') ||
      !$this->registerHook('DisplayTop') ||
			!Configuration::updateGlobalValue('MOD_BLOCKTOPMENU_ITEMS', 'CAT1,CMS1,CMS2,PRD1') ||
			!Configuration::updateGlobalValue('MOD_BLOCKTOPMENU_SEARCH', '1') ||
			!$this->registerHook('actionObjectCategoryUpdateAfter') ||
			!$this->registerHook('actionObjectCategoryDeleteAfter') ||
			!$this->registerHook('actionObjectCategoryAddAfter') ||
			!$this->registerHook('actionObjectCmsUpdateAfter') ||
			!$this->registerHook('actionObjectCmsDeleteAfter') ||
			!$this->registerHook('actionObjectCmsAddAfter') ||
			!$this->registerHook('actionObjectSupplierUpdateAfter') ||
			!$this->registerHook('actionObjectSupplierDeleteAfter') ||
			!$this->registerHook('actionObjectSupplierAddAfter') ||
			!$this->registerHook('actionObjectManufacturerUpdateAfter') ||
			!$this->registerHook('actionObjectManufacturerDeleteAfter') ||
			!$this->registerHook('actionObjectManufacturerAddAfter') ||
			!$this->registerHook('actionObjectProductUpdateAfter') ||
			!$this->registerHook('actionObjectProductDeleteAfter') ||
			!$this->registerHook('actionObjectProductAddAfter') ||
			!$this->registerHook('categoryUpdate') ||
			!$this->registerHook('actionShopDataDuplication') ||  
			!$this->installDB())
			return false;
		return true;
	}

I na samym dole przed ostatnim } :

public function hookTopMenu($param)
  {
  
  	$this->context->controller->addJS($this->_path.'js/hoverIntent.js');
		$this->context->controller->addJS($this->_path.'js/superfish-modified.js');
		$this->context->controller->addCSS($this->_path.'css/superfish-modified.css');
    
return $this->hookDisplayTop($param);
}     

I problem jest taki:

 

Jak mam zahookowany moduł w TopMenu i w DisplayTop to wyświetlają się tak jak powinny i w miejscu gdzie powinny, tyle,że wyświetlają się oba naraz.

 

Jak dam unhook'a na pozycji Top to moduł dalej wyświetla się w dobrym miejscu w TopMenu tyle ,że bez css i js(po prostu są to linki tekstowe jeden pod drugim które do tego nie działają...)

 

Jak zrobić żeby się wszystko wyświetlało dobrze w TopMenu i żeby nie wyświetlało się menu w pozycji Top w tym samym momencie??

Share this post


Link to post
Share on other sites

Już sobie poradziłem:)

 

Tylko jakby ktoś mógłby mi wyjaśnić bo nie do końca rozumiem dlaczego to działa a chce się tego nauczyć a nie tylko osiągnąć zamierzony efekt.

 

Zrobiłem tak:

 

w header.tpl dodałem hook'a - to rozumiem -załączyłem moduł

 

w blocktopmenu.php w sekcji install zarejestrowałemhook'a - czyli ten moduł można teraz podłączyć po ten hook który jest wyświetlony w divie w headerze.

 

na samym dole w blocktopmenu dodałem to:

public function hookTopMenu($params){
    return $this->hookDisplayTop($params);
    }
    
    public function hookdisplayHeader($params){
    $this->context->controller->addJS($this->_path.'js/hoverIntent.js');
    $this->context->controller->addJS($this->_path.'js/superfish-modified.js');
    $this->context->controller->addJS($this->_path.'js/blocktopmenu.js');
    $this->context->controller->addCSS($this->_path.'css/blocktopmenu.css');
    $this->context->controller->addCSS($this->_path.'css/superfish-modified.css');
    }

Pierwszą funkcję rozumiem - po prostu w hookTopMenu wywołuję hooka funkcji DisplayTop która odpowiada za wyświetlenie menu.

 

Za to w druga funkcja jak rozumiem dodaje do hook'a DisplayHeader wywoływanego w sekcji head podane później pliki.

Tylko czy ktoś może mi wyjaśnić o co chodzi w składni tego polecenia, tak krok po kroku:

$this->context->controller->addJS($this->_path.'js/hoverIntent.js');

??

Chce się nauczyć Presty i dlatego analizuję tak linijka po linijce wszystko:)

Edited by GhostRecon (see edit history)

Share this post


Link to post
Share on other sites

Drugi problem jaki napotkałem to dodanie indywidualnej klasy/id do elementów li menu.Udało mi się dodać te klasy do poszczególnych kategorii produktów i do podstron kategorii CMS ale za nic nie mogę znaleźć sposobu żeby dodać klasę do kategorii cms oraz stron cms tych które nie są w kategorii żadnej(np. do strony about). Jak to zrobić??

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More