Utiliser des templates avec CKEditor

De même que nous l'avons fait avec TinyMCE, nous allons montrer l'utilisation de l'éditeur en ligne WYSIWYG CKEditor avec des templates et la génération automatique d'un nom de fichier à partir des mots-clés contenus dans le titre de l'article.

Le template est choisi lors de la création de l'article et peut être changé en éditant un article déjà sauvé, en sélectionnant un fichier dans la liste déroulante. Vous pouvez ajouter vos propres templates dans le répertoire.

Comment cela fonctionne

Le système de base comprend une série de scripts. Cela est destiné à être développé par le webmaster selon ses besoins.
Notamment il conviendra de créer des templates différents.

Utiliser un template

  1. Extraire le contenu de l'archive et le mettre en ligne sur votre site ou pour le tester localement dans le répertoire www de Wamp, Xamp ou équivalent.
  2. Lancer install.php pour créer un login et un mot de passe.
  3. Il doit être effacé et il faut le remettre en ligne si l'on veux modifier le mot de passe.
  4. Charger la page editor.php
  5. Entrer un titre d'un ou plusieurs mots.
  6. Choisir un template.
  7. Entrer un texte, et sauvegardez le.
  8. Ajouter un lien sur l'article sur votre site.

Démonstration

Pour cette démo très simple, nous utilisons seulement trois fichiers:

Le code essentiel est le suivant

1) Inclusion de l'éditeur. Placer ce code dans la section HEAD de la page:

<script type="text/javascript" src="ckeditor/ckeditor.js"></script>

2) Ajout d'un formulaire qui affiche un bouton d'envoi, pour sauver le texte:

<form action="pagebuild.php" method="post" target="_top">
     <input type="hidden" name="page" value="demo-fr.php" >
     <input type="submit" value="Sauver le contenu">
</form>

6) Création d'une instance de l'éditeur. Le code est inséré dans le formulaire, dans le corps de la page:

<textarea cols="80" id="editor1" name="editor1" rows="10">Vide</textarea>
<script type="text/javascript">
//<![CDATA[
var editor = CKEDITOR.replace( 'editor1' );
//]]>
</script>

Quand vous cliquez sur le bouton, le script pagebuild.php prendra le texte que vous avez tapé, qui est assigné à une variable par FCKeditor, et va le stocker dans un fichier.

Le champ dans la démonstration caché transmet l'URL de la page de l'éditeur pour que le script la recharge.

L'archive contient une distribution CKEditor, l'interface et les scripts PHP, et les exemples de templates.

Forum

Question: Utiliser CKEditor

12-02-2009 12:11:12

nicolas83210

Bonjour j'ai decouvert votre site par des amis, cela fait deux semaines que je cherche un moyen pour enregistrer ce qui sort de fckeditor dans un fichier texte comme vous avez fait, celà me permetrait de faire un include sur une page dans le but que mon client puisse modifier lui même sa page web. Donc voilà si il etait possible de me donner le code de votre fichier brute.php qui inscrit dans le fichier txt, svp. cordialement
12-02-2009 12:16:08

webmaster

Bonjour, Voici le code source du fichier (actuellement pagebrute.php):
<html>
<head>
<title>Document sans-titre</title>
<meta charset=utf-8>
</head>
<body>
<?php
if (isset( $_POST ))
   $postArray = &$_POST ;            // 4.1.0 or later
else
   $postArray = &$HTTP_POST_VARS ;    // prior to 4.1.0

$fname="fck/pagedemo.txt";
$nfile = fopen($fname, "w");
if($nfile != false)
{
    foreach ($postArray as $sForm => $value )
    {
        $yourText = $value ;
        fwrite($nfile, $yourText);
    }
    fclose($nfile);
}    

echo "You have written:<br/></br/>";
echo $yourText . "<br/></br>";
?>

<form action="demo-fck.php" method="post" target="_parent">
  <input type="submit" name="envoi" value="Revenir à l'éditeur">
</form></body>
</html>
Un fichier différent avait été créé pour la version française, sans que ce soit répercuté sur l'article. Il va être mis à jour pour que tous les fichiers nécessaires puissent être téléchargés.
12-02-2009 17:19:18

nicolas83210

merci bcp pour la réponse, ça va bien servir. par contre ça fait trois jours que j'essaye de trouver une solution à mon pb si vous avez une idée ça m'aiderai bcp bcp. j'essaye d'enregistrer certains formulaires de fckeditor dans une bdd, et rien y fait ça ne se met pas à jour dans ma bdd mais aucun message d'erreur, est ce que ça viendrai de ma base de donnée, j'ai crée un table news avec un champ texte1 en textlong, bref voilà: alors j'ai deux fichiers: j'ai deux fichiers : formulaire.php

