Jump to content

Integration du menu de mon site wordpress sur prestashop


Recommended Posts

Bonjour,

J'ai un site www.saphonyx.be

et je suis entrain de monter une boutique prestashop en parallèle sur le même serveur. www.saphonyx.be/shop

Je suis entrain de recrée le thème de mon site wordpress pour prestashop afin que les clients se trouve sur le même environnement design entre les deux sites.

Afin de bien crée le lien entre les deux sites, je souhaiterais importer le menu horizontal de wordpress et qu'il s'affiche dans le header de ma boutique prestashop.

Ce qui serait vraiment très pratique car lorsque je modifie le menu sous wordpress, il sera automatiquement modifié dans prestashop, et mes clients aurait le même menu pour les deux sites.

 

 

Bon  ne sais pas trop comment m'y prendre, si quelqu'un a des pistes ?

 

Voici ce que firebug me dit quand je lui demande des infos sur le menu de wordpress :

<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-18 current_page_item menu-item-26"><a href="http://www.saphonyx.be/" title="Page d’accueil"><span></span>Accueil</a></li>

mon fichier header.php :

<?php add_theme_header(); ?>
	<?php 
		// check if landing page and main navigation is disabled
		if ( get_current_template() == "page-landing.php" )  {
			if ( get_post_meta ( get_the_ID() , 'hb_disable_main_navigation', true ) != "on" ){
				add_theme_main_nav(); 
			}
		}
		else 
			add_theme_main_nav(); 
	?>
	<?php add_header_separator( get_the_ID() ); ?>

qui appelle le fichier main-navigation.php :

<?php
/**
 * @package WordPress
 * @subpackage Aegaeus
 */
 
// Function which includes main navigation
function add_theme_main_nav () {
    if ( has_nav_menu ('main-menu') ) {
                wp_nav_menu( array ( 'theme_location' => 'main-menu' , 'container_id' => 'main-navigation-wrapper', 'container_class' => 'navigation-class clearfix', 'menu_class' => 'menu clearfix', 'menu_id'=>'nav') );
        } else {
            echo '<div id="main-navigation-wrapper" class="navigation-class"><ul id="nav" class="menu clearfix"><li><a>';
            _e('Please attach a menu to this menu location in Appearance > Menu.', 'hbthemes');
            echo '</a></li></ul></div>';
        }
}
 
function add_theme_footer_nav() {
    if ( has_nav_menu ('footer-menu') ) {
            wp_nav_menu( array ( 'theme_location' => 'footer-menu' , 'container_id' => 'footer-nav' ,'container_class' => '',  'items_wrap' => '<ul id="footer-navigation">%3$s</ul>',  'before' => '<span>/</span>' ) );
    }
}
?>

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

Du côté de pretashop, j'ai un fichier header.tpldans lequel il faudrait appeller le menu de wordpress:

					
			<div class="header-container">
			<div class="container">						
				<header id="header">
									
						<div class="banner">
							
								<div class="row">
									{hook h="displayBanner"}
								</div>
							
						</div>
						<div class="nav">
							
								<div class="row">
									<nav>{hook h="displayNav"}</nav>
								</div>
							
						</div>
						<div>
							
								<div id="header_bannieresapho">
								</div>
									<div class="row">
										{if isset($HOOK_TOP)}{$HOOK_TOP}{/if}
									</div>
							
						</div>		
				</header>
				
			</div>
			</div>
			<div class="columns-container">
				<div id="columns" class="container">
					{if $page_name !='index' && $page_name !='pagenotfound'}
						{include file="$tpl_dir./breadcrumb.tpl"}
					{/if}
					<div class="row">
						<div id="top_column" class="center_column col-xs-12 col-sm-12">{hook h="displayTopColumn"}</div>
					</div>
					<div class="row">
						{if isset($left_column_size) && !empty($left_column_size)}
						<div id="left_column" class="column col-xs-12 col-sm-{$left_column_size|intval}">{$HOOK_LEFT_COLUMN}</div>
						{/if}
						<div id="center_column" class="center_column col-xs-12 col-sm-{12 - $left_column_size - $right_column_size}">
	{/if}

Bon voilà a partir de là, je sais pas trop de ce que je dois faire, si vous pouvez me donner des conseils se serait super.

Merci d'avance

Nicolas

Share this post


Link to post
Share on other sites

Ca va pas être si simple que ca.

