We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25059
    • 47 Posts
    ehlo shocked

    Bon, je suis tout nouveau sur MODx, donc patapai...
    J’ai fait quelques recherches rapidement avec quelques tests en parallèle mais je crois pas que je m’y prend bien.
    Voilà, j’ai un script php couplé avec une base de données que j’utilise actuellement pour afficher des fiches (pour ceux que ça interresse, http://www.ridercrazy.com/index.php?page=coursfr ).
    Bon, le script est carrément crade (codé à la rache via dreamweaver dans un moment de speed) mais fonctionnel en tant que tel.
    Je suis passé sous MODx hier, curieux des possibilités qu’offrent ce cms. Pour le moment, j’ai réussi à faire tout ce que je voulais mais là je bloque.
    J’ai tenté de mettre mon code brut dans un snippet, sans succès.

    Comment dois-je m’y prendre ? Dois-je apporter des modifications à mon code (connexion à la bdd, etc...) ?
    Je ne vous ferais pas l’affront de poster mon code directement (j’ai honte) mais si c’est nécessaire, faites moi signe wink

    Merci d’avance pour vos réponses (et si y’a des dev sur la partie francophone: félicitations pour ce magnifique cms.)
      :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
      • 11975
      • 2,542 Posts
      Salut,

      j’ai survolé ton site et selon moi sauf la question de la migration des données vers la base de données modx pourquoi conserver ton script alors qu’un snippet comme Ditto(voir ressources) est parfaitement à même de le faire.
      Pour ce qui est du transfert des données depuis ta base dans la table site_content de modx tu pourrais ecrire un script de migration assez facilement avec l’api docmanager(voir ressources).
      en plus de cette façon tu profiterais pleinement des autres ressources offertes par modX comme wayfinder(constructeur de menu hautement parametrable) de tagCloud, etc ....

      Si malgré tout tu souhaites conserver ton modele actuel, il nous faudra un peu plus de précisions sur ton script et sans doute le code.

      ;-)

        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 25059
        • 47 Posts
        Pour Ditto, j’ai vu il y’a 5 min que c’était le remplaçant de newslisting... déjà, ça va me faire du boulot en plus shocked
        Bon, au niveau de la base de données, c’est une bonne idée que de la migrer... enfin, il va falloir que je me plonge dans la doc pour faire tout ça :/

        M’en vais regarder tout de suite shocked
          :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
          • 25059
          • 47 Posts
          Je viens de lurker vite fait docmanager...
          En gros, je fais un script php avec un appel de cette class en boucle pour créer les docs un par un issus de ma base de données ? (question oratoire)

          Manière de pas poster pour rien:
          $doc->Set('parent',$folder);
          Je met l’id du dossier là ?
            :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
            • 11975
            • 2,542 Posts
            Je sais pas si cela te sera utile mais voici un script que j’ai écrit (je ne suis pas développeur) pour générer du contenu pour un test de performance.
            Il fait appel à l’api docmanagement.
            En le modifiant tu pourras avoir les bases de ton script de migration.
            je ne sais pas comment tu comptes organiser tes cours dans modx.
            Est ce que tu vas créer des catégories (folder) ? ou tout rassembler dans un unique répertoire.

                require_once('assets/snippets/docapi/docmanagement.php');
                $folder = 2;//id du folder parent
                $createnum = 200;//nombre de documents à créer
                $photo= array(
                    0 =>"assets/images/photos/B52.jpg",
                    1 =>"assets/images/photos/C25.jpg",
                    2 =>"assets/images/photos/D32.jpg",
                    3 =>"assets/images/photos/D80.jpg",
                    4 =>"assets/images/photos/F26.jpg",
                    5 =>"assets/images/photos/F96.jpg"
                    );
                $tag= array(//categories TV
                    0 =>"legumes",
                    1 =>"viandes"
                    );
            	for($i=0;$i<$createnum;$i++){
            	   $doc = new Document();
            
            	   $doc->Set('parent',$folder);
            
            	   $doc->Set('pagetitle','photo'.$i);
            
            	   $doc->Set('content','');
            
            	   $doc->Set('template','fichePhoto');
            	   $doc->Set('hidemenu',0);
            	   $doc->Set('published',1);
            	   $doc->Set('tvthumbImg',$photo[rand(0,count($photo)-1)]);
            	   $doc->Set('tvtagsPhoto',$tag[rand(0,count($tag)-1)]);
            
            	   $doc->Save();
            	   }
            
              Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
              • 25059
              • 47 Posts
              Merci pour ce bout de code d’appui wink

              Oui, je pense que je vais faire un unique dossier avec toutes les leçons dedans... enfin, je vois pas vraiment comment je pourrais les organiser autrement alors je vais faire au plus simple shocked
                :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
                • 11975
                • 2,542 Posts
                Etant donné que tu n’as pas énormément de données le code avec qq modifs devraient fonctionner.
                Si tu devais créer d’avantage de documents il faudrait certainement rajouter une gestion du temps pour ne pas excéder le temps maxi d’execution de ton serveur (30 sec en moyenne).

                Au fait, Bienvenue parmi nous smiley
                  Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                  • 25059
                  • 47 Posts
                  Quote from: heliotrope at Aug 08, 2006, 10:08 AM

                  Etant donné que tu n’as pas énormément de données le code avec qq modifs devraient fonctionner.
                  Si tu devais créer d’avantage de documents il faudrait certainement rajouter une gestion du temps pour ne pas excéder le temps maxi d’execution de ton serveur (30 sec en moyenne).

                  Au fait, Bienvenue parmi nous smiley
                  Merci...

                  Pour le temps d’éxecution, cela n’aurait pas été un problème... je bidouille depuis un moment sur le serveur et j’ai des scripts d’update de données qui dure près de 10 min, donc ça je sais faire shocked
                    :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
                    • 25059
                    • 47 Posts
                    Bon, je m’en sors pas... je pensais que ça serait tout cuit mais là, ça fait deux heures que je modifie docmanager.class.inc.php qui me fait des erreurs à tout va et que j’essaie de les contourner.

                    j’ai fait un script à la racine:
                    <?php
                    $hostname_cours = "localhost";
                    $database_cours = "***";
                    $username_cours = "***";
                    $password_cours = "***";
                    $cours = mysql_connect($hostname_cours, $username_cours, $password_cours) or trigger_error(mysql_error(),E_USER_ERROR);
                    
                    mysql_select_db($database_cours, $cours);
                    $query_affiche_tous = "SELECT * FROM coursfr ORDER BY id ASC";
                    $affiche_tous = mysql_query($query_affiche_tous, $cours) or die(mysql_error());
                    $row_affiche_tous = mysql_fetch_assoc($affiche_tous);
                    $totalRows_affiche_tous = mysql_num_rows($affiche_tous);
                    
                    do {
                    	require_once('assets/libs/docmanager/docmanager.class.inc.php');
                    	$doc = new Document();
                    	$doc->Set('parent',5);
                    	$doc->Set('pagetitle','Leçon '.$row_affiche_tous[id].' : '.$row_affiche_tous[titre]);
                    	$doc->Set('alias','lecon'.$row_affiche_tous[id]);
                    	$contenu = "<p>".nl2br($row_affiche_tous['cours'])."</p>\n<p align=\"right\"><a href=\"http://forum.hardware.fr/hardwarefr/Discussions/sujet-19265-".$row_affiche_tous['link']."\">3615buck@HFR</a></p>";
                    	$doc->Set('content',$contenu);
                    	$doc->Set('template',5);
                    	$doc->Save();
                    } while ($row_affiche_tous = mysql_fetch_assoc($affiche_tous));
                    mysql_free_resul($affiche_tous);
                    ?>
                    
                    Première erreur, la class Document n’existe pas... Bon, j’ouvre le docmanager.class.inc.php. class -> Docmanager. Qu’à celà ne tienne, je le remplace dans mon script.
                    $doc = new Docmanager();

                    Ensuite, j’ai eu droit à
                    Call to a member function getFullTableName() on a non-object
                    puis à
                    Call to a member function getValue() on a non-object
                    et enfin
                    Call to a member function update()
                    que j’ai tous contourné en modifiant le code sauf le dernier qui se situe dans la fonction save...

                    En gros, si je comprend bien, il arrive pas à se connecter à la base :/

                    Enfin, je crois que je m’y prend mal encore. Ce script, je le lance à la main.... mais y’a rien qui permet à docmanager d’aller pécher les infos dans la base, il a pas ce qu’il faut... Faudrait pas que je lance ce script dans modx ?
                    Bon, j’ai essayé de faire un snippet, sans succès shocked

                    (tin, j’ai l’impression d’être un pur noob, plus d’une heure que je galère là-dessus alors que le script m’a pris 2 min à faire :/)
                      :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx
                      • 25059
                      • 47 Posts
                      Bon, faudra que je me repenche sur cette lib mais là ça m’a saoulé... du coup, passage en force, directement par la bdd shocked

                      <?php
                      $hostname_cours = "localhost";
                      $database_cours = "***";
                      $username_cours = "***";
                      $password_cours = "***";
                      $cours = mysql_connect($hostname_cours, $username_cours, $password_cours) or trigger_error(mysql_error(),E_USER_ERROR);
                      
                      mysql_select_db($database_cours, $cours);
                      $query_affiche_tous = "SELECT * FROM coursfr ORDER BY id ASC";
                      $affiche_tous = mysql_query($query_affiche_tous, $cours) or die(mysql_error());
                      $row_affiche_tous = mysql_fetch_assoc($affiche_tous);
                      $totalRows_affiche_tous = mysql_num_rows($affiche_tous);
                      
                      $database_cours = "modx";
                      $cours = mysql_connect($hostname_cours, $username_cours, $password_cours) or trigger_error(mysql_error(),E_USER_ERROR);
                      do {
                      mysql_select_db($database_cours, $cours);
                      $requete = "
                            INSERT
                            INTO `site_content` (
                               `type`,
                               `contentType`,
                               `pagetitle`,
                               `longtitle`,
                               `alias`,
                               `published`,
                               `parent`,
                               `content`,
                               `template`,
                               `createdby`,
                               `createdon`,
                               `publishedon`
                            )
                            VALUES (
                               'document',
                               'text/html',
                               'Leçon".$row_affiche_tous['id']."',
                               'Leçon ".$row_affiche_tous['id']." : ".addslashes($row_affiche_tous['titre'])."',
                               'lecon".$row_affiche_tous['id']."',
                               '1',
                               '5',
                               '<p>".addslashes(nl2br($row_affiche_tous['cours']))."</p><p align=\"right\"><a href=\"http://forum.hardware.fr/hardwarefr/Discussions/sujet-19265-".$row_affiche_tous['link']."\">3615buck@HFR</a></p>',
                               '5',
                               '1',
                               now(),
                               '1'
                            )
                      ";
                      $query = mysql_query($requete) or die(mysql_error());
                      } while ($row_affiche_tous = mysql_fetch_assoc($affiche_tous));
                      
                      ?>
                      
                        :: RiderCrazy.Com :: Server@Home - [WIP] En cours de transition vers MODx