<?php include("FCKeditor/fckeditor.php") ; ?> <html> <head> <title>Edition de news</title> </head> <body> <form name="editNews" method="POST" action="savedata.php"> <?php $db = mysql_connect('mabase','user','pass') or die("Impossible de se connecter"); if (!mysql_select_db('mabase',$db)) echo "Erreur : impossible de sélectionner la base<br>"; $select = 'SELECT texte1 FROM news'; $req = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($req)) { echo '<tr>'; $text = $row[0] ; } $oFCKeditor = new FCKeditor('FCKeditor1') ; $oFCKeditor->BasePath = 'FCKeditor/'; // Chemin depuis l'index jusque dans le dossier FCKeditor $oFCKeditor->Width='78%'; $oFCKeditor->Height='50%'; $oFCKeditor->Value = $text; $oFCKeditor->Create(); ?> <br><input type="submit" value="Submit"></form> </body></html> puis savedata.php <? $db = mysql_connect('mabase','user','pass') or die("Impossible de se connecter"); if (!mysql_select_db('mabase',$db)) echo "Erreur : impossible de sélectionner la base<br>"; $updatedNews = $_POST['FCKeditor1']; $mysqlQuery = "UPDATE `news` SET texte1='$updatedNews'"; mysql_query($mysqlQuery,$db) or die('MySQL error: '.mysql_error()); ?>

svp ça fait trois jours que je galere sur fckeditor

12-02-2009 19:08:18

webmaster

Pour simplifier, je suggérerai de placer d'abord toute la partie SQL dans savedata, donc de remplacer la partie création de fichier de pagebrute.php par l'équivalent avec un fichier SQL. Cela aurait l'avantage de pouvoir exécuter le fichier séparemment pour vérifier que cette partie SQL fonctionne. Ensuite je testerai l'interaction entre ce fichier et FCK Editor, qui fonctionne dans la démo de l'article...
13-02-2009 13:27:55

nicolas83210

1er partie: $updatedNews = $_POST['FCKeditor1']; $mysqlQuery = "UPDATE `news` SET texte1='$updatedNews'"; mysql_query($mysqlQuery,$db) or die('MySQL error: '.mysql_error()); 2em partie: $sql = "INSERT INTO news VALUES('$FCKeditor1')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error()); n'etant pas developpeur et trés debutant j'ai rajouté la deuxieme partie prise sur un forum ce qui fait que ça fonctionne, mais je sais pas pourquoi car c'est pas logique les deux codes ont le même but sauf que le deuxieme ne precise pas dans quel champ la valeur va s'inscrire d'apres ce que j'ai compris. peut etre est ce que cette ligne ne recupere pas la valeur : $updatedNews = $_POST['FCKeditor1']; est ce qu'elle parait bonne d'aprés vous?
13-02-2009 14:24:03

webmaster

Le ligne $updatedNews = $_POST['FCKeditor1'] suppose que la variable FCKeditor1 soit passée comme paramètre, ce qui est le cas quand elle est le nom d'un objet de formulaire. <input type="text" name="FCKeditor1" value="" /> C'est peut-être le cas, mais je ne le vois pas dans le code. Dans la deuxième partie, $FCKEditor1 est une variable PHP ce qui n'est pas compatible avec la première partie.
14-02-2009 11:48:55

nicolas83210

$mysqlQuery = "UPDATE `news` SET texte1='$FCKeditor1'"; mysql_query($mysqlQuery,$db) or die('MySQL error: '.mysql_error()); en mettant juste ça, ça marche, c'etait bien la ligne $updatedNews = $_POST['FCKeditor1'] comme tu dis FCKeditor ne devait pas etre reconnu comme parametre, il faudrai que je regarde dans l'autre fichier de fckeditor, mais cette ligne fonctionne, aprés est ce qu'elle est accepté partout je sais pas.
16-02-2009 16:36:14

nicolas83210

bon be tu as raison et je suis obligé de resoudre le pb car je suis obligé d'utiliser la fonction update. donc le probleme aprés etude c'est que $post ne recupere pas les informations du formulaire et je sais pas pourquoi, sa tu je t'en priiiiiiiiiiiiiiiiii qq chose pour m'aider stp, car là j'en peu plus stp. alors j'ai dans savedata.php: $updatedNews = $_POST['FCKeditor1']; $mysqlQuery = "UPDATE `news` SET texte1='$updatedNews'"; mysql_query($mysqlQuery,$db) or die('MySQL error: '.mysql_error()); mysql_close(); ?> et dans le formulaire.php : <form name="FCKeditor1" method="POST" action="savedata.php"> <?php // information pour la connection à le DB include('config.php'); echo "Erreur : impossible de sélectionner la base<br>"; $select = 'SELECT texte1 FROM news'; $req = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); while($row = mysql_fetch_array($req)) { echo '<tr>'; $text = $row[0] ; } $oFCKeditor = new FCKeditor('FCKeditor1') ; $oFCKeditor->BasePath = 'fckeditor/'; // Chemin depuis l'index jusque dans le dossier FCKeditor $oFCKeditor->Width='78%'; $oFCKeditor->Height='50%'; $oFCKeditor->Value = $text; $oFCKeditor->Create(); ?> <br><input type="submit" value="Valder"></form> </body></html>
17-02-2009 00:51:43

