Jump to content

blocktopmenu


Recommended Posts

Bonjour tout le monde,

Je suis un developpeur de cms Joomla et je viens d'inscrire sur prestashop pour debuter le developpement des sites de commerce, je viens de creer un theme basé sur bootstrap defaut et j'aimerais bien mettre le meme menu horizontal responsive sur ce forum, j'ai trouvé le fichier blocktopmenu.tpl qui s'occupe de modifier la structure de code et le fichier golobal.css pour ajouter les codes css.

Merci de m'aider pour réaliser le meme horizontal menu responsive.

 

Link to comment
Share on other sites

Hi again,

I fixed de top menu horizontal but the categries not displayed.

This the codes:

 

Dans votre theme/modules/blocktopmenu/blocktopmenu.php

----------------------------------------------------------------------

//add by sbahjaoui
public function hookdisplayHeader($params){
$this->context->controller->addCSS($this->_path.'css/superfish-modified.css');
$this->context->controller->addCSS($this->_path.'css/assets/base.css');
}

Dans votre theme/modules/blocktopmenu/css/superfish-modified.css

______________________________________________________

/*** ESSENTIAL STYLES ***/
.sf-contener {
	clear: both;
}
.sf-right {
  margin-right: 14px;
  float: right;
  width: 7px;
}
.sf-menu, .sf-menu * {
	margin:			0;
	padding:		0;
	list-style:		none;
}
.sf-menu {
	margin: 10px 0;
	padding:0;
	width:980px;/* 980 */
	background: #383838;
}
.sf-menu ul {
	position:		absolute;
	top:			-999em;
	width:			10em; /* left offset of submenus need to match (see below) */
}
.sf-menu ul li {
	width:			100%;
}
.sf-menu li:hover {
	visibility:		inherit; /* fixes IE7 'sticky bug' */
}
.sf-menu li {
	float:			left;
	position:		relative;
	border-right: 1px solid #777;
}
.sf-menu a {
	display:		block;
	position:		relative;
	color:#fff;
	text-shadow:0 1px 0 #333;
}
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
	left:			0;
	top:			34px; /* match top ul list item height */
	z-index:		99;
	width:auto
}
ul.sf-menu li:hover li ul,
ul.sf-menu li.sfHover li ul {
	top:			-999em;
}
ul.sf-menu li li:hover ul,
ul.sf-menu li li.sfHover ul {
	left:			200px; /* match ul width */
	top:			0;
}
ul.sf-menu li li:hover li ul,
ul.sf-menu li li.sfHover li ul {
	top:			-999em;
}
ul.sf-menu li li li:hover ul,
ul.sf-menu li li li.sfHover ul {
	left:			200px; /* match ul width */
	top:			0;
}

/*** DEMO SKIN ***/
.sf-menu {
	float:			left;
	margin-bottom:	1em;
}
.sf-menu a {
	display:block;
	margin-right:2px;
	padding: 0 22px 0 20px;
	line-height:34px;
	border: 0;
	text-decoration:none;
}
.sf-menu a, .sf-menu a:visited  { /* visited pseudo selector so IE6 applies text colour*/
	color:			#fff;
	white-space:nowrap;
}
.sf-menu li li {
	background: rgba(113, 113, 113, 0.9);
}
.sf-menu li li li {
	background:	rgba(113, 113, 113, 0.9);
}
.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
  	background: #4E4E4E;
}
.sf-menu ul li:hover, .sf-menu ul li.sfHover,
.sf-menu ul li a:focus, .sf-menu ul li a:hover, .sf-menu ul li a:active {
	background:		#4e4e4e;
	outline:		0;
}
/*** arrows **/
.sf-menu a.sf-with-ul {
	padding-right: 	2.25em;
	min-width:		1px; /* trigger IE7 hasLayout so spans position accurately */
}
.sf-sub-indicator {
	position:		absolute;
	display:		block;
	right:			10px;
	top:			1.05em; /* IE6 only */
	width:			10px;
	height:			10px;
	text-indent: 	-999em;
	overflow:		hidden;
	background:		url('../img/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
}
a > .sf-sub-indicator {  /* give all except IE6 the correct values */
	top: 11px;
	background-position: 0 -100px; /* use translucent arrow for modern browsers*/
}
/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
	background-position: -10px -100px; /* arrow hovers for modern browsers*/
}

