[Résolu] Création de nouvelles pages dynamiquement

Support en français pour CMS Made Simple.

Moderator: jce76350

Post Reply
fourmis
Forum Members
Forum Members
Posts: 22
Joined: Fri Sep 12, 2008 2:56 pm

[Résolu] Création de nouvelles pages dynamiquement

Post by fourmis »

Bonjour,
Après quelques jours de recherche, je m'avoue vaincue! J'ai besoin d'un coup de main pour pouvoir poursuivre mon travail.
Je fais afficher des images à l'aide de l'Album. Après une recherche par mot clé faite à la bd, le résultat s'affiche dans la même page.
Comme il y a beaucoup d'images, je dois limiter la quantité de photos à afficher par page. C'est presque réussi, sauf que j'ignore comment faire pour créer des nouvelles pages dynamiquement avec cmsms  :-\
Est-ce que quelqu'un pourrait me donner des indices où me dire où trouver cette information s.v.p ?
Toute forme d'aide sera bien appréciée. Merci.
Last edited by fourmis on Sun Sep 14, 2008 6:25 pm, edited 1 time in total.
Jean le Chauve

Re: Création de nouvelles pages dynamiquement

Post by Jean le Chauve »

Bonjour, il y a 2 tables utilisées pour le contenu : cms_content, cms_content_props plus les 2 suivantes mais que tu n'as pas besoin de modifier.
Examine-les, tu devrais facilement les comprendre.

J'ai créé plus de 900 pages il y a une semaine, je te met l'udt que j'ai utilisé, il n'est pas professionnel ni optimisé, mais il m'a suffit et prend en compte le SEO (seulement quelques petites modif à la main dans l'éditeur quand il reste quelque problème d'accent.)
Je te le met tel quel.
J'espère que cela pourra te mettre sur la voie.
J'ai une table (zoom_candidat08) où se trouvent les infos à insérer dans le cms et une table supplémentaire (rel_id_zoom_candidat_id_cms_content) car j'ai encore besoin de certaines variables et dois donc relier les id de zoom_candidat08 et cms_content
Merci aux gourous s'ils peuvent corriger mes erreurs. ;)

Code: Select all

function stripAccents($string){
	return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}