Si vous souhaitez utilisé des éléments de WP dans PS, il va vous falloir faire une intégration avancée de WP vers PS.

Plusieurs topics traite du sujet :)

 

Sinon, un petit module PS qui va chercher  en base de donnée et recréer votre menu WP. Si vous ne voulez récup que le WP, ca me parait le plus simple peut être.

Share this post


Link to post
Share on other sites

Bonjour,

J'ai déjà regarder la méthode de webbmax, (si c'est à cela que vous pensez), mais ce n'est pas ce que je veux faire, et puis je n'arrive pas a adpaté la méthode avec mon thème wordpress.

Si vous avez d'autre topic qui pourrait parler d'une integration du menu je suis interesser.

 

Pour le faire via un module, c'est une bonne idée. Un menu finalement reste un menu, mais si il peux chercher les infos dans la base de donnée de wordpress, ce serait idéal.

Connaissez vous un module de menu qui pourrait faire l'affaire ou être modifié légèrement pour le faire ?

J'imagine qu'il suffit de prendre un module de menu et puis de modifié la base de donnée à laquelle il se connecte ou alors de mixer les deux bases de donnée ensemble.

 

Cordialement

Share this post


Link to post
Share on other sites

Vous voyez les choses un peu trop simple.

Si vous voulez un module qui va chercher dans les tables WP le menu, ça sera du dev à la main.

Car votre menu est structure pour WP, et WP à ses propres méthodes pour aller le chercher en base, le re-créer, puis l'afficher. Méthode spécifique à WP, qui ne marcheront donc que si le WP global est installé et "appelé" sur le PS. Ou tout du moins une bonne partie du WP.

 

Même si vous voudriez bosser à partir d'un module de menu, il faudrait quasiment tout refaire, car je ne pense pas que quelqu'un ce soit déjà penché sur un tel module.

 

Pour ma part, je fais l'inverse, j'intègre Prestashop dans le WP, via un module qui me permet d'afficher des hooks/modules de PS, en tant que widget WP. Ce qui me permet d'afficher le menu de WP par défaut, et si je veux, celui de PS.

Mais c'est du boulot, et c'est plus facile si c'est prévu des le début avec un thème WP simple et blanc avant d'aller plus loin.

Edited by Szed (see edit history)

Share this post


Link to post
Share on other sites

Effectivement cela a l'aire un peu galère...

 

Etant donné que je pars d'un site wordpress existant, je ne vais pas tout recommencer à zero, il faut donc que je trouve une solution qui est possible à ce niveau.

 

J'ai trouver ce tuto, qui a l'aire d'être une alternative.

qu'en pensez vous ?

 

How to : integrate wordpress menu into prestashop
 

The wordpress and prestashop integration is a big subject : prestashop is good for selling products and wordpress is good for dealing with content. One very efficient feature of wordpress is the menu builder that allows you to build unlimited hierachical menus. We submit here a technique that hooks into the wordpress update menu event to generate a static version of the modified menu, that can be then included in your prestashop theme via easy static include.

  1. create a cache directory in your wordpress theme folder
  2. add the following code to your functions.php file
     
  3.  add_action("wp_update_nav_menu" , 'poleouestMakeMenu' );
      function poleouestMakeMenu($menuId)
      {
          $html=wp_nav_menu(array('menu'=>$menuId, "echo"=>false));
          $fileNAme= STYLESHEETPATH . "/cache/" . "menu" . $menuId .".html";
        
          file_put_contents($fileNAme,$html);
      }
    
  4. once you've tested that the menu . html file is generated, include it in your prestashop template via some hack in the prestashop core. Let us know how you do it !!

 

 

 

Est ce que cela a l'aire possible ?

Dans ce tuto, il dit que un .html est crée. Il est crée où? dans quelle répertoire et quelle sera son nom ?

Merci

Nico

Edited by fly_in_the_sky (see edit history)

Share this post


Link to post
Share on other sites

Hello,

 

alors ce bout de code vous propose de créer un dossier cache, dans le dossier de votre thème WP. 

Ainsi que de coller ce bout de code dans le fonction.php de votre thème. Une fois cela fait, lorsque vous afficherez le menu, cela devrait créer un fichier html dans le dossier cache contenant l'html du menu.

Il vous suffirait ensuite d'inclure ce fichier html dans votre prestashop via include

 

Ca se tente ^^

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
 Share

×
×
  • Create New...

Important Information

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