/* point right for anchors in subs */
.sf-menu ul .sf-sub-indicator { background-position:  -10px 0; }
.sf-menu ul a > .sf-sub-indicator { background-position:  0 0; }
/* apply hovers to modern browsers */
.sf-menu ul a:focus > .sf-sub-indicator,
.sf-menu ul a:hover > .sf-sub-indicator,
.sf-menu ul a:active > .sf-sub-indicator,
.sf-menu ul li:hover > a > .sf-sub-indicator,
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
	background-position: -10px 0; /* arrow hovers for modern browsers*/
}

/*** shadows for all but IE6 ***/
.sf-shadow ul {
	background:	url('../img/shadow.png') no-repeat bottom right;
	padding: 0 8px 9px 0;
	-moz-border-bottom-left-radius: 17px;
	-moz-border-top-right-radius: 17px;
	-webkit-border-top-right-radius: 17px;
	-webkit-border-bottom-left-radius: 17px;
}
.sf-shadow ul.sf-shadow-off {
	background: transparent;
}
li.sf-search {
  background: inherit;
  float: right;
  line-height: 25px;
}
li.sf-search input {
  -moz-border-radius: 0 5px 5px 0;
  padding: 3px 0;
  padding-left: 20px;
  margin: 6px 6px 0 0;
  background: #fff url('../img/search.gif') no-repeat left center;
  border:1px solid #777
}

/* hack IE7 */
.sf-menu a, .sf-menu a:visited {height:34px !IE;}
.sf-menu li li {
	width:200px;
	background:#726f72 !IE;
}

Dans votre theme/modules/blocktopmenu/css/assets/base.css

------------------------------------------------------------------------------

