We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 38506
    • 103 Posts
    Hello,

    I have a problem: I created by the new pages automatically by injecting data in modx __ site_content via a script.
    I use urls friendly. But in create pages automatically, the url does not work. There is always urls id=XX when we click " to see the resource ". Do you know where from it can come?
      • 18608
      • 112 Posts
      Mathias Dannevang Reply #2, 10 years ago
      Have you activated friendly URL's in system settings?
        Mathias Dannevang | Webdesigner at dannevang.org | Tweets @dannevang
        • 38506
        • 103 Posts
        yes !!
          • 18608
          • 112 Posts
          Mathias Dannevang Reply #4, 10 years ago
          Could it be that the script has set a "Freeze URI" under Settings?
            Mathias Dannevang | Webdesigner at dannevang.org | Tweets @dannevang
            • 3749
            • 24,544 Posts
            See if editing and saving a page solves it for that page. My guess is that your import script doesn't set the uri field (which is normally set automatically when the resource is saved). This is a good reason to use the resources/create processor when creating new resources in code.

            If saving a page solves it, this utility snippet may solve your problem:

            $docs = $modx->getCollection('modResource');
            foreach($docs as $doc) {
               $doc->save();
            }
            
            [ed. note: BobRay last edited this post 10 years ago.]
              Did I help you? Buy me a beer
              Get my Book: MODX:The Official Guide
              MODX info for everyone: http://bobsguides.com/modx.html
              My MODX Extras
              Bob's Guides is now hosted at A2 MODX Hosting
              • 38506
              • 103 Posts
              Mathias : What's "Freeze URI"?

              Bobray : I added automatically fields uri ! I tried your code but there is an error : Fatal error: Call to a member function getCollection() on a non-object in /homez.582/maisonsdw/www/display_mdcessai.php on line 264
                • 3749
                • 24,544 Posts
                You have to run the code as a snippet inside MODX, or do this: http://bobsguides.com/blog.html/2013/07/13/using-modx-outside-of-modx/
                  Did I help you? Buy me a beer
                  Get my Book: MODX:The Official Guide
                  MODX info for everyone: http://bobsguides.com/modx.html
                  My MODX Extras
                  Bob's Guides is now hosted at A2 MODX Hosting
                  • 38506
                  • 103 Posts
                  yes I have to run the code as a snippet inside Modx... But it's not work...

                  <?php
                  //////////////////////////////////////////////////// On ouvre les fichiers zip //////////////////////////////////////////
                  
                  require_once('pclzip.lib.php');
                  
                  function rmdir_recursive($dir)
                  {
                  	//Liste le contenu du répertoire dans un tableau
                  	$dir_content = scandir($dir);
                  	//Est-ce bien un répertoire?
                  	if($dir_content !== FALSE){
                  		//Pour chaque entrée du répertoire
                  		foreach ($dir_content as $entry)
                  		{
                  			//Raccourcis symboliques sous Unix, on passe
                  			if(!in_array($entry, array('.','..'))){
                  				//On retrouve le chemin par rapport au début
                  				$entry = $dir . '/' . $entry;
                  				//Cette entrée n'est pas un dossier: on l'efface
                  				if(!is_dir($entry)){
                  					unlink($entry);
                  				}
                  				//Cette entrée est un dossier, on recommence sur ce dossier
                  				else{
                  					rmdir_recursive($entry);
                  				}
                  			}
                  		}
                  	}
                  	//On a bien effacé toutes les entrées du dossier, on peut à présent l'effacer
                  	rmdir($dir);
                  }
                  
                  
                  @rmdir_recursive('MCADA');
                  
                  
                  
                  $zip = new ZipArchive;
                  if ($zip->open('MCADA.zip') === TRUE) {
                  $zip->extractTo('MCADA');
                  $zip->close();
                  
                  } else {
                  echo 'échec';
                  }
                  
                  /////////////////////////////////////////////////////////On remet la base à 0 ///////////////////////////////////////////////////////
                  
                  
                  
                  mysql_connect("bdd", "root", "pass"); 
                  mysql_select_db("annonces");
                  
                  $strSQL = "DELETE FROM `mdc`";
                  
                  mysql_query($strSQL) or die(mysql_error());
                  
                  mysql_connect("bdd", "root", "pass") or die (mysql_error ());
                  mysql_select_db("MDC");
                  
                  $strSQL2 = "DELETE FROM `tradi_site_content` WHERE `parent` =12 AND `publishedby`= 0 ";
                  
                  mysql_query($strSQL2) or die(mysql_error());
                  $strSQL2 = "DELETE FROM `tradi_site_content` WHERE `parent` =13 AND `publishedby`= 0 ";
                  
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  
                  ///////////////////////////////////////////////////////////////////////////////// Créavilla 26////////////////////////////////////////////////////////////////
                  
                  $handle = fopen('MCADA/Annonces.csv', 'r');
                  
                  while (($c = fgetcsv($handle, 5000, "!#",'"','\\')) !== FALSE)
                  {
                  $agence = $c[0] ;
                  $agence = str_replace("#","",$agence);
                  $agence = utf8_encode($agence) ; 
                  
                  
                  $ville = $c[5] ;
                  $ville = str_replace("#","",$ville);
                  $ville = str_replace("\"","",$ville);
                  $ville = str_replace("'","",$ville); 
                  $ville = utf8_encode($ville) ; 
                  
                  
                  
                  $type = $c[3] ;
                  $type = str_replace("#","",$type);
                  $type = str_replace("\"","",$type);
                  $type = utf8_encode($type) ; 
                  
                  $titre = $c[19] ;
                  $titre = str_replace("#","",$titre);
                  $titre = str_replace("\"","",$titre);
                  $titre = str_replace("'","",$titre); 
                  $titre = utf8_encode($titre) ; 
                  
                  $resume = $c[20] ;
                  $resume = str_replace("#","",$resume);
                  $resume = str_replace("\"","",$resume);
                  $resume = str_replace(",","",$resume);
                  $resume = str_replace("'","",$resume); 
                  $resume = utf8_encode($resume) ;
                  
                  $contenu = $c[20] ;
                  $contenu = str_replace("#","",$contenu);
                  $contenu = str_replace("\"","",$contenu);
                  $contenu = str_replace(",","",$contenu); 
                  $contenu = str_replace("...","",$contenu); 
                  $contenu = str_replace("'","",$contenu); 
                  $contenu = utf8_encode($contenu) ;
                  
                  $ref = $c[1] ;
                  $ref = str_replace("#","",$ref);
                  $ref = str_replace("\"","",$ref);
                  $ref= addslashes($ref);
                  
                  
                  $tarif = $c[10] ;
                  $tarif = str_replace("#","",$tarif);
                  $tarif = str_replace("\"","",$tarif);
                  
                  $cp = $c[4] ;
                  $cp = str_replace("#","",$cp);
                  $cp = str_replace("\"","",$cp);
                  
                  $image1 = $c[84] ;
                  $image1 = str_replace("#","",$image1);
                  $image1 = str_replace("\"","",$image1);
                  
                  
                  $image2 = $c[85] ;
                  $image2 = str_replace("#","",$image2);
                  $image2 = str_replace("\"","",$image2);
                  
                  
                  
                  $image3 = $c[86] ;
                  $image3 = str_replace("#","",$image3);
                  $image3 = str_replace("\"","",$image3);
                  
                  $superficie = $c[16] ;
                  $superficie = str_replace('#"','',$superficie); 
                  
                  
                  //vos requetes SQL ici
                  mysql_connect("bdd", "root", "pass"); 
                  mysql_select_db("annonces");
                  
                  $sql = "INSERT INTO `mdc` VALUES ('','".$agence."', '".$ville."','".$type. "', '".$titre. "','".$resume. "','".$contenu. "','".$ref. "','".$tarif. "','".$cp. "','".$superficie. "','".$image1. "','".$image2. "','".$image3. "')";
                  
                  $req = mysql_query($sql)or die('<br> Erreur SQL ! '.$req.'<br />'.mysql_error());
                  }
                  
                  //////////////////////////////////////////////////////////////////// création des pages //////////////////////////////////////////////////////////////////////////////////////////// 
                  
                  
                  $reponses = mysql_query("SELECT * FROM `mdc` WHERE `type` = \"maison\" "); 
                  $reponses2 = mysql_query("SELECT * FROM `mdc` WHERE `type` = \"terrain\" "); 
                  
                  
                  $donnees = mysql_fetch_array($reponses) ;
                  $donnees2 = mysql_fetch_array($reponses2) ;
                  
                  while ($donnees = mysql_fetch_array($reponses)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
                  {
                  
                  $requete1 = $donnees['agence']; 
                  $requete2 = $donnees['ville']; 
                  $requete3 = $donnees['type']; 
                  $requete4 = $donnees['titre']; 
                  $requete6 = $donnees['contenu']; 
                  $requete5 = substr("$requete6", 0,90);
                  $requete7 = $donnees['ref']; 
                  $requete8 = $donnees['tarif']; 
                  $requete9 = $donnees['cp']; 
                  $requete10 = $donnees['image1']; 
                  $requete11 = $donnees['image2']; 
                  $requete12 = $donnees['image3']; 
                  //$num_var = array('id' => $id,'agence' => $requete1,'ville' => $requete2, 'type' => $requete3, '$pagetitle' =>$requete4, '$introtext' => $requete5, '$contenu' => $requete6, 'ref' => $requete7,'tarif' => $requete8,'cp' => $requete9, '$image1' => $requete10,'$image2' => $requete11, '$image3' => $requete12 );
                  
                  
                  
                  //$sql = "INSERT INTO tradi_site_content (pagetitle) VALUE ('coucou')"; 
                  
                  
                  //$sql = "INSERT INTO `tradi_site_content`(`id`, `pagetitle`) VALUES ('','coucou')";
                  
                  
                  // Connect to database server
                  $connexion= mysql_connect("bdd", "root", "pass") or die (mysql_error ()); 
                  // Select database
                  mysql_select_db("MDC") or die(mysql_error());
                  
                  
                  
                  $strSQL = "INSERT INTO tradi_site_content (pagetitle, template, parent, published, introtext, content, editedon, publishedon, createdon,publishedby ) VALUES('" .$requete4. "', 6, 13, 1,'" .$requete5. "','" .$requete6. "', '".time()."', '".time()."', '".time()."',1 )";
                  
                  mysql_query($strSQL) or die(mysql_error());
                  
                  
                  
                  $id = mysql_insert_id();
                  //TARIF
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (45,'" .$id. "','" .$requete8. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  //REF
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (46,'" .$id. "','" .$requete7. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  //VILLE
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (68,'" .$id. "','" .$requete2. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  //IMAGE PRINCIPALE
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (38,'" .$id. "','" .$requete10. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  //IMAGE2
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (50,'" .$id. "','" .$requete11. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  //IMAGE3
                  $strSQL = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (51,'" .$id. "','" .$requete12. "')";
                  mysql_query($strSQL) or die(mysql_error());
                  
                  
                  
                  $rest = substr("$requete9", 0, -3);
                  
                  
                  if($rest==26) {
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Drome";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  if ($rest==7){
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Ardeche";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  
                  if ($rest==38){
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Isere";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  
                  
                  // fin if
                  $docs = $modx->getCollection('modResource',null);
                  foreach($docs as $docs) {
                     $doc->save();
                  }
                  
                  } // fin maison
                  
                  // pour les terrains
                  mysql_connect("bdd", "root", "pass"); 
                  mysql_select_db("annonces");
                  
                  while ($donnees2 = mysql_fetch_array($reponses2)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
                  {
                  
                  $requete1 = $donnees2['agence']; 
                  $requete2 = strtoupper($donnees2['ville']); 
                  $requete3 = $donnees2['type']; 
                  $requete4 = "Terrain à $requete2"; 
                  
                  $requete6 = $donnees2['contenu'];
                  $requete5 = substr("$requete6", 0,90);
                  $requete7 = $donnees2['ref']; 
                  $requete8 = $donnees2['tarif']; 
                  $requete9 = $donnees2['cp']; 
                  $requete10 = $donnees2['image1']; 
                  $requete11 = $donnees2['image2']; 
                  $requete12 = $donnees2['image3']; 
                  $requete13 = $donnees2['superficie']; 
                  //$num_var = array('id' => $id,'agence' => $requete1,'ville' => $requete2, 'type' => $requete3, '$pagetitle' =>$requete4, '$introtext' => $requete5, '$contenu' => $requete6, 'ref' => $requete7,'tarif' => $requete8,'cp' => $requete9, '$image1' => $requete10,'$image2' => $requete11, '$image3' => $requete12,'superficie' => $requete13 );
                  
                  
                  
                  // Connect to database server
                  $connexion= mysql_connect("bdd", "root", "pass") or die (mysql_error ()); 
                  
                  // Select database
                  mysql_select_db("MDC") or die(mysql_error());
                  
                  
                  
                  $strSQL2 = "INSERT INTO tradi_site_content (pagetitle, template, parent, published, introtext, content, editedon, publishedon, createdon ) VALUES('" .$requete4. "', 12, 12, 1,'" .$requete5. "','" .$requete6. "', '".time()."', '".time()."', '".time()."' )";
                  
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  
                  $id = mysql_insert_id();
                  //TARIF
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (45,'" .$id. "','" .$requete8. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  //REF
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (46,'" .$id. "','" .$requete7. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  //VILLE
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (68,'" .$id. "','" .$requete2. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  //cp
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (69,'" .$id. "','" .$requete9. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  //IMAGE PRINCIPALE
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (38,'" .$id. "','" .$requete10. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  //IMAGE2
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (50,'" .$id. "','" .$requete11. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  //IMAGE3
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (51,'" .$id. "','" .$requete12. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  
                  
                  $rest = substr("$requete9", 0, -3);
                  
                  
                  if($rest==26) {
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Drome";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  if ($rest==7){
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Ardeche";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  
                  
                  if ($rest==38){
                  
                  $tel="04 82 75 25 13";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (47,'" .$id. "','" .$tel. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  $departement="Isere";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (53,'" .$id. "','" .$departement. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  
                  }
                  
                  
                  
                  if ($requete13 < 400) {
                  $superficie= " inferieure à 400m2 ";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (72,'" .$id. "','" .$superficie. "')";
                  mysql_query($strSQL2) or die(mysql_error());
                  // echo "superficie : $strSQL2.'<br/>'";
                  }
                  
                  if (($requete13 > 400 ) and ($requete13 < 600 )){
                  $superficie = " 400 à 600m² ";
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (72,'" .$id. "','" .$superficie. "')";
                  // echo "superficie : $strSQL2.'<br/>'";
                  }
                  if ($requete13 > 600) {
                  $superficie = " superieure à 600m²"; 
                  $strSQL2 = "INSERT INTO tradi_site_tmplvar_contentvalues (tmplvarid, contentid, value) VALUE (72,'" .$id. "','" .$superficie. "')";
                  //echo "superficie : $strSQL2.'<br/>'";
                  }
                  
                  else {
                  // echo"ne rentre dans aucune boucle";
                  }
                  $docs = $modx->getCollection('modResource');
                  foreach($docs as $dos) {
                     $doc->save();
                  }
                  
                  
                  } // fin terrain
                  
                  
                  
                    • 3749
                    • 24,544 Posts
                    Typo on my part. Line 395 should be:

                    foreach($docs as $doc) {
                      Did I help you? Buy me a beer
                      Get my Book: MODX:The Official Guide
                      MODX info for everyone: http://bobsguides.com/modx.html
                      My MODX Extras
                      Bob's Guides is now hosted at A2 MODX Hosting
                      • 38506
                      • 103 Posts

                      I tried with the correct code but I always mistake ... I put it inside a snippet!