$remplacements = array('’'  => '-', '\"' => '-', '_' => '-', ';' => '', ':' => '', '\"' => '', '!' => '', '?' => '', ',' => '', 'à' => 'a', 'â' => 'a', 'ä' => 'a', 'é' => 'e', 'è' => 'e', 'ë' => 'e', 'ê' => 'e', 'î' => 'i', 'í' => 'i', 'ï' => 'i', 'ô' => 'o', 'ö' => 'o', 'ù' => 'u', 'û' => 'u', 'ü' => 'u', '(' => '-', ')' => ' ', '\'' => '-', '.' => '-', '..' => ' ', '...' => '-', '/' => '-','\&' => '-', '&amp' => '-', 'à' => 'a', 'â' => 'a', 'é' => 'e', 'è' => 'e', 'ê' => 'e', 'ë' => 'e', 'ï' => 'i', 'î' => 'i', 'ô' => 'o', 'ù' => 'u', 'û' => 'u', 'À' => 'a', 'Â' => 'a', 'É' => 'e', 'Î' => 'i', 'Ô' => 'o', 'Ù' => 'u', 'Û' => 'u', '---' => '-', '--' => '-', '%' => 'pour-cent', '+' => 'plus', '"' => '-', ''' => '-' );
$replacePhoto = array('é' => 'e', 'è' => 'e', 'û' => 'u', 'JPG' => 'jpg', 'JPEG' => 'jpg', 'jpeg' => 'jpg', 'GIF' => 'gif',  'BMP' => 'bmp',  '\'' => '-',  ' ' => '-', '(1)' => '', '(2)' => '', '[1]' => '', '[2]' => '', ':' => '-' );
$remplacements1 = array('\"' => '-', '_' => '-', ';' => '', ':' => '', '\"' => '', '!' => '', '?' => '', ',' => '', 'à ' => 'a', 'â' => 'a', 'ä' => 'a', 'ç' => 'c', 'î' => 'i', 'í' => 'i', 'ô' => 'o', 'ö' => 'o', 'ù' => 'u', 'û' => 'u', 'ü' => 'u', '(' => '-', ')' => ' ', '\'' => '-', '.' => '-', '..' => ' ', '...' => '-', '/' => '-','\&' => '-', '&amp' => '-', 'à' => 'a', 'â' => 'a', 'é' => 'e', 'è' => 'e', 'ê' => 'e', 'ë' => 'e', 'î' => 'i', 'ô' => 'o', 'ù' => 'u', 'û' => 'u', 'À' => 'a', 'Â' => 'a', 'É' => 'e', 'Î' => 'i', 'Ô' => 'o', 'Ù' => 'u', 'Û' => 'u','&cecedil;' => 'ç', '---' => '-', '--' => '-', '%' => 'pour-cent', '+' => 'plus', '"' => '-', ''' => '-' );
//variables pour l'insertion dans cms_content et cms_content_props
//à toi de les adapter
$content_id = 1000;
$item = 1;
$owner_id = 1;
$parent_id = 97;
$template_id = 25;
$default_content = 0;
$show_in_menu = 1;
$collapsed = "";
$markup = "html";
$active = 1;
$cachable = 1;
$prop_names = "content_en,target,pagedata,extra1,extra2,extra3";
$tabindex = "";
$accesskey = "";
$last_modified_by = "1";
$modified_date = "2008-09-07 12:28:56";
//on va chercher les infos dans zoom_candidat08
global $gCms;
$db = &$gCms->GetDb();
//mettre l'id
$query = "SELECT * FROM zoom_candidat08 WHERE display = 1";
$dbresult = &$db->Execute($query);
while ($dbresult && !$dbresult->EOF)
{
	$id = $dbresult->fields['id_candidature'];
        $pass = $dbresult->fields['pass'];
        //mise en relation des champs avec function/array.php de l'ancien site
	if ($dbresult->fields['sujet_candidature'] == 0) $sujet_candidature = "projet";
	elseif ($dbresult->fields['sujet_candidature'] == 1) $sujet_candidature = "talent";
	else ($sujet_candidature = "projet+talent");
    echo "<p>";
	$type_groupe =  $dbresult->fields['type_groupe'];
	switch ($type_groupe[0])
	{
		case "0":
			$type_groupe = "Asbl";
			break;
		case 1:
			$type_groupe = "Association de fait";
			break;
		case 2:
			$type_groupe = "Groupe informel";
			break;
		case 3:
			$type_groupe = "S.A.";
			break;
		case 4:
			$type_groupe = "Sprl";
			break;
		case 5:
			$type_groupe = "Classe";
			break;
		case 6:
			$type_groupe = "École";
			break;
		case 7:
			$type_groupe = "Mouvement de jeunesse";
			break;
		case 8:
			$type_groupe = trim($dbresult->fields['typeAutre_groupe']);
			break;
		case 9:
			$type_groupe = "s.a. - s.p.r.l.";
			break;
		case 10:
			$type_groupe = "coopérative";
			break;
		case 11:
			$type_groupe = "classe - école";
			break;
		case 12:
			$type_groupe = "Asbl";
			break;
		default: $type_groupe = "non";
	}
	$theme_candidature = $dbresult->fields['theme_candidature'];
	switch ($theme_candidature[0])
	{
		case 0:
			$theme_candidature = "arts et culture";
			break;
		case 2:
			$theme_candidature = "sport";
			break;
		case 3:
			$theme_candidature = "santé";
			break;
		case 4:
			$theme_candidature = "citoyenneté action sociale";
			break;
		case 8:
			$theme_candidature = "enseignement et formation";
			break;
		case 10:
			$theme_candidature = trim(strToLower($dbresult->fields['themeAutre_candidature']));
			break;
		case 11:
			$theme_candidature = "science environnement NTIC";
			break;
		case 12:
			$theme_candidature = "entreprenariat économie emploi";
			break;
		default: $theme_candidature = "";
	}
    $theme_categorie = trim(rtrim($dbresult->fields['theme_categorie'], " - "));
    $theme_autreCategorie = trim($dbresult->fields['theme_autreCategorie']);
    $theme_categorie = str_replace("- Autre", strToLower($theme_autreCategorie), $theme_categorie);
     if(trim($theme_categorie) == "Autre") $theme_categorie = strToLower(trim($dbresult->fields['theme_autreCategorie']));
     $theme_sousCategorie = $dbresult->fields['theme_sousCategorie'];
      if(trim($theme_sousCategorie) == "Autre -") $theme_sousCategorie = strToLower(trim(rtrim($dbresult->fields['theme_autreSousCategorie'], "- ")));
    
	//les photos
	$photo = trim(strtr($dbresult->fields['photo_candidat'], $replacePhoto));
	$photo2 = trim(strtr($dbresult->fields['photo2_candidat'], $replacePhoto));
	//titre_candidature
	$titre_candidature = trim($dbresult->fields['titre_candidature']);
	//nom et prenom
	$email_inscrivant = trim(strToLower($dbresult->fields['email_inscrivant']));
        $nom_candidat = $dbresult->fields['nom_candidat'];//1ère lettre de chaque mot en maj.
	$prenom_candidat = $dbresult->fields['prenom_candidat'];//idem
	$adresse_candidat = trim($dbresult->fields['adresse_candidat']);
	$numeroRue_candidat = $dbresult->fields['numeroRue_candidat'];
	$cp_candidat = $dbresult->fields['cp_structure'];
	$localite_candidat = $dbresult->fields['localite_candidat'];
	$province_candidat = $dbresult->fields['province_candidat'];
	$email_candidat = trim(strToLower($dbresult->fields['email_candidat']));
	$telephone_candidat = trim($dbresult->fields['telephone_candidat']);
	$site_candidat = trim($dbresult->fields['site_candidat']);
	$site_candidat = str_replace("\'", "?", $site_candidat);
	$site_candidat = str_replace("&", "&", $site_candidat);
	$site_candidat = str_replace("http://", "", $site_candidat);
	//structure
	$nom_groupe = trim($dbresult->fields['nom_groupe']);;
	$contact_groupe = trim($dbresult->fields['contact_groupe']);
	$adresse_groupe = trim($dbresult->fields['adresse_groupe']);
	$numeroRue_groupe = trim($dbresult->fields['numeroRue_groupe']);
	$nom_structure = trim($dbresult->fields['nom_structure']);
	$contact_structure = $dbresult->fields['contact_structure'];
	$telephone_structure = $dbresult->fields['telephone_structure'];
	$adresse_structure = $dbresult->fields['adresse_structure'];
	$numeroRue_structure = $dbresult->fields['numeroRue_structure'];
	$cp_structure = $dbresult->fields['cp_structure'];
	$localite_structure = $dbresult->fields['localite_structure'];
	$province_structure = $dbresult->fields['province_structure'];
	$email_structure = trim($dbresult->fields['email_structure']);
	$sexeContact_structure = $dbresult->fields['email_structure'];
	if($sexeContact_structure == 0) $sexeContact_structure = "Mr. ";
	if($sexeContact_structure == 1) $sexeContact_structure = "Mme. ";
	$site_structure = $dbresult->fields['site_structure'];
	$site_structure = str_replace("http://", "", $site_structure);
	//portee candidature
	$portee_candidature = trim($dbresult->fields['portee_candidature']);
	
	//public ciblé
	$public_candidature = trim($dbresult->fields['public_candidature']);
	
	//description du rédacteur
	$description_admin = nl2br(trim($dbresult->fields['description_admin']));
	$qualite_candidature = nl2br(trim($dbresult->fields['qualite_candidature']));
	//implémentation de l'id
	$param1 = $dbresult->fields['id_candidature'];//pour recherche cms_content, zoom_candidat        
	//type candidat			
	$type_candidat = $dbresult->fields['type_candidat'];
	if($type_candidat == "0") {$type_candidat = "jeune";}
	elseif ($type_candidat == "1") {$type_candidat = "groupe de jeunes";}
	else {$type_candidat = "structure";}
    //1ère balise <h3>$content_name</3> , $menu_text, $content_name			
	if($titre_candidature != "") {$content_name = trim($titre_candidature);}
    elseif($nom_groupe != "") {$content_name = $nom_groupe;}
	else {$content_name = $nom_candidat." ".$prenom_candidat;}
    $age_candidat = $dbresult->fields['age_candidat'];	
	//alias
	$content_alias = str_replace(""", "-", $content_name);//tout les mots minuscules séparés par un trait d'union
	$content_alias = str_replace("&apos;", "-", $content_alias);
        $content_alias = str_replace("’", "-", $content_alias);
	$content_alias = str_replace("\';", "-", $content_alias);
        $content_alias = strtr($content_alias, $remplacements);//on élimine les accents, ...
	$content_alias = strtr($content_alias, $remplacements1);//on élimine les accents, ...
	$content_alias = strToLower(stripAccents($content_alias));//on élimine les accents, ...
	$content_alias = str_replace(" ", "-", $content_alias);//on remplace les espaces s'il en reste
	$content_alias = str_replace("---", "-", $content_alias);//on nettoie les traits d'union
	$content_alias = str_replace("--", "-", $content_alias);//idem
        $content_alias = rtrim($content_alias, "-");//s'il traine un - au bout           
	//on affiche
	$content = "<div class='candidat'><h1>".$content_name."</h1>";
	if($photo != "")
	{
		$content.= "<div class='image_candidat'><img class='img-candidat' src='uploads/images/".$photo."' title='".$content_name."' alt='".$content_name."' /></div>";
	}
	if($photo2 != "")
	{
		$content.= "<div class='image2_candidat'><img class='img2-candidat' src='uploads/images/".$photo2."' title='".$content_name."' alt='".$content_name."' /></div>";
	}
	
	if($email_candidat != "" || $site_candidat != "") $content .= "<address class='vestibulum'>";
	if($email_candidat != "")
	{
		$content .= "{mailto address='".$email_candidat."' encode='javascript' subject='Concerne votre ".$sujet_candidature." ZoomJeunes 2008'}";
	}
	if($site_candidat != "" && $email_candidat != "") $content .= "<br />";
	if($site_candidat != "")
	{
		$content .='<a class="a-orange external" href="http://'.$site_candidat.'" title="'.$site_candidat.'" target="_blank">Site du candidat</a>';
	}
	if($email_candidat != "" || $site_candidat != "") $content .= "</address>";
	if($theme_candidature != "") $content .= "<h2>Thématique de la candidature</h2><p>".$theme_candidature."</p>";
	if($theme_categorie != "") $content .= "<h3>Catégorie</h3><p>".$theme_categorie;
	if($theme_sousCategorie != "") $content .= "<br />".$theme_sousCategorie;
	$content .= "</p>";
	if($nom_structure != "")
	{	
		$content .= "<h2>Structure de soutien</h2><p>".trim($nom_structure)."</p>";
		$content .= "<address class='vestibulum'>";
		if($contact_structure != "") $content .= $sexeContact_structure.trim(ucWords($contact_structure));
		if($telephone_structure != "" && $contact_structure != "") $content .= "<br />";
		if($telephone_structure != "") $content .= $telephone_structure;
		if($email_structure != "" && ($contact_structure != "" || $telephone_structure != "")) $content .= "<br />";
		if($email_structure != "")
		{
			$content .= '{mailto address="'.$email_structure.'" cci="webmaster-zoomjeunes@promojeunes.be" encode="javascript" subject="Concerne le '.$sujet_candidature.'  ZoomJeunes 2008"}';
		}
		if($site_structure != "" && ($contact_structure != "" || $telephone_structure != "" || $email_structure != "")) $content .= "<br />";
		if($site_structure != "") $content .='<a class="a-orange external" href="http://'.$site_structure.'" title="'.$site_structure.'" target="_blank">Site internet</a>';
		$content .="</address>";
	}	
	if($public_candidature != "") $content .= "<h2>Public ciblé</h2><p>".$public_candidature."</p>";			
	$content .= "<h2>Présentation du ".$sujet_candidature."</h2><p>".$description_admin."</p>";
        $content .= "<h2>Pourquoi allez-vous gagner ? Que ferez-vous avec votre prix ?</h2><p>".$qualite_candidature."</p>";
        $content .= "<h2>Votez</h2>";
        $content .= "<p>Vous pouvez voter une fois par jour/par candidat</p>";
	$content .= "<p>Recopiez ce lien dans les forums, sites internet, e-mail, etc. afin d'augmenter les votes pour votre candidature : http://www.zoomjeune.be/candidats/candidats-2008/".$content_alias.".html</p>{cms_module module='RateThis' lang='fr_FR'}</div>";
	$content_name = addSlashes($content_name);
	$menu_text = $content_name;
	$item_order = $item;
	$hie = number_format($item/10000, 4, '', '');
	$hierarchy = "00004.00001.".$hie;
	$id_hierarchy = "93.97.".$content_id;
	$hierarchy_path = "candidats/candidats-2008/".$content_alias;
	$titleattribute = $menu_text;
	$detail = str_replace("\"", "&apos;", $description_admin);
	$detail = str_replace(""", "&apos", $detail);
	$metadatas = '<meta name="Description" content="Candidature de '.$content_name.' au concours ZoomJeunes 2008. '.$detail.'" />';
	if(strlen($metadatas) > 300) $metadatas = substr_replace($metadatas, "...", 290)."\" />";
	$metadatas = addSlashes($metadatas);
	$create_date = $dbresult->fields['datein'];
	//on teste
	echo "<h3>Vérification des paramètres de création de page</h3>";
	echo "<p>content_id = ".$content_id."<br />";
	$content = addSlashes($content);
	echo "content_name = ".$menu_text."<br />";
	echo "type = content<br />";
	echo "owner_id = ".$owner_id."<br />";
	echo "parent_id = ".$parent_id."<br />";
	echo "template_id = ".$template_id."<br />";
	echo "item_order = ".$item_order."<br />";
	echo "hierarchy = ".$hierarchy."<br />";
	echo "default_content = ".$default_content."<br />";   
	echo "menu_text = ".$menu_text."<br />";
	echo "content_alias = ".$content_alias."<br />";
	echo "show_in_menu = ".$show_in_menu."<br />";
	echo "collapsed = ".$collapsed."<br />";
	echo "markup = ".$markup."<br />";
	echo "active = ".$active."<br />";
	echo "cachable = ".$cachable."<br />";
	echo "id_hierarchy = ".$id_hierarchy."<br />";
	echo "hierarchy_path = ".$hierarchy_path."<br />";
	echo "prop_names = ".$prop_names."<br />";
	echo "metadata = ".$metadatas."<br />";
	echo "titleattribute = ".$titleattribute."<br />";                
	echo "tabindex = ".$tabindex."<br />";
	echo "accesskey = ".$accesskey."<br />";
	echo "last_modified_by = ".$last_modified_by."<br />";
	echo "create_date = ".$create_date."<br />";
	echo "modified_date = ".$modified_date."<br />";
	echo "param1 ".$param1."<br />";
	echo "photo ".$photo."<br />";
	echo "photo2 ".$photo2."<br />";

	echo $content;
	//iteration
	echo "</p>";

	//insertion dans cms_content
        $query = "INSERT INTO promojeuzoombo.cms_content (content_id, content_name, type, owner_id, parent_id, template_id, item_order, hierarchy, default_content, menu_text, content_alias, show_in_menu, collapsed, markup, active, cachable, id_hierarchy, hierarchy_path, prop_names, metadata, titleattribute, tabindex, accesskey, last_modified_by, create_date, modified_date) VALUES ('$content_id', '$content_name', 'content', '$owner_id', '$parent_id', '$template_id', '$item_order', '$hierarchy', '$default_content', '$menu_text', '$content_alias', '$show_in_menu', '$collapsed', '$markup', '$active', '$cachable', '$id_hierarchy', '$hierarchy_path', '$prop_names', '$metadatas', '$titleattribute', '$tabindex', '$accesskey', '$last_modified_by', '$create_date', '$modified_date')";
        $db->Execute($query);

        //insertion dans cms_content_props
        $query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name, content) VALUES ('$content_id', 'string', 'content_en', '$content')";
		$db->Execute($query);
		$query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name) VALUES ('$content_id', 'string', 'target')";
		$db->Execute($query);
		$query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name) VALUES ('$content_id', 'string', 'pagedata')";
		$db->Execute($query);
		$query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name) VALUES ('$content_id', 'string', 'extra1')";
		$db->Execute($query);
		$query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name) VALUES ('$content_id', 'string', 'extra2')";
		$db->Execute($query);
		$query = "INSERT INTO promojeuzoombo.cms_content_props (content_id, type, prop_name) VALUES ('$content_id', 'string', 'extra3')";
		$db->Execute($query);
		$query = "INSERT INTO rel_id_zoom_candidat_id_cms_content (id_zoom_candidat, id_cms_content) VALUES ('$param1', '$content_id')";
		$db->Execute($query);


		//enregistrement suivant
	$content_id ++;
	$item ++;
	$hie += 1/10000;
	$dbresult->MoveNext();	
}
if ($dbresult) $dbresult->Close();
Last edited by Jean le Chauve on Mon Sep 15, 2008 5:54 am, edited 1 time in total.
fourmis
Forum Members
Forum Members
Posts: 22
Joined: Fri Sep 12, 2008 2:56 pm

Création de nouvelles pages dynamiquement [Résolu]

Post by fourmis »

Bonjour Jean le Chauve, fort intéressant ton script. Un gros merci.
Post Reply

Return to “French - Français”