exporter mes categories et articles ainsi que le menu si possible

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • exporter mes categories et articles ainsi que le menu si possible

    Bonjour
    J'essais de faire un changement de template et j'ai une question :
    J'utilise un template quickstart en local et je voudrais savoir si il était possible d'exporter mes articles, mes catégories et mes menus de mon ancien site vers ce nouveau
    Je pense que c'est possible avec des exports en bdd, mais je n'arrive pas à trouver l'ensemble des table qu'il faut que j'exporte
    Merci pour votre aide
    Et bonne journée

  • #2
    Regarde du côté de J2XML pour l'export-import des articles et catégories. Je n'en ai pas suffisamment l'expérience pour savoir s'il peut aussi gérer les menus.
    Sinon, il existe des extensions commerciales comme SP Transfer si ton ancien site est en version 2.5 au moins, JMigrator, Migrate Me... qui vont plus loin dans les possibilités de transfert.
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Bonjour,

      Pourquoi passer par un quickstart plutôt que d'installer votre template directement sur votre ancienne installation ? On peut installer plusieurs templates sur un même site.

      Pascal
      If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

      Commentaire


      • #4
        Merci à tous les 2
        Je voulais passer par le kickstart simplement car depuis maintenant 8 années que j'ai mon site joomla j'en aurais profité pour faire du nettoyage
        C'est bien seulement un changement de template que je voulais faire pas une migration
        Je passe d'un j3 à un j3

        Commentaire


        • #5
          Bonjour,
          en fait quand tu achètes un template assez complexe et joli, tu as souvent un fichier quickstart (démarrage rapide) qui sert souvent de mode d'emploi et qui reproduit tout le site tel que tu le vois dans la démo. En étudiant comment il fonctionne, tu peux ensuite reproduire sur ton propre site en installant cette fois ci, le template seul.
          Un changement de template, c'est pas toujours simple car les positions changent et on a souvent de nouvelles fonctionnalités d'un template a un autre.

          Donc, on installe le quickstart dans un coin en local ou serveur de test pour tester et bien comprendre comment tout ça fonctionne
          Et une fois qu'on maitrise bien, on installe le template seul sur une copie de son site pour commencer a bosser dessus.
          Une fois qu'on a fini, on transfert le boulot vers le serveur online ou si c'est quelque modifs, on duplique les modifs testées sur la copie sur le site en production ... mais attention, il faut le mettre hors ligne sinon tes visiteurs auront de mauvaises surprises !
          Dernière édition par manu93fr à 04/05/2018, 10h08
          Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer
          Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

          Commentaire


          • #6
            A quand une fonction native d'export du contenu Joomla ?
            Est ce prévu dans J4 ? Tout comme la différenciation module/composant/plugin vs articles ? Car pour le moment, tout ça est géré avec la table assets, qui comlexifie le transfert via bdd...
            Venant de Spip, c'était là une puissance de ce CMS, et un gros manque pour Joomla.

            Commentaire


            • #7
              Envoyé par christophe31 Voir le message
              ... Tout comme la différenciation module/composant/plugin vs articles ? Car pour le moment, tout ça est géré avec la table assets, qui comlexifie le transfert via bdd...
              Peux tu être + clair, car en lisant tes propos on a l'impression que tu embrouilles un peu tout.

              Un Module est bien différent d'un Composant qui sont tous deux différents d'un Plugin.
              Chacun a son rôle, même si un module ou un plugin peuvent dépendre d'un ou de plusieurs composants.

              Concernant la comparaison avec un article, un article est géré par un composant (com_content), c'est tout.

              Et la table #_assets concerne l'ACL (donc partie du framework de Joomla) et est partagée entre l'ensemble des composants utilisant la gestion des droits proposée par le framework (une des (très) grande force de Joomla).

              Et effectivement si on peut envisager de transfert d'un article (au sens de son contenu), tout comme n’importe quel autre élément de contenu géré par des composants utilisant la puissance du Framework (événements, liens, forums, articles commerciaux, etc...), il est très difficile de transférer leurs droits d'accès, et même leurs catégories par exemple, vu que ces tables sont communes et gérées par le framework de Joomla.
              Sauf à gérer des correspondances avec des tables de "mapping" (une belle usine à gaz à gérer !).

              Concernant un export "simple", la formule viendra peut-être des fonctions de webservice que l'on attend depuis longtemps et qui devraient être dispo avec J4.
              Dernière édition par roland_d_alsace à 07/05/2018, 13h39
              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
              Rejoignez le Joomla Users Groupe Alsace...
              roland_d_alsace va-t-il devenir roland_du_grand_est ?

              Commentaire


              • #8
                Assets ne concerne que les ACL ? (j'ai encore bcp à apprendre). Il me semblait que les asset étaient une espèce de table d'organisation des catégories, articles composants etc...

                Quand j'ai voulus transférer les articles d'une bdd à une autre, j'ai butté sur la table Asset, qui dépendait des composants, des articles et des rubriques... Mais peut-être me trompe-je ?

                Commentaire


                • #9
                  Envoyé par christophe31 Voir le message
                  Assets ne concerne que les ACL ? (j'ai encore bcp à apprendre). Il me semblait que les asset étaient une espèce de table d'organisation des catégories, articles composants etc...
                  Oui et effectivement on retrouve tous les composants du core (que tu sites) dedans.
                  Envoyé par christophe31 Voir le message
                  Quand j'ai voulus transférer les articles d'une bdd à une autre, j'ai butté sur la table Asset, qui dépendait des composants, des articles et des rubriques... Mais peut-être me trompe-je ?
                  Si c'est pour cloner un site (donc à l'identique en effaçant la DB de destination pour la remplacer par les DB source), pas de soucis.

                  Mais si c'est pour injecter par exemple des articles (et que des articles) d'un site vers un autre, déjà rien qu'au niveau des users et des catégories tu vas avoir un problème.
                  Comme indiqué dans ma réponse, il faudra faire un mappage (tables de correspondances id<->id user, id <-> id catégories, etc... entre les 2 sites).

                  Et pour les droits, les tags, etc... c'est plus complexe.
                  Et il faut aussi importer les images, avoir les même plugin actifs, etc...
                  A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                  Rejoignez le Joomla Users Groupe Alsace...
                  roland_d_alsace va-t-il devenir roland_du_grand_est ?

                  Commentaire


                  • #10
                    dans mon cas, j'avais exporter mes articles spip, dans un fichier excel. J'ai modifié les users, pour qu'ils existent dans joomla, et j'ai attribué les rubriques, transféré les images via FTP, et remappé mes colonnes comme il faut.... Donc pas de soucis, mais la table Asset, elle me posait problème, car en important mes articles ainsi, je n'ai pas mis à jour ma table asset.

                    Commentaire


                    • #11
                      Bonjour,
                      et sinon tu as essayé ce site qui propose justement de passer d'un cms a un autre ?


                      Je rejoins Rolland, chaque Cms a sa logique (et heureusement) Joomla! embarque quand même pas mal de truc que SPIP n'a pas ... d'ou les liaisons de mappage entre plusieurs tables ...
                      Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer
                      Cette année, le JoomlaDay FR a lieu à Bruxelles, les 20 et 21 mai 2022, plus d'infos et inscriptions : www.joomladay.fr

                      Commentaire


                      • #12
                        Envoyé par christophe31 Voir le message
                        dans mon cas, j'avais exporter mes articles spip, dans un fichier excel. J'ai modifié les users, pour qu'ils existent dans joomla, et j'ai attribué les rubriques, transféré les images via FTP, et remappé mes colonnes comme il faut.... Donc pas de soucis, mais la table Asset, elle me posait problème, car en important mes articles ainsi, je n'ai pas mis à jour ma table asset.
                        Je suis en déplacement, je n'ai pas toutes les infos, mais la génération automatique d'articles ce sont des manips que je fais dans certains de mes composants.
                        J'ai aussi fait des "moulinettes" de reprise de sites vers Joomla (forums, annonces, articles, etc...).

                        Le plus simple est de s'inspirer des méthode du CMS de destination (ce qui accessoire permet aussi d'apprendre la nouvelle logique).
                        Il te faut donc voir comment com_content enregistre un article et laisser gérer la table assets par ses fonctions.

                        Apparemment tu es développeur, voici donc un petit début d'une méthode d’enregistrement d'un article (en supposant que tu es sur du Joomla 3.+, et à adapter selon tes besoins) :

                        Code PHP:
                             public static function store($Param)
                            {
                                if (
                        version_compare(JVERSION'3.0''lt')) {
                                    
                        JTable::addIncludePath(JPATH_PLATFORM 'joomla/database/table');
                                }

                                
                        $app=\Joomla\CMS\Factory::getApplication();
                                
                        $article JTable::getInstance('content');

                                if(!
                        property_exists($Param,'title')|| $Param->title==''){
                                    
                        $app->enqueueMessage('Il faut donner un titre à l\'article','NOTICE');
                                    return 
                        false;
                                }
                                
                        $article->title            $Param->title;

                                
                        // il faut faire une recherche sur l'alias, voir si l'article n'existe pas déjà

                                // S'il existe verifier l'auteur et faire une maj, si non publié


                                
                        if(property_exists($Param,'introtext'))$article->introtext        $Param->introtext;
                                if(
                        property_exists($Param,'fulltext'))$article->fulltext $Param->fulltext;

                                if(!
                        property_exists($Param,'catid')|| (int)$Param->catid<=0){
                                    
                        $app->enqueueMessage('Il faut donner une catégorie à l\'article','NOTICE');
                                    return 
                        false;
                                }
                                
                        $article->catid            $Param->catid;

                                if(
                        property_exists($Param,'alias')){
                                    
                        $article->alias $Param->alias;
                                }else{
                                    
                        $article->alias JFilterOutput::stringURLSafe($Param->title.' ' self::_next_article_id());
                                }

                                
                        $DH=new DateTime();
                                
                        $date \Joomla\CMS\Factory::getDate($DH->getTimestamp())->toSQL();


                                
                        $article->created_by_alias '';
                                
                        $article->state            1;
                                
                        $article->access           1;

                                if(
                        property_exists($Param,'publish_up')){
                                    
                        $article->publish_up \Joomla\CMS\Factory::getDate($Param->publish_up)->toSQL();
                                }else{
                                    if(
                        property_exists($Param,'publish_up_in_mn')){
                                        
                        $DH->add(new DateInterval('PT'.$Param->publish_up_in_mn.'M'));
                                            
                        $article->publish_up \Joomla\CMS\Factory::getDate($DH->getTimestamp())->toSQL();
                                    }elseif(!
                        property_exists($article,'publish_up') || !$article->publish_up){
                                        
                        $article->publish_up $date;
                                    }
                                }
                                if(
                        property_exists($Param,'metadata')){
                                    
                        $article->metadata="";
                                    if(
                        is_array($Param->metadata)){
                                        foreach (
                        $Param->metadata AS $metadata){
                                            if(
                        $article->metadata<>""){
                                                
                        $article->metadata.=',';
                                            }else{
                                                
                        $article->metadata.='{';
                                            }
                                            
                        $article->metadata.='"'.$metadata.'":""';
                                        }
                                        if(
                        $article->metadata<>""){
                                            
                        $article->metadata.='}';
                                        }
                                    }else{
                                        
                        $article->metadata.='{"'.$Param->metadata.'":""}';
                                    }
                                }
                                    
                        //$article->metadata         = '{"page_title":"","author":"","robots":""}';
                                
                        $article->language         '*';
                                if(
                        property_exists($Param'tags')) $article->newTags $Param->tags;
                                if(!
                        self::_article_store($article)) return false;

                                return 
                        $article;
                            }

                            private static function 
                        _article_store(&$article){

                                if (!
                        $article->check()) {
                                    
                        $app->enqueueMessage($article->getError(),'NOTICE');
                                    return 
                        FALSE;
                                }

                                
                        JPluginHelper::importPlugin('content');
                                
                        $dispatcher    JEventDispatcher::getInstance();

                                
                        $result $dispatcher->trigger('onContentBeforeSave', array('com_content.article', &$articletrue));
                                if (
                        in_array(false$resulttrue))
                                {
                                    
                        // There are some errors in the plugins


                                    
                        try
                                    {

                                        
                        JLog::add(JText::sprintf('COM_GSKI_ARTICLE_NON_ENREGISTRE_ERREUR_PLUGINS',implode(', '$object_file->getErrors())),
                                                
                        JLog::INFO,
                                                
                        'upload'
                                                
                        );
                                    }
                                    catch (
                        RuntimeException $exception)
                                    {
                                        
                        // Informational log only
                                    
                        }
                                    
                        $app->enqueueMessage(JText::sprintf('COM_GSKI_ARTICLE_NON_ENREGISTRE_ERREUR_PLUGINS',implode(', '$object_file->getErrors())),'ERROR');
                                    return 
                        false;
                                }

                                if (!
                        $article->store()) {
                                    
                        $app->enqueueMessage($article->getError());
                                    return 
                        FALSE;
                                }

                                
                        // Trigger the onContentAfterSave event.
                                
                        $dispatcher->trigger('onContentAfterSave', array('com_content.article', &$articletrue));

                                return 
                        true;
                            } 
                        Dernière édition par roland_d_alsace à 07/05/2018, 14h36
                        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                        Rejoignez le Joomla Users Groupe Alsace...
                        roland_d_alsace va-t-il devenir roland_du_grand_est ?

                        Commentaire


                        • #13
                          Je ne suis pas encore développeur, mais merci pour le bout de code. Je suis un bon bidouilleur, rien de plus.
                          Et attention, je ne dis pas que Spip est meilleur que Joomla, je dis juste que sur l'export du com_content, joomla est galère. Le but de la discussion n'est pas de savoir comment programmer l'export, mais juste de savoir si la version 4 allait simplifier la démarche...

                          Quand à cms2cms, c'est une solution payante, donc pas intéressante pour moi. J'ai pu avoir une licence de SP transfert, et c'était très bien (à qqs bug prés).

                          Merci à vous.

                          Commentaire


                          • #14
                            meme proble que moi

                            Commentaire


                            • #15
                              Envoyé par christophe31 Voir le message
                              Quand à cms2cms, c'est une solution payante, donc pas intéressante pour moi. J'ai pu avoir une licence de SP transfert, et c'était très bien (à qqs bug prés)....
                              Ne pas oublier J2XML (cité par Robert en début de conversation) qui fait très bien le travail aussi pour les menus/articles/catégories/utilisateurs/.. en version gratuite.https://www.eshiol.it/joomla/j2xml/j2xml-3.html

                              Pascal
                              christophe31 aime ceci.
                              If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X