nicolas83210

j'ai enfin trouvé ct un pb dans ma base de donnée, le champs remarque etait crée, ainsi que ma table, mais il fallait creer une valeur dans le champ même vide car on utilise la fonction update. bref je suis néophite, mais bon faut bien commencer un jour. en tout cas merci beaucoup pour votre aide.

Raté une étape , help

11-03-2007 13:21:30

Titof

Bonjour a tous et déja merci pour l'aide et l'explication Mais je dois rater une étape Je n'arrive a rien enregistrer dans mon fichier pagedemo.txt Et rien ne s'affiche donc sur ma page pagebuild.php Est bien la qu'il faut mettre le code :
<?php

if (isset( $_POST ))
   $postArray = &$_POST ;			// 4.1.0 or later
else
   $postArray = &$HTTP_POST_VARS ;	// prior to 4.1.0

$fname="fck/pagedemo.txt";

$nfile = fopen($fname, "w");

if($nfile != false)
{
	foreach ($postArray as $sForm => $value )
	{
		fwrite($nfile, $value);
	}

	fclose($nfile);
}	

?>
Ce serait super si je trouvais de l'aide D'avance merci Titof
12-03-2007 14:54:51

webmaster

Pour éclaircir un peu, une petite récapitulation. La page d'édition configure FCKEditor avec l'URL de pagedemo.txt (que l'on peut modifier), et qui est l'article créé; Elle appelle le script PHP pagebrute.php en version française (pagebuild.php) en version anglaise. Le script pagebrute.php enregistre le texte dans le fichier pagedemo.txt ou autre nom que l'on aura choisi et recharge la page d'édition.
01-04-2007 19:20:31

mobilesong

Bonjour, je cherche à utiliser CKeditor en local avec easy php. le script pagebuild.php genere bien le fichier pagedemo.txt mais.... ce fichier est toujours vide. comment faire ? Voici les differentes étapes du processus que j'ai utilisé suite aux conseils de la page "construire un cms". 1) j'ai placé dans mon dossier de tes "test php" - les pages "demo-editeur.php" et "pagebuild.php" - un dossier "CKeditor" contenant le package CKeditor - un dossier "fck" vide dans lequel est bien généré le fichier pagedemo.txt 2) à partir de l'interface easy php j'ouvre mon dossier alias "test_php" - je clique sur "demo-editeur.php" - j'accede bien à l'editeur - j'ecris mon texte - j'envoie - la page "pagebuild.php" apparait sans mon texte à l'interieur - Cependant le fichier "pagedemo.txt" est bien généré dans le dossier "fck" Please help Mobilesong
04-04-2007 16:33:09

user10

Est-ce que cela fonctionne en mode distant, en plaçant exactement le même ensemble de fichiers sur un serveur?
14-04-2007 19:24:17

webmaster

C'est fait pour fonctionner en ligne.

CKeditor et bdd

24-05-2007 22:13:46

bubul

Bonjour ! Merci et bravo pour votre article sur FCKeditor. Une question reste sans réponse : est-il possible de connecter CKeditor à une base SQL? Je tente l'aventure sans succès... Je joint le bout de code du formulaire de mise à jour d'un enregistrement, si vous avez une idée ! :) Ici (c'est juste un test...) la modif du titre est bien effective, mais pas le txt...
<form method="post" name="editor" action="<?php echo $editFormAction; ?>">
  <table align="center">
   
    <tr valign="baseline">
      <td nowrap align="right">Titre:</td>
      <td><input type="text" name="titre" value="<?php echo $row_Recordset2['titre']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Txt:</td>
      <td><input type="text" name="txt" value="<?php echo $row_Recordset2['txt']; ?>" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right"> </td>
      <td>
	  <?php
$oFCKeditor = new FCKeditor('editor') ;
$oFCKeditor->BasePath = '../fckeditor/';
$oFCKeditor->Value = $row_Recordset2[txt];
$oFCKeditor->Create() ;
$oFCKeditor->Name='txt';
?></td>
    </tr>
<input type="submit" value="Mettre à jour">
  </table>
  <input type="hidden" name="MM_update" value="editor">
  <input type="hidden" name="id" value="<?php echo $row_Recordset2['id']; ?>">
</form>
Merci beaucoup !!!
25-05-2007 14:39:31

webmaster

Je n'ai pas essayé personellement, mais à partir du PHP on peut tout faire! Je ne peux pas donner d'avis précis quand à moi car la question est un peu vague. S'agit-il d'éditer des données prises dans une base et renvoyées dans la base? Dans ce cas je passerai plutôt par un fichier texte intermédiaire utilisé par PHP pour changer la base, autrement je crois que cela introduirait des failles de sécurité.