Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 10/07/2011
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.9.4.2
#~ Url du site : localhost
#~ Hébergeur / Soft : LAMP (Ubuntu 10.10)
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Je me demande s'il est possible d'afficher, sur un autre site, le menu "artmenu" horizontal.
Je m'explique.
Je fais un site sous CMSMS, avec une page "galerie", qui est en fait un lien de redirection vers un sous-répertoire, qui contient un autre CMS (Igalerie).
J'ai adapté les feuilles de style et les gabarits respectifs de CMSMS et Igalerie pour que les pages se ressemblent au point qu'on a l'impression de rester sur le même site.
La seule chose qu'il manque, c'est le menu des pages de CMSMS, que j'aimerais retrouver sur Igalerie, afin que le visiteur puisse à tout moment retourner sur une des autres pages.
Est-ce que c'est possible et que faut-il faire ?
Merci
Arnaud
Récupérer le menu des pages pour afficher sur un autre site -
bess - 10/07/2011
deux solutions : dynamique ou static ?
le dynamique est complexe à faire mais permettrait de récupérer un menu mis à jour depuis cmsms dans igalerie
le static est rapide à faire mais nécessite une mise à jour manuelle.
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 11/07/2011
Bonjour,
Autant que possible, je préférerais faire en dynamique.
Merci
Récupérer le menu des pages pour afficher sur un autre site -
bess - 11/07/2011
ok, tiens toi ça va faire mal
1 : faire une balise utilisateur "generateMenu" qui contiendra ce code
Code :
$gCms = cmsms();
$smarty = &$gCms->GetSmarty();
$smarty_data = "{menu}"; //Ajouter les paramètres éventuels
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$menutpl = @ob_get_contents();
@ob_end_clean();
source
ensuite tu lui fait générer un fichier en sortie nommé 'cmstemplate.php' qui sera composé de ce code
Code :
<?php
echo "XXXXX";
?>
avec XXXXX étant le contenu de la variable $menutpl. Ce fichier cmstemplate.php sera créé de préférence dans le répertoire de Igallery dans un sous répertoire bien localisé, genre /igalley/cmsmadesimple
2 : modifier cette balise utilisateur et ajouter un code au début qui aura pour tache de supprimer le fichier cmstemplate.php si existant avant de faire la suite.
3 : aller dans la gestion des évenements de CmsMadeSimple et repère ces 2 evenements :
* ContentDeletePost
* ContentEditPost
pour chacun d'entre eux tu le modifies, et tu ajoutes ta balise utilisateur "generateMenu"
APRES l'appel au module MenuManager
A ce niveau de la partie, tu vas déjà tester en modifiant tes pages (changer le titre, nouvelle page, réorganisation) et vérifier que le fichier /igalley/cmsmadesimple/cmstemplate.php se modifie correctement comme il faut.
Une fois le processus stabilisé, il te reste à modifier igallery que je ne connais pas du tout et lui faire comprendre qu'il lui faut intégrer ton nouveau fichier /igalley/cmsmadesimple/cmstemplate.php
notamment avec un bon vieux include_once(...)
Voilà finit !
bon couraaaaaage
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 11/07/2011
Bonjour,
Merci pour ce tutoriel que je vais essayer d'appliquer pas à pas.
Pour l'instant, j'ai créé la balise utilisateur "generateMenu".
Par contre, à quel endroit dois-je entrer le code
Code :
<?php
echo "XXXXX";
?>
Récupérer le menu des pages pour afficher sur un autre site -
bess - 11/07/2011
ce code c'est ce qui doit être généré dans le fichier cmstemplate.php, ce n'est donc pas un code que tu tape, mais un texte généré par TON code.
en gros ton script php va générer un script php
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 11/07/2011
Je ne comprends toujours pas.
Je précise que je connais pas le langage PHP. C'est peut-être la raison.
Comment et à quel endroit dois-je indiquer au script qu'il doit générer un fichier cmstemplate.php ?
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 11/07/2011
Dans le premier code que j'ai entré en tant que balise utilisateur, rien ne crée le fichier cmstemplate.php.
Il faut donc bien que j'inclue la commande "echo" quelquepart dans la balise, non ? Mais comment ? Avec un >> comme en bash ?
Récupérer le menu des pages pour afficher sur un autre site -
kraygoon - 12/07/2011
Oula, j'exploite une méthode bien plus simple pour ma part :
1. Je créé une page qui ne contient que l'appel à la balise {menu}
2. J'insère dans mon site où je dois utiliser le menu dynamique l'appel à la page CMSMS en utilisant l'adresse index.php?page=menu-seul&showtemplate=false
Grosso modo, CMSMS me fourni une page qui ne contient que mon menu et sans template.
Récupérer le menu des pages pour afficher sur un autre site -
bess - 12/07/2011
je faisais comme toi kraygoon, avant de m'appercevoir que cela correspondait à une hausse de la conso de la BP (ton serveur fait appel à ton serveur) + un allongement du temps de chargement.
Du coup j'ai opté pour ce système de cache plus performant.
Citation :Je précise que je connais pas le langage PHP. C'est peut-être la raison.
alors abandonne l'idée de faire du dynamique, repasse sur du static.
Récupérer le menu des pages pour afficher sur un autre site -
kraygoon - 12/07/2011
Bess, tu as testé avec la mise en cache du menu ?
Peut-être qu'avec la nouvelle balise {cge_cache}{/cge_cache} (pas sur de l'écriture) ça règlerait ces problèmes de cache. En théorie, le menu ne serait qu'un fichier en cache à lire.
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 12/07/2011
Bon, je laisse tomber. Je ne comprends rien aux instructions.
Même en statique je n'ai aucune idée pour le faire.
Merci à vous deux d'avoir pris le temps de répondre ; mais c'est trop compliqué pour moi. Je n'avais pas mesuré à quel point ma question était technique.
Arnaud
Récupérer le menu des pages pour afficher sur un autre site -
bess - 12/07/2011
Citation :Bess, tu as testé avec la mise en cache du menu ?
négatif, on pourrait éventuellement y réfléchir oui...
@Arnaud
en static c'est assez simple : tu copie le code HTML de ton menu depuis firefox et tu le colle dans les sources de Igallery.
encore faut il savoir ou aller le coller et là rebelotte : il te faut connaitre PHP...
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 12/07/2011
Citation :en static c'est assez simple : tu copie le code HTML de ton menu depuis firefox
Fait (du moins je pense, j'ai identifié un bloc "artmenu" avec Firebug.
Citation : et tu le colle dans les sources de Igallery.
Fait (je l'ai collé dans la partie "Content" de mon template.
Par contre mon menu est en mode texte. J'imagine que je dois rapatrier un bout de la feuille de style également ?
Récupérer le menu des pages pour afficher sur un autre site - Arnaud04 - 12/07/2011
Ça y est j'ai réussi en statique, ce qui fut déjà une rude épreuve pour moi
J'ai eu quelques soucis avec la feuille de style. J'ai compris ensuite qu'il y avait un conflit entre la classe "nav" que j'avais collée depuis CMSMS et la classe "nav" qui existait déjà dans Igalerie. J'ai donc renommé "nav" en "navg".
J'ai juste quelques tout petits soucis d'apparence, dûs certainement à des règles CSS de plus haut niveau qui interfèrent, mais dans l'ensemble ça passe à peu près.
Récupérer le menu des pages pour afficher sur un autre site -
bess - 12/07/2011
courage