/* WEB FONT */
@import url(http://fonts.googleapis.com/css?family=Signika:600|Varela+Round);

/* RESET */
* {
  margin: 0;
  padding: 0;
  border: 0;
}
/* BASIC */

h1, h2 {
  font-family: "Signika", sans-serif;
  font-weight: 600;
}
h1 {
  font-size: 36px;
  line-height: 46px;
  color: #e0e0e0;
}
h2 {
  font-size: 24px;
  line-height: 33px;
  margin-bottom: -20px;
}

a:link, a:visited, a:hover, a:active {
  text-decoration: none;
}

/* LAYOUT */
.fixed-nav-bar {
  box-shadow: 0px 0px 3px 0px rgba(50, 50, 50, 0.6);
}


.button, .button:visited, .button-dark {
  display: inline-block;
  max-width: 200px;
  margin: 50px 10px 30px 10px;
  padding: 10px;
  font-family: "Signika", sans-serif;
  color: #ffffff;
  background-color: transparent;
  border: 2px solid #ffffff;
  border-radius: 3px;
  text-transform: capitalize;
  text-align: center;
  transition: all 0.1s ease;
}
.button-dark, .button-dark:visited {
  margin: 20px 10px 30px 0;
  color: #464646;
  border-color: #464646;

}
.button:hover, .button-dark:hover {
  transition: all 0.3s ease;
}
.button:hover {
  background-color: rgba(255, 255, 255, 0.2);
}
.button-dark:hover {
  color: #ffffff;
  background-color: rgba(70, 70, 70, 0.9);
}

Dans root/themes/votre theme/modules/blocktopmenu/blocktopmenu.tpl

{if $MENU != ''}
<nav class="fixed-nav-bar">
  <div id="menu" class="menu">
  {l s="Categories" mod="blocktopmenu"}
    <a class="sitename" href="fixed-navigation-bar.html"><img class="logo img-responsive" src="{$logo_url}" alt="{$shop_name|escape:'html':'UTF-8'}"{if isset($logo_image_width) && $logo_image_width} width="{$logo_image_width}"{/if}{if isset($logo_image_height) && $logo_image_height} height="{$logo_image_height}"{/if}/></a>
    <!-- Example responsive navigation menu  -->
	<a class="show" href="{if $force_ssl}{$base_dir_ssl}{else}{$base_dir}{/if}" title="{$shop_name|escape:'html':'UTF-8'}">Menu</a><a class="hide" href="#hidemenu">Menu</a>
										<img class="logo img-responsive" src="{$logo_url}" alt="{$shop_name|escape:'html':'UTF-8'}"{if isset($logo_image_width) && $logo_image_width} width="{$logo_image_width}"{/if}{if isset($logo_image_height) && $logo_image_height} height="{$logo_image_height}"{/if}/>
									</a>
    <ul class="menu-items">
      {$MENU}
			{if $MENU_SEARCH}
				<li class="sf-search noBack" style="float:right">
					<form id="searchbox" action="{$link->getPageLink('search')|escape:'html':'UTF-8'}" method="get">
						<p>
							<input type="hidden" name="controller" value="search" />
							<input type="hidden" value="position" name="orderby"/>
							<input type="hidden" value="desc" name="orderway"/>
							<input type="text" name="search_query" value="{if isset($smarty.get.search_query)}{$smarty.get.search_query|escape:'html':'UTF-8'}{/if}" />
						</p>
					</form>
				</li>
			{/if}
  </ul>
  </div>
</nav>
{/if}

post-773158-0-39357200-1421496588_thumb.jpg

post-773158-0-76176600-1421496612_thumb.jpg

post-773158-0-37007200-1421496621_thumb.jpg

Edited by soufiane011 (see edit history)
Link to comment
Share on other sites

Donc je suis partie sur la modif du module, ca marche pas mal... j'ai intégré le block panier et le block recherche au menu... cf mon site lien en signature...
dans blocktopmenu.php j ai modif la fonction principal de la manière suivante:

private function generateCategoriesMenu($categories, $is_children = 0)
	{
		$html = '';

		foreach ($categories as $key => $category)
		{
			if ($category['level_depth'] > 1)
			{
				$cat = new Category($category['id_category']);
				$link = Tools::HtmlEntitiesUTF8($cat->getLink());
			}
			else
				$link = $this->context->link->getPageLink('index');

			$html .= '<li '.(($this->page_name == 'category'
				&& (int)Tools::getValue('id_category') == (int)$category['id_category']) ? ' class="dropdown"' : '').'>';
			
			if ((int)$category['level_depth'] > 1 && !$is_children)
				{
				$html .= '<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">';
			$html .=  $category['name'];
			$html .= '<span class="caret"></span></a>';
			}
			else
			$html .= '<a href="'.$link.'" title="'.$category['name'].'">'.$category['name'].'</a>';

			

			if (isset($category['children']) && !empty($category['children']))
			{
				$html .= '<ul class="dropdown-menu" role="menu">';
				$html .= $this->generateCategoriesMenu($category['children'], 1);


				if ((int)$category['level_depth'] > 1 && !$is_children)
				{
					$files = scandir(_PS_CAT_IMG_DIR_);

					/*if (count($files) > 0)
					{
						$html .= '<li class="category-thumbnail">';

						foreach ($files as $file)
							if (preg_match('/^'.$category['id_category'].'-([0-9])?_thumb.jpg/i', $file) === 1)
								$html .= '<div><img src="'.$this->context->link->getMediaLink(_THEME_CAT_DIR_.$file)
								.'" alt="'.Tools::SafeOutput($category['name']).'" title="'
								.Tools::SafeOutput($category['name']).'" class="imgm" /></div>';

						$html .= '</li>';
					}*/
				}

				$html .= '</ul>';

			}
			$html .= '</li>';

		}

		return $html;
	}
Link to comment
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
×
×
  • Create New...