<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel xml:lang="fr">
	<title>SPIP</title>
	<link>http://www.spip.net/</link>
	<description>Système de Publication pour Internet</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>

	<image>
		<title>SPIP</title>
		<url>http://www.spip.net/local/cache-vignettes/L144xH49/siteon0-56029.jpg</url>
		<link>http://www.spip.net/</link>
		<height>49</height>
		<width>144</width>
	</image>



<itunes:explicit>yes</itunes:explicit><itunes:subtitle>Système de Publication pour Internet</itunes:subtitle><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Spip" type="application/rss+xml" /><item xml:lang="es">
		<title>Las autorreferencias multilingües de la documentación</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/fvAczg_Ss00/es_article4157.html</link>
		<guid isPermaLink="false">http://www.spip.net/es_article4157.html</guid>
		<dc:date>2009-07-14T09:03:20Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>es</dc:language>
		<dc:creator>David Sánchez</dc:creator>



		<description>&lt;p&gt;Este artículo explica por qué es necesario utilizar el atajo &lt;code class='spip_code' dir='ltr'&gt;[{}-&gt;artN] &lt;/code&gt; para referenciar el artículo N de la documentación, cualquiera que sea el idioma del artículo referenciado o del texto que lo referencia.&lt;/p&gt;

-
&lt;a href="http://www.spip.net/rubrique413.html" rel="directory"&gt;Traducir SPIP&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>Ya que la versión <a href='http://www.spip.net/es_article3839.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a> ha introducido la posibilidad de sobrecargar el tratamiento de <tt>hreflang</tt> de los atajos tipográficos, el presente sitio dedicado a la documentación multilingüe de SPIP ofrece actualmente un método sencillo para referenciar sus propios artículos.</p> <p>Anteriormente, cuando un artículo A referenciaba un artículo B de la documentación, quienes lo traducían se encontraban ante una situación insatisfactoria y propicia al olvido. Se traducía primero A y se obtenía otro artículo, llamémosle C, dentro del cual se dejaba la referencia a B, sin tener todavía la URL de la traducción de B, ya que aún no existía. Durante el tiempo que esta traducción, llamémosle D, era realizada y publicada, era muy fácil olvidar que C contenía una referencia a B que había que reemplazar por D.</p> <p>En este momento, los redactores de la documentación tienen que utilizar obligatoriamente la notación <code class='spip_code' dir='ltr'>[{}->artN]</code> para referenciar el artículo N de la documentación, y quienes lo traduzcan pueden copiar este atajo sin necesidad de modificarlo en el futuro. En efecto, si el artículo N no existe en la lengua del texto que utiliza este atajo, éste presentará la URL del artículo N (aquel que sea mejor). En cambio, si existe una traducción, se presentará automáticamente la URL de esa traducción. Más exactamente, este comportamiento se observará estrictamente cuando haya una referencia en el espacio privado, mientras que en el espacio público se añadirá la condición suplementaria de que la traducción esté publicada, para presentar una URL disponible en el acto.</p> <p>¿Cómo es esto posible? De hecho, hacía ya mucho tiempo que los atajos de SPIP autorizaban la utilización de llaves para especificar el valor del atributo <tt>hreflang</tt>. No obstante, <a href='http://www.spip.net/es_article3839.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a> interpreta además un par de llaves vacías como un <tt>hreflang</tt> igual al idioma del texto donde figura el atajo. La sobrecarga introducida por este sitio consiste simplemente en buscar si el artículo designado por el atajo existe en el idioma indicado por el <tt>hreflang</tt>. Si es este el caso, el atajo <code class='spip_code' dir='ltr'>->artN</code> se reemplaza por <code class='spip_code' dir='ltr'>->artP</code>, donde <code class='spip_code' dir='ltr'>P</code> es la traducción de <code class='spip_code' dir='ltr'>N</code>.</p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/fvAczg_Ss00" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/es_article4157.html</feedburner:origLink></item>
<item xml:lang="fr">
		<title>Structure HTML des formulaires de SPIP 2</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/GgSD6wgKpP8/fr_article3791.html</link>
		<guid isPermaLink="false">http://www.spip.net/fr_article3791.html</guid>
		<dc:date>2009-06-27T10:48:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>ARNO*, cerdic, Matthieu Marcillaud, romy.tetue.net</dc:creator>



		<description>Document de références précisant comment les formulaires dans SPIP doivent être structurés Structure HTML Un formulaire de base est ainsi structuré : &lt;div class="formulaire_spip formulaire_editer formulaire_editer_nomformulaire" id="formulaire_editer_nomformulaire-id"&gt; &lt;a id="nomformulaire" name="nomformulaire"&gt;&lt;/a&gt; &lt;form action="#" method="post"&gt; &lt;fieldset&gt; &lt;legend&gt;Une légende&lt;/legend&gt; (...)

-
&lt;a href="http://www.spip.net/rubrique522.html" rel="directory"&gt;Interactivité&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_chapo'><p>Document de références précisant comment les formulaires dans SPIP doivent être structurés</p></div>
		<div class='rss_texte'><h3 class="spip">Structure HTML</h3>
<p>Un formulaire de base est ainsi structuré :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='29' class='spip_cadre' dir='ltr'><div class="formulaire_spip formulaire_editer formulaire_editer_nomformulaire" id="formulaire_editer_nomformulaire-id"> <a id="nomformulaire" name="nomformulaire"></a> <form action="#" method="post"> <fieldset> <legend>Une légende</legend> <p class="explication">Un texte d'explication</p> <ul> <li class="editer_nomlabel obligatoire erreur"> <label for="nomlabel">Courriel</label> <em class="aide">#AIDER{arttitre}</em> <p class="explication"> Explication du label</p> <span class="erreur_message">Message d'erreur</span> <input type="type" class="type" name="nomlabel" id="nomlabel" value="" /> </li> </ul> </fieldset> </form> </div></textarea></div></form> <p>Le div englobant porte la classe générique <strong><tt>formulaire_spip</tt></strong>. Les formulaires d'édition de l'espace privé portent de plus la classe <strong><tt>formulaire_editer</tt></strong> indiquant qu'on a affaire à un formulaire d'édition de données d'une base.</p> <p>Le premier fieldset étant optionnel, on peut aussi écrire, sans le fieldset et sans les paragraphes optionnels :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='17' class='spip_cadre' dir='ltr'><div class="formulaire_spip formulaire_editer formulaire_editer_nomformulaire formulaire_editer_nomformulaire-id"> <a id="nomformulaire" name="nomformulaire"></a> <form action="#" method="post"> <ul> <li class="editer_nomlabel obligatoire"> <label for="nomlabel">Courriel</label> <input type="type" class="type" name="nomlabel" id="nomlabel" value="" /> </li> </ul> </form> </div></textarea></div></form> <h3 class="spip">Les classes spéciales</h3>
<ul class="spip"><li> « <strong><tt>explication</tt></strong> » : pour indiquer un message d'explication (qui porte soit pour l'ensemble des champs, soit sur une étape). Exemple : <code class='spip_code' dir='ltr'><p class="explication"></code>.</li><li> « <strong><tt>attention</tt></strong> » : pour afficher un message concernant un champ d'édition critique. Exemple : <code class='spip_code' dir='ltr'><em class="attention"><:texte_login_precaution:></em></code>.</li><li> « <strong><tt>obligatoire</tt></strong> » : pour signaler un champ obligatoire, à appliquer à l'élément de liste parent. Exemple : <code class='spip_code' dir='ltr'><li class="obligatoire"></code>.</li><li> « <strong><tt>erreur</tt></strong> » : pour signaler une étape en erreur, à appliquer à l'élément de liste parent. Exemple : <code class='spip_code' dir='ltr'><li class="erreur"></code>. chaque erreur bénéficie d'un message explicatif, portant la class « <tt>erreur_message</tt> » : <code class='spip_code' dir='ltr'><span class="erreur_message"></code>.</li></ul>
<h3 class="spip">Cadre englobant</h3>
<p>Ce formulaire peut optionnelement être inclu dans un cadre-formulaire-editer, et peut alors contenir un entete-formulaire :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'><div class="cadre-formulaire-editer"> <div class="entete-formulaire"></div> <div class="formulaire_editer formulaire_editer_site formulaire_editer_site-#ENV{id_site,nouveau}"></div> </div></textarea></div></form> <h3 class="spip">Gestion des messages réussite/erreur</h3>
<p><strong>Messages globaux</strong></p> <p>Un formulaire comporte obligatoirement deux paragraphes permettant d'afficher les réussites et erreurs globales qui ont pu apparaître à la soumission. Les variables d'environnements <tt>message_ok</tt> et <tt>message_erreur</tt> sont des retours envoyés par SPIP (formulaires CVT).</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'><div class="formulaire_editer formulaire_editer_site formulaire_editer_site-#ENV{id_site,nouveau}"> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] </div></textarea></div></form> <p><strong>Messages spécifiques</strong></p> <p>Chaque champ de formulaire, encapsulé dans un li peut recevoir un message d'erreur spécifique. Celui-ci est contenu dans la le tableau d'environnement 'erreurs' et peut être obtenu de la sorte :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'>[(#ENV**{erreurs}|table_valeur{nom_du_champ})]</textarea></div></form> <p>On peut attribuer la classe 'erreur' au li et afficher une erreur spécifique si elle existe de la sorte :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='9' class='spip_cadre' dir='ltr'><li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]"> <label for="descriptif"><:texte_descriptif_rapide:></label> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{desctiptif})</span>] <textarea name='descriptif' id='descriptif' rows='2' cols='40'>[(#ENV**{descriptif})]</textarea> </li></textarea></div></form> <h3 class="spip"> Particularités pour les styles css</h3>
<p><strong>Champs input</strong></p> <p>Chaque <code class='spip_code' dir='ltr'><input /></code> différent de <tt>hidden</tt> doit posséder une classe identique à son type (afin de palier à un déficience du navigateur Internet Explorer) :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='3' class='spip_cadre' dir='ltr'><input type="text" class="text" name="titre" id="titre" value="[(#ENV**{titre})]" /></textarea></div></form> <p><strong>Boutons de soumission</strong></p> <p>Les boutons de soumissions sont inclus dans une boîte <tt>.boutons</tt> (qui peut recevoir plusieurs boutons) :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='3' class='spip_cadre' dir='ltr'><p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></div></textarea></div></form> <p><strong>radio/checkbox</strong></p> <p>Dans le cas de bouton radio ou checkbox, on peut ne pas reprendre
tout a fait la même structure, par exemple pour avoir le bouton
avant le label, ou pour avoir la liste radio en horizonal</p> <p>Chaque entrée (radio + label) peut alors être encadrée par un bloc .choix</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='17' class='spip_cadre' dir='ltr'><li class="editer_syndication"> <div class="choix"> <input type='radio' class="radio" name='syndication' value='non' id='syndication_non'[ (#ENV{syndication}|=={non}|?{'checked="checked"'})] /> <label for='syndication_non'><:bouton_radio_non_syndication:></label> </div> <div class="choix"> <input type='radio' class="radio" name='syndication' value='oui' id='syndication_oui'[ (#ENV{syndication}|=={oui}|?{'checked="checked"'})] /> <label for='syndication_oui'><:bouton_radio_syndication:><em>#AIDER{rubsyn}</em></label> </div> </li></textarea></div></form> <p>Par défaut, la liste est verticale. Pour rendre la liste horizontale,
il suffit de spécifier que .champ en question est de type inline :</p> <div style='text-align: left;' class='spip_code' dir='ltr'><code>.formulaire_editer .editer_syndication .choix {display:inline;}</code></div></div>
		<div class='rss_ps'><p>Principes généraux de ces formulaires pour avoir les labels alignés à gauche</p> <p>On se retrouve dans un cas où l'on a :</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='12' class='spip_cadre' dir='ltr'><ul> <li> <label /> <input /> </li> <li> <label /> <em /> <span /> <input /> </li> </ul></textarea></div></form> <p>1) on applique un padding gauche au LI supérieur à la taille du label (ex:120px)</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'>.formulaire_spip li { margin: 0; padding: 10px 10px 10px 130px; clear:both; border-top: 1px solid #[(#GET{foncee}|couleur_eclaircir|couleur_eclaircir)]; }</textarea></div></form> <p> 2) on demande au label d'être flottant et décalé sur la gauche (via un margin négatif)</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'>.formulaire_spip label { width: 120px; float:left; margin-left:-125px; text-align: left; vertical-align: top; }</textarea></div></form> <p>3) lorsqu'un fieldset suit un li, on le décale aussi vers la gauche (seul IE n'en tient pas compte) pour que le fieldset prenne toute la largeur aussi</p> <form action='' method='get'><div>
<input type='hidden' name='exec' value='' />
<textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'>.formulaire_spip li fieldset { border:1px solid #888; background:white; margin-left:-125px; /* redecalage vers la gauche... IE < 8 ne le prend pas en compte */ }</textarea></div></form></div>
		<img src="http://feeds.feedburner.com/~r/Spip/~4/GgSD6wgKpP8" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/fr_article3791.html</feedburner:origLink></item>
<item xml:lang="fr">
		<title>#VAL</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/IZ_49INI21E/fr_article4026.html</link>
		<guid isPermaLink="false">http://www.spip.net/fr_article4026.html</guid>
		<dc:date>2009-06-18T09:15:46Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>maieul</dc:creator>



		<description>La Balise #VAL prend un paramètre qui est retourné tel quel. Elle permet par exemple d'appliquer des filtres sur des constantes. Par exemple [(#VAL&lt;:chaine_de_langue:&gt;|image_typo)]

-
&lt;a href="http://www.spip.net/rubrique543.html" rel="directory"&gt;balises&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>La Balise #VAL prend un paramètre qui est retourné tel quel.</p> <p>Elle permet par exemple d'appliquer des filtres sur des constantes.</p> <p>Par exemple <code class='spip_code' dir='ltr'>[(#VAL{<:chaine_de_langue:>}|image_typo)]</code></p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/IZ_49INI21E" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/fr_article4026.html</feedburner:origLink></item>
<item xml:lang="fr">
		<title>#ARRAY</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/zYdxwzRpxaQ/fr_article4009.html</link>
		<guid isPermaLink="false">http://www.spip.net/fr_article4009.html</guid>
		<dc:date>2009-06-16T06:52:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>BoOz, denisb</dc:creator>


		<dc:subject>#ARRAY</dc:subject>

		<description>La balise #ARRAY définit un tableau au sens php c'est à dire un ensemble de paires clef/valeur. Un #ARRAY permet ainsi le stockage de valeurs indexées et peut être utilisé, entre autre, associé à l'opérateur IN d'une boucle. Déclarer un tableau : #SETmon_tableau, #ARRAYclef1,valeur1,clef2,valeur2... Récupérer la valeur associée à une clef en utilisant le filtre |table_valeur : [(#GETmon_tableau|table_valeurclef)] Remplir un tableau dynamiquement en utilisant le filtre |push : #SETmots_choisis, (...)

-
&lt;a href="http://www.spip.net/rubrique543.html" rel="directory"&gt;balises&lt;/a&gt;

/ 
&lt;a href="http://www.spip.net/@array" rel="tag"&gt;#ARRAY&lt;/a&gt;

		</description>


 <content:encoded><![CDATA[<div class='rss_chapo'><p>La balise #ARRAY définit un <i>tableau</i> au sens php c'est à dire un ensemble de paires clef/valeur. Un #ARRAY permet ainsi le stockage de valeurs indexées et peut être utilisé, entre autre, associé à l'opérateur IN d'une boucle.</p></div>
		<div class='rss_texte'><p>- <strong>Déclarer un tableau</strong> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>#SET{mon_tableau, #ARRAY{clef1,valeur1,clef2,valeur2...}}</code></div>
<p>- <strong>Récupérer la valeur associée à une clef</strong> en utilisant le filtre <i>|table_valeur</i> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[(#GET{mon_tableau}|table_valeur{clef})]</code></div>
<p>- <strong>Remplir un tableau dynamiquement</strong> en utilisant le filtre <i>|push</i> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>#SET{mots_choisis, #ARRAY{}}<br /> <BOUCLE_themes(MOTS) {id_article}><br /> [(#SET{mots_choisis, #GET{mots_choisis}|push{#ID_MOT}})]<br /> </BOUCLE_themes></code></div>
<p>ou encore <i>en forçant la valeur des clefs</i> avec la fonction php utilisée comme filtre <i>|array_merge</i> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>#SET{mots_choisis, #ARRAY{}}<br /> <BOUCLE_themes(MOTS) {id_article}><br /> [(#SET{mots_choisis,<br /> [(#GET{mots_choisis}|array_merge{#ARRAY{<br /> #COMPTEUR_BOUCLE, #ID_MOT<br /> }})]<br /> })]<br /> </BOUCLE_themes></code></div>
<p><strong>Attention <i>1</i> </strong> : le filtre <code class='spip_code' dir='ltr'>|array_merge</code> ne tient pas compte de la clef à forcer (<i>#COMPTEUR_BOUCLE</i> dans l'exemple ci-dessus) si cette clef est de type <i>numérique</i>. Auquel cas deux solutions :</p> <ul class="spip"><li> soit <strong>préfixer</strong> cette clef avec une valeur alphabétique :<code class='spip_code' dir='ltr'>#ARRAY{k#COMPTEUR_BOUCLE, #ID_MOT}</code> ;</li><li> soit <strong>inverser</strong> clef et valeur (à condition que <i>valeur</i> ne soit pas elle aussi numérique) puis appliquer la fonction php comme filtre <strong>|array_flip</strong> sur le tableau final :<code class='spip_code' dir='ltr'>[(#SET{mots_choisis, #GET{mots_choisis}|array_flip)]</code></li></ul>
<p><strong>Attention <i>2</i> </strong> : il faut déclarer le tableau avant son remplissage dans la boucle.</p> <p><i>Note 1 :</i> l'ordre de remplissage du tableau est déterminé par l'ordre d'apparition des données dans la boucle, donc est dépendant du ou des critères de tri qui sont appliqués à celle-ci.
<br /><i>Note 2 :</i><code class='spip_code' dir='ltr'>[(#GET{mon_tableau}|table_valeur{6})]</code> affichera la valeur associée à <i>la clef numéro 6</i> du tableau ; c'est-à-dire <i>la 7ème valeur</i> : la numérotation des clefs débutant à zéro.</p> <p>- <strong>Utiliser le tableau dans une boucle avec l'opérateur <i>IN</i> </strong> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><BOUCLE_memes_themes(ARTICLES) {id_mot IN #GET{mots_choisis}|sinon{0}}><br /> ...</code></div>
<p>- <strong>Affichage conditionnel en fonction des valeurs d'un tableau</strong> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[(#ENV{page}|in_array{#ARRAY{0,article,1,rubrique,2,site}}|oui)<br /> Affichage conditionnel ]</code></div>
<hr class="spip" />
<p>autre exemple avec une variable 'lolo' passée dans l'url :
<br />http://le_site/-ma-rubrique-?lolo=6</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[ Ceci s'affichera si la valeur de la variable 'lolo' passée dans l'url est présente dans un tableau 'les_mots' déclaré et rempli précédemment<br /> (#ENV{lolo}|in_array{#GET{les_mots}}|oui)<br /> celà s'affichera aussi ]</code></div>
<hr class="spip" />
<p>Pour ne pas risquer de générer une erreur « <i>Warning : in_array() [function.in-array] : Wrong datatype for second argument.</i> » dans le cas où la variable passée ne serait pas de type array on pourra utiliser le filtre <strong>|in_any</strong> qui rattrape l'erreur sans afficher l'alerte, et permet d'afficher une valeur alternative.</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[(#VAL{abc}|in_any{#GET{tablo}, truc à faire si GET_tablo n'est pas un array}|oui|?{truc à faire si abc est une valeur de GET_tablo, truc à faire si abc n'est pas une valeur de GET_tablo})]</code></div></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/zYdxwzRpxaQ" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/fr_article4009.html</feedburner:origLink></item>
<item xml:lang="fr">
		<title>Mise à jour 1 .9 .x vers 2 .0 .8</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/WOYqfQpOvC4/fr_article4121.html</link>
		<guid isPermaLink="false">http://www.spip.net/fr_article4121.html</guid>
		<dc:date>2009-05-29T06:51:09Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>denisb</dc:creator>


		<dc:subject>Niveau : facile</dc:subject>
		<dc:subject>SPIP 2.0</dc:subject>

		<description>La version 2 de SPIP étant une version majeure, la mise à jour d'un site depuis une version 1.9.x est particulière. Quelques conseils pour que la transition se fasse au mieux désactiver tous les plugins par la page : ecrire/ ?exec=admin_plugin faire une sauvegarde de la base de données en utilisant la procédure de spip 1.9.x : ecrire/ ?exec=admin_tech (voir détails) récupérer cette sauvegarde par FTP (elle se trouve dans tmp/dump/) et la conserver soigneusement en local. créer un répertoire à la (...)

-
&lt;a href="http://www.spip.net/rubrique151.html" rel="directory"&gt;Installation&lt;/a&gt;

/ 
&lt;a href="http://www.spip.net/@niveaufacile" rel="tag"&gt;Niveau : facile&lt;/a&gt;, 
&lt;a href="http://www.spip.net/@spip20" rel="tag"&gt;SPIP 2.0&lt;/a&gt;

		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>La version <strong>2</strong> de SPIP étant une version <strong>majeure</strong>, la mise à jour d'un site depuis une version 1.9.x est particulière.</p> <h3 class="spip">Quelques conseils pour que la transition se fasse au mieux</h3>
<ol class="spip"><li> désactiver tous les plugins par la page : <i>ecrire/ ?exec=admin_plugin</i></li><li> faire une sauvegarde de la base de données en utilisant la procédure de spip 1.9.x : <i>ecrire/ ?exec=admin_tech</i> (<a href='http://www.spip.net/fr_article3418.html' class='spip_in'>voir détails</a>)</li><li> récupérer cette sauvegarde par FTP (elle se trouve dans <i>tmp/dump/</i>) et la conserver soigneusement en local.</li></ol>
<ul class="spip"><li> créer un répertoire à la racine de SPIP (par exemple <i>ancien_spip/</i>)</li><li> déplacer à l'intérieur de ce répertoire tous les fichiers et répertoires de spip 1.9.x <strong>SAUF</strong> les répertoires <i>IMG/</i> et <i>config/</i></li><li> si vous aviez un fichier <i>mes_options.php</i> le déplacer dans <i>config/</i><ul class="spip"><li> ne devrait donc rester à la racine que :<ul class="spip"><li> ancien_spip/</li><li> config/</li><li> IMG/</li></ul></li></ul></li></ul>
<p>- déposer par FTP, à la racine de son site, l'ensemble des fichiers et répertoires de SPIP 2.0.8 sauf les répertoires <i>IMG/</i> et <i>config/</i></p> <ul class="spip"><li> devraient donc se trouver à la racine :<ul class="spip"><li> ancien_spip/</li><li> CHANGELOG.txt</li><li> config/</li><li> COPYING.txt</li><li> ecrire/</li><li> htaccess.txt</li><li> IMG/</li><li> index.php</li><li> INSTALL.txt</li><li> local/</li><li> prive/</li><li> rien.gif</li><li> spip.php</li><li> squelettes-dist/</li><li> svn.revision</li><li> tmp/</li></ul></li></ul>
<p>- entrer avec son navigateur dans <i>http://le_site/ecrire/</i>
<br />- accepter la mise à jour de la base de données</p> <ul class="spip"><li> à ce stade, vous devriez retrouver, dans l'espace privé, l'intégralité des données de votre ancien site et une navigation dans l'espace public devrait les afficher avec les squelettes par défaut de spip (couleur mauve)</li><li> en cas de problème (page blanche par exemple), essayer de renommer temporairement votre fichier <i>mes_options.php</i> (dans le répertoire <i>config/</i>) pour le désactiver.</li></ul>
<p>- récupérer maintenant les version <i>adaptées à spip 2</i> des plugins que vous utilisiez et installer ces nouvelles versions dans un répertoire <i>plugins/</i> à créer.
<br />ou bien, après avoir créé un répertoire <i>plugins/</i> puis son sous-répertoire <i>auto/</i> utiliser la procédure d'auto-installation des plugins proposée dans la page <i>ecrire/ ?exec=admin_plugin</i></p> <p>- reste à créer un répertoire <i>squelettes/</i> (si vous en avez l'utilité) et y déplacer calmement, par petits groupes, vos anciennes personnalisations récupérées depuis <i>ancien_spip/squelettes/</i></p> <p>- si vous aviez un fichier <i>mes_fonctions.php</i>, vérifier la conformité de ses fonctions et déclarations avec les nouvelles fonctions et variables de spip 2.0.8
<br />- idem si des <i>scripts php</i> sont présents <strong>dans</strong> vos squelettes personnalisés</p> <p>- si vous n'avez pas déjà un <i>.htaccess</i> actif, il vous faudra renommer <i>htaccess.txt</i> en <i>.htaccess</i> pour bénéficier des urls <i>propres</i>, <i>arbo</i>...</p> <p><a name="skel"></a></p> <h3 class="spip">LES SQUELETTES</h3>
<p>rappel :
<br />les fichiers rangés dans votre répertoire <i>squelettes/</i> prennent le pas sur ceux placés par défaut dans <i>squelettes-dist/</i> ou dans <i>prive/</i>
<br />
<br />si vous avez, en 1.9.x, copié l'organisation de votre répertoire <i>squelettes/</i> sur celle de <i>dist/</i> , sachez que 2.0.8 apporte des modifications importantes à cette organisation et qu'il vous faudra veiller à ne pas avoir des fichiers fantômes appelés en lieu et place des légitimes.
<br /><i>en particulier, un ancien <strong>squelettes/login.html</strong> tout comme <strong>squelettes/formulaires/login.html</strong> prendront le pas (et ce pourra être un problème) sur <strong>prive/login.html</strong> et <strong>prive/formulaires/login.html</strong>.</i>
<br />
<br />attention aussi aux fichiers de <i>feuille de style</i> et aux fichiers de <i>script javascript</i>.
<br />
<br />- liste des fichiers qui étaient dans <i>dist/</i> (que vous avez peut-être personnalisés dans <i>squelettes/</i>) et qui ont été déplacés ou supprimés :</p> <table class="spip">
<tbody>
<tr class='row_even'>
<td> <i> <strong>ancien</strong> </i> </td>
<td> <i> <strong>nouveau</strong> </i> </td></tr>
<tr class='row_odd'>
<td> dist/favicon.ico </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_even'>
<td> dist/jquery.js.html </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_odd'>
<td> dist/login.html </td>
<td> prive/login.html </td></tr>
<tr class='row_even'>
<td> dist/sommaire_texte.html </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_odd'>
<td> dist/spip_admin.css </td>
<td> prive/spip_admin.css </td></tr>
<tr class='row_even'>
<td> dist/spip_style_invisible.css </td>
<td> privé/spip_style_invisible.css </td></tr>
<tr class='row_odd'>
<td> dist/spip_style_print.css </td>
<td> prive/spip_style_print.css </td></tr>
<tr class='row_even'>
<td> dist/spip_style_visible.css </td>
<td> prive/spip_style_visible.css </td></tr>
<tr class='row_odd'>
<td> dist/spip_style.css </td>
<td> prive/spip_style.css </td></tr>
<tr class='row_even'>
<td> dist/style_prive_defaut.css </td>
<td> prive/style_prive_defaut.css </td></tr>
<tr class='row_odd'>
<td> dist/style_prive.html </td>
<td> prive/style_prive.html </td></tr>
<tr class='row_even'>
<td colspan='2'> </td></tr>
<tr class='row_odd'>
<td> dist/formulaires/choix_mots.html </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_even'>
<td> dist/formulaires/forum_previsu.html </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_odd'>
<td> dist/formulaires/login_forum.html </td>
<td> <i>supprimé</i> </td></tr>
<tr class='row_even'>
<td> dist/formulaires/login.html </td>
<td> prive/formulaires/login.html </td></tr>
<tr class='row_odd'>
<td> dist/formulaires/menu_lang.html </td>
<td> prive/formulaires/menu_lang.html </td></tr>
<tr class='row_even'>
<td colspan='2'> </td></tr>
<tr class='row_odd'>
<td> dist/modeles/doc.html </td>
<td> prive/modeles/doc.html </td></tr>
<tr class='row_even'>
<td> dist/modeles/emb.html </td>
<td> prive/modeles/emb.html </td></tr>
<tr class='row_odd'>
<td> dist/modeles/img.html </td>
<td> prive/modeles/img.html </td></tr>
<tr class='row_even'>
<td> dist/modeles/pagination_page_precedent_suivant.html </td>
<td> prive/modeles/pagination_page_precedent_suivant.html </td></tr>
<tr class='row_odd'>
<td> dist/modeles/pagination_page.html </td>
<td> prive/modeles/pagination_page.html </td></tr>
<tr class='row_even'>
<td> dist/modeles/pagination_precedent_suivant.html </td>
<td> prive/modeles/pagination_precedent_suivant.html </td></tr>
<tr class='row_odd'>
<td> dist/modeles/pagination.html </td>
<td> prive/modeles/pagination.html </td></tr>
<tr class='row_even'>
<td> dist/modeles/paginationitem.html </td>
<td> prive/modeles/paginationitem.html </td></tr>
<tr class='row_odd'>
<td colspan='2'> </td></tr>
<tr class='row_even'>
<td> dist/icones_barre/ </td>
<td> prive/icones_barre/ </td></tr>
<tr class='row_odd'>
<td> dist/images/ </td>
<td> prive/images/ </td></tr>
<tr class='row_even'>
<td> dist/javascript/ </td>
<td> prive/javascript/ </td></tr>
<tr class='row_odd'>
<td> dist/vignettes/ </td>
<td> prive/vignettes/ </td></tr>
</tbody>
</table>
<p>d'une manière générale, s'inspirer des nouveaux squelettes de <i>squelettes-dist/</i> et <i>prive/</i> pour reprendre et mettre à jour vos personnalisations dans <i>squelettes/</i></p> <hr class="spip" />
<p>si vous avez déjà effectué votre mise-à-jour en déposant les fichiers de spip 2.0.8 sur votre spip 1.9.x, alors il reste sans doute d'anciens fichiers devenus obsolètes et que vous pouvez supprimer :
<br />
<br />- passage de 1.9.2h stable [13886] à 2.0.8 stable [13982]
<br /><i>ces fichiers qui existaient en 1.9.x, sont, en 2.0.8, soit supprimés, soit déplacés
<br />(cela concerne essentiellement le répertoire ecrire/ et ses sous-répertoires) il convient de les supprimer</i>
<br />
<br />- ecrire/action/autoriser.php
<br />- ecrire/action/ical.php
<br />- ecrire/action/inscription.php
<br />- ecrire/action/instituer_mot.php
<br />- ecrire/action/instituer_rubrique_articles.php
<br />- ecrire/action/pass.php
<br />- ecrire/action/rss.php
<br />- ecrire/action/test_dirs.php
<br />
<br />- ecrire/base/db_mysql.php
<br />- ecrire/base/optimiser.php
<br />
<br />- ecrire/engines-list.txt
<br />
<br />- ecrire/exec/articles_ortho.php
<br />- ecrire/exec/editer_mot.php <strong>attention !!!</strong> <i>ne pas confondre avec 'ecrire/exec/editer_mots.php' (pluriel) qui est bien un fichier 2.0.8</i>
<br />- ecrire/exec/export.php <br />- ecrire/exec/forum_envoi.php
<br />- ecrire/exec/puce_statut_article.php
<br />- ecrire/exec/rubriquer.php
<br />- ecrire/exec/statistiques_svg.php
<br />
<br />- ecrire/extract/doc.php
<br />- ecrire/extract/pdf.php
<br />- ecrire/extract/rtf.php
<br />
<br />- ecrire/inc/auth_ldap.php
<br />- ecrire/inc/auth_spip.php
<br />- ecrire/inc/compacte_js.php
<br />- ecrire/inc/cron.php
<br />- ecrire/inc/editer_article.php
<br />- ecrire/inc/editer_mot.php <strong>attention !!!</strong> <i>ne pas confondre avec 'ecrire/inc/editer_mots.php' (pluriel) qui est bien un fichier 2.0.8</i>
<br />- ecrire/inc/extra.php
<br />- ecrire/inc/indenter_xml.php
<br />- ecrire/inc/indexation.php
<br />- ecrire/inc/maintenance.php
<br />- ecrire/inc/ortho.php
<br />- ecrire/inc/popularites.php
<br />- ecrire/inc/sax.php
<br />- ecrire/inc/sites_voir.php
<br />- ecrire/inc/valider_xml.php
<br />- ecrire/inc/visites.php
<br />
<br />- ecrire/install/etape_5.php
<br />- ecrire/install/etape_6.php
<br />
<br />- ecrire/safehtml/classes/HTMLSax3.php
<br />- ecrire/safehtml/classes/safehtml.php
<br />- ecrire/safehtml/classes/HTMLSax3/Decorators.php
<br />- ecrire/safehtml/classes/HTMLSax3/States.php
<br />- ecrire/safehtml/license.txt
<br />- ecrire/safehtml/readme-SPIP.txt
<br />- ecrire/safehtml/readme.txt
<br />
<br />- ecrire/urls/propres-qs.php <strong>attention !!!</strong> <i>ne pas confondre avec 'ecrire/urls/propres_qs.php' (underscore) qui est bien un fichier 2.0.8</i>
<br />
<br />- ecrire/xml/atom.php
<br />- ecrire/xml/ical.php
<br />- ecrire/xml/rss.php
<br />
<br />- ecrire/win_png.htc
<br />
<br />
<br />- le répertoire <i>dist/</i> et tous ses fichiers (voir plus haut <a href='http://www.spip.net/fr_article4121.html#skel' class='spip_in'><i>LES SQUELETTES</i></a>)
<br />
<br />- le répertoire <i>oo/</i> et son fichier <i>index.php</i>
<br />
<br />- les 3 fichiers à la racine :</p> <ul class="spip"><li> inc-public.php3</li><li> UPGRADE.txt</li><li> win_png.htc</li></ul>
<hr class="spip" /></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/WOYqfQpOvC4" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/fr_article4121.html</feedburner:origLink></item>
<item xml:lang="tr">
		<title>SPIP çekirdeğinin ortak kullanımı</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/KoxBIPzomnU/tr_article4114.html</link>
		<guid isPermaLink="false">http://www.spip.net/tr_article4114.html</guid>
		<dc:date>2009-05-28T06:25:23Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>tr</dc:language>
		<dc:creator>mega</dc:creator>



		<description>&lt;p&gt;SPIP çekirdeğini birçok site arasında ortak kullanma prosedürü&lt;/p&gt;

-
&lt;a href="http://www.spip.net/rubrique590.html" rel="directory"&gt;Optimizasyon / Sistem&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_chapo'><p>SPIP çekirdeğinin ortak kulanımı <a href='http://www.spip.net/tr_article3413.html' class='spip_in'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span><span style='color: blue;'>.</span><span style='color: darkviolet;'>9</span></a>'dan itibaren mümkündür. Amaç bir çok SPIP sitesini, tek bir SPIP çekirdeği kullanark tek bir hizmet birimi veya barındırma firması üzerinden idare etmektir.</p> <p>Bu, önemli derecede disk alanı kazanmamızı sağlar, aynı zamanda çok basit bir güncelleme olanağı tanır çünkü sadece çekirdğei güncellemek yeterli olacaktır.</p></div>
		<div class='rss_texte'><p><a href='http://www.spip.net/fr_article3462.html' class='spip_in' hreflang='fr'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span>.<span style='color: darkviolet;'>9</span>.<span style='color: salmon;'>1</span></a> daki gelişmeler prosedürü biraz kolaylaştırdı ama <a href='http://www.spip.net/fr_article3567.html' class='spip_in' hreflang='fr'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span>.<span style='color: darkviolet;'>9</span>.<span style='color: salmon;'>2</span></a> ve getirdiği geliştirmeler [<a href='http://www.spip.net/#nb1' class='spip_note' rel='footnote' title='Ortak kullanımı netleştirmek için yeni bir dizin dağıtım biçimi, login (...)' id='nh1'>1</a>] ortak kullanımı çok daha sağlam hale getirdi cve SPIP çekirdeğinin paylaşılmasına olanak tanıdı.</p> <p>Bu makale <a href='http://www.spip.net/fr_article3567.html' class='spip_in' hreflang='fr'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span>.<span style='color: darkviolet;'>9</span>.<span style='color: salmon;'>2</span></a> için Apache hizmet birimlerine kurulumunu açıklamaktadır [<a href='http://www.spip.net/#nb2' class='spip_note' rel='footnote' title='Bilgi için : bu prosedürler Apache 2.0.55 ve PHP 5.1.2 ile Ubuntu Dapper (...)' id='nh2'>2</a>] ve url'lerin yeniden yazılmasına izin vermektedir. (url_rewriting).</p> <p>Aynı sonuca götüren birçok yöntem vardır : önemli olan ortak kullanımın bir hizmet biriminden mi yoksa bir barındırma firmasından mı yapılacağına karar vermektir.</p> <h3 class="spip">Kavram ...</h3>
<p><a href='http://www.spip.net/fr_article3567.html' class='spip_in' hreflang='fr'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span>.<span style='color: darkviolet;'>9</span>.<span style='color: salmon;'>2</span></a>'ten itibaren SPIP çekirdeğinin işletilmesi için gerekli dizinler (ecrire, squelettes-dist, oo) ve bir sitenin etkinliğini gösterenler (config, IMG, tmp, local) tamamen ayrılmış ve belirlenebilirdir. Bu ayrılmışlık, tek bir SPIP çekirdeği etrafında bir çok otonom SPIP sitesini olanaklı kılar.</p> <p>Bu otonomluk site başına 4 dizin olmasına bağlıdır. Spip bunlara site etkinliklerini yazar. Bu dizinler 4 tanedir çünkü bir yandan kalıcı ve geçici veriler, diğer yandan http ile erişilebilen veya erişilemeyen veriler vardır : yani 4 tip veri. Http ile erişilemeyen 2 dizin SPIP tarafından otomatik olarak kurulan bir .htaccess ile korunur (hizmet birimi idarecileri bu dizinleri http tarafından hizmet verilen ağaç yapısının dışına da yerleştirebilirler).</p> <p>SPIP 1.9.2'den önce, bu 4 veri tipi tam olarak ayrılmış değildi ve IMG, CACHE, ecrire ve ecrire/data dizinlerinde bulunuyorlardı. SPIP 1.9.2 ile, bu 4 dizin tamamen ayrılmıştır ve şu PHP sabitleriyle adlandırılmıştır :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");<br /> define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");<br /> define('_NOM_PERMANENTS_INACCESSIBLES', "config/");<br /> define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");</code></div>
<p>Ortak kullanıma açık olmayan bir SPIP kurulumunda bu dizinler <code class='spip_code' dir='ltr'>spip_initialisation</code> fonksiyonunun uygulanması esnasında yukarıdaki 4 değer sayesinde sitenin kök dizininde oluşturulur. SPIP kaynaklarının ortak kullanımını sağlamak için <code class='spip_code' dir='ltr'>spip_initialisation</code> fonksiyonunu URL'den elde edilen 4 değişik değer üzerinden özel bir URL'yi özel dizinler dörtlüsüne bağlamak yeterlidir.</p> <h3 class="spip">Doğru dizinleri oluşturmak</h3>
<p>Ortak kullanımı başlatmak için önce işlevsel bir siteden yola çıkmak gerekir. Örnekler için, <a href='http://ornek.org/' class='spip_out' rel='nofollow'>http://ornek.org/</a> url'si ile çağrılan ve fiziksel olarak /home/deneme/public_html/ dizininde yer alan bir siteden yola çıkacağız.</p> <p>Dağıtımın kök dizininde (/ecrire ile aynı seviyede) ortak kullanılan sitelerin dizinlerini içeren bir dizin oluşturmak gerekir (örneğin 'siteler').</p> <p>- dizinin ortak kullanımı :
<br /><a href='http://ornek.org/ilk_site/' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site/</a> ve <a href='http://ornek.org/ikinci_site/' class='spip_out' rel='nofollow'>http://ornek.org/ikinci_site/</a> adreslerinin her birinin bir spip sitesini çağırmaları isteniyorsa, /siteler dizininin altında şu alt-dizinlerin oluşturulması gerekir : /ilk_site ve /ikinci_site; sonra bunların içinde /config, /IMG, /tmp, /local dizinlerinin oluşturulması gerekir. Bu 4 dizin yazma izinli olacak biçimde erişilebilir olmalıdır. Devamında bu dizinlere /squelettes dizini de eklenecektir.</p> <p>- alt-domaine ve domaine'in ortak kullanımı (bazı fikirler) :
<br /><a href='http://deneme.ornek.org/' class='spip_out' rel='nofollow'>http://deneme.ornek.org/</a>, <a href='http://ornek.tld/' class='spip_out' rel='nofollow'>http://ornek.tld/</a> ve <a href='http://kullanici.ornek.com/' class='spip_out' rel='nofollow'>http://kullanici.ornek.com/</a> adreslerinden her birinin bir spip sitesi çağırması için /siteler dizininde /deneme, /ornek.tld ve /ornek.com/kullanici dizinlerinin oluşturulması gerekir.</p> <p><strong>Uyarı :</strong> Tüm bağlantılar kök dizini işaret etmelidir yani /home/deneme/public_html/. Bu, ya .htaccess dosyasının ya da ileride açıklayacağımız Apache hizmet birimi yapılandırmasının gerçekleştireceği bir görevdir.</p> <h3 class="spip">Doğru düzenlenmiş yönlendirmeler !</h3>
<p>SPIP'in bir sitenin ortak kullanıma açık olduğunu anlaması için (index.php tarafından çağrılan) spip.php skriptinin çalıştırılması gerekir. Bu skript /config/mes_options.php'ye eklenen bir kod sayesinde çağrılan URL'nin ortak kullanıma açık bir siteye karşı düşüp düşmediğine bakacaktır. Bunun için, <a href='http://ornek.org/ilk_site/' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site/</a> veya <a href='http://ornek.org/ikinci_site/' class='spip_out' rel='nofollow'>http://ornek.org/ikinci_site/</a> adresinin <a href='http://ornek.org/' class='spip_out' rel='nofollow'>http://ornek.org/</a> adresine yönlendirilmesi ve index.php'yi çalıştırması gerekir...</p> <p>Bu, .htaccess dosyasının görevidir (veya direkt olarak Apache hizmet biriminin yapılandırmasının)</p> <p>htaccess.txt dosyasını dağıtımın kök dizinine kopyalamalı ve ismini .htaccess olarak değiştirmeli, sonra da şu değişiklikleri yapmalıdır :</p> <p>URL'nin yeniden yazılmasına izin vermek için (normalde hiçbir şey değişmez) :
<code class='spip_code' dir='ltr'>RewriteEngine On</code></p> <p>Eğer SPIP dağıtımı bir alt-dizindeyse rewritebase değiştirilmelidir. Burada, site kök dizinde, yani :
<code class='spip_code' dir='ltr'>RewriteBase /</code></p> <p>Son olarak, kişisel ayarlarda, şu kod eklenmelidir ki /premier_site , /ikinci_site ve /üçüncü_site dizinleri dağıtımın kök dizininden işlenebilsin :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>#Mutualisation<br /> RewriteRule ^(ilk_site|ikinci_site|üçüncü_site)$ /$1/ [R,L]<br /> RewriteRule ^(ilk_site|ikinci_site|üçüncü_site)/(.*) /$2 [QSA,L]</code></div>
<p>İlk rewriterule <a href='http://ornek.org/ilk_site' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site</a> adreslerini <a href='http://ornek.org/ilk_site{{/' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site<strong>/</a></strong>e yönlendirir. İkinci, /ilk_site/ 'nin ardındakileri kök dizine, örneğin: <a href='http://ornek.org/ilk_site/article112' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site/article112</a> <a href='http://ornek.org/article112' class='spip_out' rel='nofollow'>http://ornek.org/article112</a> adresine yönlendirilir. (Bu arada, bu yönlendirme şeffaftır, url'nin ismi değişmez. daima <a href='http://ornek.org/ilk_site/article112' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site/article112</a>'dir. Özellikle php'de ve php için !)</p> <p><strong>Peki ya SPIP bir alt-dizinde bulunuyorsa ?</strong>
<br />Bu durumda, spip dosyaları /home/deneme/public_html/spip/ dizinindedir, SPIP <a href='http://ornek.org/spip/' class='spip_out' rel='nofollow'>http://ornek.org/spip/</a> tarafından çağrılır, ortak kullanıma açık siteler <a href='http://ornek.org/spip/ilk_site/' class='spip_out' rel='nofollow'>http://ornek.org/spip/ilk_site/</a> veya <a href='http://ornek.org/spip/ikinci_site/' class='spip_out' rel='nofollow'>http://ornek.org/spip/ikinci_site/</a> tarafından çağrılır.</p> <p>O zaman .htaccess dosyasına şunu koymak gerekir :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>RewriteEngine On<br /> RewriteBase /spip/<br /> <br /> #Ortak kullanım (Mutualisation) <br /> RewriteRule ^(ilk_site|ikinci_site|üçüncü_site)$ /spip/$1/ [R,L]<br /> RewriteRule ^(ilk_site|ikinci_site|üçüncü_site)/(.*) /spip/$2 [QSA,L]</code></div>
<p><strong>Peki ya tüm dizinleri ortak kullanılan siteler gibi yönlendirmek istersek ?</strong></p> <p>Yukarıda rewriterules <strong>yerine</strong> yerine ortak kullanıma açık sitedeki dizinin ismi ne olursa olsun işe yarayan bir jenerik kod kullanılabilir :</p> <p>- kök dizinde</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>RewriteCond %{REQUEST_URI} !^/(config|squelettes-dist|ecrire|IMG|oo|plugins|siteler|squelettes|tmp|local)/(.*)<br /> RewriteRule ^[^/]+/(.*) /$1 [QSA,L]</code></div>
<p>- veya bir /spip dizininde :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>RewriteCond %{REQUEST_URI} !^/spip/(config|squelettes-dist|ecrire|IMG|oo|plugins|siteler|squelettes|tmp|local)/(.*)<br /> RewriteRule ^[^/]+/(.*) /spip/$1 [QSA,L]</code></div>
<p><strong>Domaine'ler ve alt-domaine'le için ?</strong>
<br />Çok mutlu bir tesadüftür ki burada yapılacak hiçbir şey yok çünkü zaten SPIp dağıtımının kök dizinini işaret ediyorlar...</p> <h3 class="spip">Mutualiser selon l'URL grâce à mes_options.php</h3>
<p>İşin önemli kısmını halledecek olan kök dizindeki /config/mes_options.php dosyasıdır : bir URL'nin ortak kullanılıp kullanılmayacağını anlayıp SPIP'i buna göre başlatmak onun görevidir.</p> <p>Dizinler ve domaine'ler arasında bir çok farklı durum olabilir. PHP skript'i çağıran URL'leri test etmek için 2 değişkenden yararlanabilir :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>$_SERVER['REQUEST_URI']; // domaine isminin ardındaki her şeyi içerir : örneğin /ilk_site/article112 ...<br /> $_SERVER['SERVER_NAME']; // domaine ve alt-domaine ismini içerir : örneğin kullanici.ornek.org </code></div>
<p>Ortak kullanıma açık dizinin ismini elde etmek için bakılacak değerlerş içeren bu 2 değişkendir.</p> <p>Tüm dizinleri ortak kullanıma açacak basit bir yöntem aşağıdaki kodu kopyalamaktır :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><?php <br /> if ( preg_match(',/([a-zA-Z0-9_-]+)/?,',$_SERVER['REQUEST_URI'],$r)) {<br /> <br /> if (is_dir($e = _DIR_RACINE . 'siteler/' . $r[1]. '/')) {<br /> <br /> $cookie_prefix = $table_prefix = $r[1]; <br /> <br /> define('_SPIP_PATH',<br /> $e . ':' .<br /> _DIR_RACINE .':' .<br /> _DIR_RACINE .'squelettes-dist/:' .<br /> _DIR_RACINE.'prive/:'.<br /> _DIR_RESTREINT);<br /> <br /> spip_initialisation(<br /> ($e . _NOM_PERMANENTS_INACCESSIBLES),<br /> ($e . _NOM_PERMANENTS_ACCESSIBLES),<br /> ($e . _NOM_TEMPORAIRES_INACCESSIBLES),<br /> ($e . _NOM_TEMPORAIRES_ACCESSIBLES)<br /> );<br /> <br /> $GLOBALS['dossier_squelettes'] = $e.'squelettes';<br /> <br /> if (is_readable($f = $e._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')) include($f);<br /> }<br /> } <br /> ?></code></div>
<p>preg_match satırı URL'nin ağaç yapısındaki dizin ismini alır, örneğin <a href='http://ornek.org/ilk_site/' class='spip_out' rel='nofollow'>http://ornek.org/ilk_site/</a> 'deki 'ilk_site ... Sonra eğer /siteler/ilk_site/ mevcutsa skript ortak kullanımı dener.</p> <p>Eğer SPIPbir /spip dizininin altındaysa ilk satırı şöyle değiştirmek gerekir :
<code class='spip_code' dir='ltr'>if (preg_match(',/spip/([a-zA-Z0-9_-]+)/?,', $_SERVER['REQUEST_URI'], $r)) {</code></p> <p>SPIP'e kullanılan veritabanının ön-ekinin bildirilmesi gerekir : bunu da şu kod gerçekleştirir <code class='spip_code' dir='ltr'>$cookie_prefix = $table_prefix = $r[1];</code>
<br />Bu satır, siteyi içeren dizinin ismini taşıyan ön-eklerle MySQL tablolarını oluşturur : örneğin spip_article yerine benim_sitem_article. Bu yöntem bize tek ve aynı veritabanı üzerinde bütün siteleri barındırma olanağı tanır. Varsayılan (spip) ön-ekini koruyabilirsiniz ama her site için ayrı veritabanları öngörmelisiniz. <br />Bunun için, şu kodu ekleyebilirsiniz :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>$cookie_prefix = $r[1]; <br /> $table_prefix='spip';</code></div>
<p>spip_initialisation fonksiyonu, ortak kullanıma açılan sitenin çalışması için gerekli dizinlerin adresleri olan 4 parametreye gereksinim duyar.</p> <p><code class='spip_code' dir='ltr'>$GLOBALS['dossier_squelettes'] = $e.'squelettes';</code> ortak kullanıma açılan sitenin iskelet dizinini tanımlar.</p> <p>En sonunda da son satırlar şöyle bir dosyayı yükler : siteler/ilk_site/config/mes_options.php.</p> <p><strong>Bilgi :</strong></p> <p>SPIP çekirdeğinin config/mes_options.php dosyasında yapılan her değişiklik barındırılan tüm siteleri etkileyecektir.</p> <p>Örneğin, bu dosyayı eklerseniz :
<code class='spip_code' dir='ltr'>$type_urls = 'propres' ;</code></p> <p>Bu url tipindeki tüm siterleri etkiler... Ama her site bunu kendi dosyasında değiştirebilir /siteler/benim_sitem/config/mes_options.php.</p> <h3 class="spip">Apache'ı domaine'ler ve alt-domaine'ler için yapılandırmak</h3>
<p>Hizmet birimi tarafında, domaine'leri veya alt-domaine'leri ilgilendiren ortak kullanımın işletimi çok basittir ama bu sitelerin dikkate alınması için Apache hizmet biriminin yapılandırmasında bazı yönlendirmeler gerektirir.</p> <p>İşte size 'ornek.tld' isimli ve alt-dizinler kullanan bir hizmet birimi için bir yapılandırma örneği (burada SPIP ortak kullanıma açıktır ve <a href='http://kullanici.ornek.org/spip/' class='spip_out' rel='nofollow'>http://kullanici.ornek.org/spip/</a> tarafından çağrılır) .</p> <p>SPIP çekirdeği '/home/deneme/public_html/spip/' dizinindedir.</p> <p>O zaman şu iki dizin oluşturulmalıdır : /siteler/ornek.tld/ , /siteler/ornek.tld/kullanici/.</p> <p>Yapılandırma dosyası /etc/apache2/sites_availables/default altında Apache 2/linux 'tadır. (siz sites_availables dizininde yeni bir dosya oluşturup onu etkinleştirebilirsiniz).</p> <div style='text-align: left;' class='spip_code' dir='ltr'><code># SERVEUR exemple.tld<br /> # SPIP par sous domaine...<br /> <VirtualHost *><br /> ServerName exemple.tld<br /> ServerAlias *.exemple.tld<br /> <br /> # SPIP çekirdeğine yönlendirme<br /> DocumentRoot "/home/deneme/public_html"<br /> <Directory "/home/deneme/public_html/"><br /> AllowOverride All<br /> Order allow,deny<br /> Allow from all<br /> </Directory><br /> <br /> # Sadece http://kullanici.ornek.tld/spip/* adresi yönlendirilmelidir<br /> <br /> # (kullanici.ornek.tld/spip/* -> /home/deneme/public_html/*)<br /> RewriteCond %{SERVER_NAME} (www\.)?([^.]+)\.ornek\.net$<br /> RewriteRule ^/spip/(.*) /home/deneme/public_html/spip/$1 [QSA,L]<br /> <br /> # (kullanici.ornek.tld/* -> /home/deneme/public_html/siteler/ornek.tld/kullanici/*)<br /> RewriteCond %{SERVER_NAME} (www\.)?([^.]+)\.ornek\.net$<br /> RewriteRule (.*) /home/deneme/public_html/siteler/ornek.tld/%1/$1 [QSA,L]<br /> <br /> </VirtualHost></code></div>
<p>/config/mes_options.php adresinde bu ortak kullanımları test etmek zorunludur :</p> <div style='text-align: left;' class='spip_code' dir='ltr'><code><?php<br /> # pour kullanici.ornek.tld/spip/ için <br /> if ( preg_match(',(.*)\.exemple\.tld/spip/?,',$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'],$r)) {<br /> <br /> if (is_dir($e = _DIR_RACINE . 'siteler/ornek.tld/' . $r[1]. '/')) {<br /> <br /> $cookie_prefix = $table_prefix = $r[1]; <br /> <br /> define('_SPIP_PATH',<br /> $e . ':' .<br /> _DIR_RACINE .':' .<br /> _DIR_RACINE .'squelettes-dist/:' .<br /> _DIR_RACINE.'prive/:'.<br /> _DIR_RESTREINT);<br /> <br /> spip_initialisation(<br /> ($e . _NOM_PERMANENTS_INACCESSIBLES),<br /> ($e . _NOM_PERMANENTS_ACCESSIBLES),<br /> ($e . _NOM_TEMPORAIRES_INACCESSIBLES),<br /> ($e . _NOM_TEMPORAIRES_ACCESSIBLES)<br /> );<br /> <br /> $GLOBALS['dossier_squelettes'] = $e.'squelettes';<br /> <br /> if (is_readable($f = $e._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')) include($f);<br /> }<br /> } <br /> ?></code></div>
<h3 class="spip">Yedeklemeler ve geri yüklemeler üzerine notlar</h3>
<p>Her site, kısıtlı bir yönetici için yedekleme dosyalarını /siteler/ilk_site/tmp/dump (veya /siteler/ilk_site/tmp/upload/<i>login</i> dizinine kopyalar).
Geri yüklemeler de aynı dizin kullanılarak yapılır.</p> <p><strong>Dikkat:</strong></p> <p>Şu anda SPIP, /IMG dizini ile ilgili olarak, veritabanına tek başına sitelerde kullandığı IMG/* yerine ortak kullanıma açık siteler için siteler/ilk_site/IMG/* bilgisini kaydeder.</p> <p>Geri yükleme ancak yedeklemeyi yapan siteden çağrıldığında çalışacaktır.</p> <p>Yedeklemeyi başka bir yere geri yüklemek ancak dump.xml dosyasını düzenleyerek ve bu değerin geçtiği her yeri değiştirerek mümkündür (dir_img ve dir_logo deklarasyonları isitisnadır. ) :
<br />- siteler/ilk_sitem/IMG/</p> <ul class="spip"><li> (tek başına SPIP) ile : IMG/</li><li> veya (ortak kullanılan SPIP) : siteler/benim_yeni_sitem/IMG/</li></ul>
<p>Tersine, ortak kullanılan bir dizinde tek başına bir SPIP yüklemek için tüm “IMG/” lerin “siteler/bemim_sitem/IMG/” olarak değiştirilmesi gerekir.</p></div>
		<hr />
		<div class='rss_notes'><p>[<a href='http://www.spip.net/#nh1' id='nb1' class='spip_note' title='Notlar 1' rev='footnote'>1</a>] Ortak kullanımı netleştirmek için yeni bir dizin dağıtım biçimi, login sorunlarının ve ayrık site isimlerinin ortak kullanılanlarla karışması gibi sorunların çözülmesi, ortak kullanılacak bir sitenin kurulum işleminin daha net olması</p> <p>[<a href='http://www.spip.net/#nh2' id='nb2' class='spip_note' title='Notlar 2' rev='footnote'>2</a>] Bilgi için : bu prosedürler Apache 2.0.55 ve PHP 5.1.2 ile Ubuntu Dapper Drake hizmet birimi ve PHP 5.1.6 ile Ubuntu Edgy Eft sistemlerinde test edilmiştir</p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/KoxBIPzomnU" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/tr_article4114.html</feedburner:origLink></item>
<item xml:lang="tr">
		<title>Makale yazmak</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/q7Y54f-bpbk/tr_article4120.html</link>
		<guid isPermaLink="false">http://www.spip.net/tr_article4120.html</guid>
		<dc:date>2009-05-27T18:33:08Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>tr</dc:language>
		<dc:creator>mega</dc:creator>



		<description>İlk makaleleri yazmanın zamanıdır. Bu öğretici metinde sadece atılacak adımları değil aynı zamanda iskeletlerle çalışmayı da gösterecek. Önemli not Önceden SPIP iskeletleriyle uğraştıysanız en az bir makalenin yayınlanmış olması gerektiğini de bilirsiniz. Biz, grafik arayüzün oluşturulması esnasında mümkün olabilecek en fazla sayıda makale yazmanızı, çok sayıda bölüm oluşturmanızı ve hatta farklı uzunluklarda üst-başlığı veya alt-başlığı olan / olmayan, şapkası olan / olmayan makaleler yazmanızı öneririz. Bu makale sayısı (...)

-
&lt;a href="http://www.spip.net/rubrique411.html" rel="directory"&gt;Eğitim: Döngü ve anahtar sözcüklerin ileri kullanımı&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>İlk makaleleri yazmanın zamanıdır. Bu öğretici metinde sadece atılacak adımları değil aynı zamanda iskeletlerle çalışmayı da gösterecek.</p> <p><i>Önemli not</i> Önceden SPIP iskeletleriyle uğraştıysanız en az bir makalenin yayınlanmış olması gerektiğini de bilirsiniz. Biz, grafik arayüzün oluşturulması esnasında mümkün olabilecek en fazla sayıda makale yazmanızı, çok sayıda bölüm oluşturmanızı ve hatta farklı uzunluklarda üst-başlığı veya alt-başlığı olan / olmayan, şapkası olan / olmayan makaleler yazmanızı öneririz. Bu makale sayısı ne kadar fazla olursa daha da «esnek» bir arayüz oluşturabilirsiniz (yani olası bütün durumlara uyan). Tabii arayüz testleri için bu makaleler «uydurma metinler» olabilir (Web'den kesip koyalanan makaleler, yemek tarifleri vb.).</p> <h3 class="spip">Oyun başına bir makale </h3>
<p>Bir oyun içeren tüm makalelerin aynı bölümde toplanmasına karar verdik. Oyun üzerine ilk makaleyi yazmadan önce bu oyunun ismini taşıyan bir bölüm oluşturmalıyız (gelecek makaleler için tabii ki aynı bölüme konuşlanmalıyız).</p> <p>Bölüm çok önemli bi rrol oynayacaktır : oyuna ismini veren bölüm olacaktır ve içerdiği tüm makalelere logo'yu sunan o olacaktır. Örneğin, «Resident Evil: Code Veronica» isimli bir bölüm oluşturacak ve bir logo atayacağız. Sonra, bu bölümde oyunun çözümünü içeren bir makale eklediğimizde bu makale oyunun ismini hatırlamak zorunda değildir (makale basitçe «Tam çözüm» ismini alacaktır) ve makaleye bir logo atamak zorunlu değildir.</p> <p>Şu bölüme gidelim:
<br />- Action/aventure | Survival horror</p> <p>ve «Resident Evil: Code Veronica» isimli bir alt-bölüm oluşturalım.</p> <p>Bu bölüm için bir «hızlı tanım» ekleyelim ve oyunun genel tanımını verelim.</p> <p>Sonra bir ekran kopyası alarak bölümün logosunu oluşturalım.</p> <p><i>Önemli not</i> Bu bölüm logoları sitenin grafik arayüzünü elde etmek için çok sık kullanılacaktır. Biz, site. Nous vous conseillons donc de choisir arbitrairement (grafik gerekliliklere göre) tüm bu logolar için tek bir fomat seçmenizi öneririz. Bu, uyumlu bir arayüz oluşturulmasını sağlayacaktır. Örneğin tüm bölüm logolarının 120 x 160 piksel olmasını istiyoruz.</p> <p>Şunu elde ederiz:</p> <CENTER><span class='spip_document_70 spip_documents spip_documents_center' >
<img src='http://www.spip.net/local/cache-vignettes/L400xH181/art1266-1-131fc.jpg' width='400' height='181' alt="image 400 x 181" title="image 400 x 181" style='height:181px;width:400px;' /></span></CENTER>
<h3 class="spip">Oyunun tam bir testi !</h3>
<p>Şimdi ilk bölüm oluşturulduğuna göre, bu oyunu içeren ilk makalemizi yazabiliriz.</p> <p><i>Önemli not</i> Bu sitedeki ilk olumsuzluğu vurgulayalım : bir oyunu içeren ilk makaleyi yazmadan önce s'astreindre à créer une rubrique (ve sitenin diğer katılımcılarına açıklamak) gerekir, Oysa normal davranış biçimi makaleyi direkt olarak «Survival horror» bölümünde yazmak ve başlık olarak (veya üst-başlık) olarak oyunun adını vermek olmalıydı. Bu, daha basit (tek bir makineyi işleten, sadece testler ve sonuçlar sunan) bir site için uygundur. Ama madem ki daha iddialı bir site için yola çıktık yapıda daha formal olmamız gerekir.</p> <p>İlk anda, metin yaratmak ve resim eklemek yeterlidir.</p> <p>Dikkat bu arada hemen belirlemek gereken 2 nokta var :
<br />- oyunun ismi makalenin «kutucuklarında» belirtilmiş mi ? (başlıkta, üst-başlıkta, alt-başlıkta...)
<br />- «hızlı tanım» zorunlu mu ?</p> <p>Bu, daha sonra iskeletleri nasıl işleteceğimizi belirler. Rastgele biçimlerde seçim yapabilirsiniz ve daha sonra buna bağlı olarak iskeletlerinizi gerçekleştirin.</p> <p>Bu eğitici belgede sunulacak örnekler için makalenin isminin oyunun ismini belirtmemesine karar verdik (ne başlıkta, ne üst veya alt-başlıklarda); bu isim sistemli bi rşekilde makaleyi içeren bölümden elde edilecektir. Ve iskeletlerimizde #DESCRIPTIF hızlı tanımını kullanacağız; yani bir tane hızlı tanım koymalıyız aksi halde hızlı tanıma atanan alan boş kalacaktır.</p> <p>Son olarak, makalenin kendisine bir logo atamak zorunlu değil çünkü bölümünkini elde ederiz. Ama makaleye bir logo yerleştirmeye karar verilirse bölüm logoları için kabûl edilen formata uymanızı öneririz (çşjşs erırsrsrjeu 120 x 160 piksel).</p> <p>Kabaca şunu verir :</p> <CENTER><span class='spip_document_71 spip_documents spip_documents_center' >
<img src='http://www.spip.net/local/cache-vignettes/L140xH300/art1266-2-b8ef2.jpg' width='140' height='300' alt="image 140 x 300" title="image 140 x 300" style='height:300px;width:140px;' /></span></CENTER>
<p>- Makale başlığı oyunun ismi değil ama bir çengeldir "accroche" (Örneğin: «Le retour de Claire Redfield»);</p> <p>- bir hızlı tanım var;</p> <p>- sadece çevrim içi yayın tarihini kullanırız («ilk yayın tarihi» değil - zaten «İnce yapılandırma»'da bu olasılığı pasif hale getirdik); bu tarih yayın tarihine yani sitenin güncellenme tarihine karşı düşer (oyunların piyasaya ticarî çıkış tarihlerinin yönetimini daha sonra göreceğiz);</p> <p>- yazarlarda, alışılmış yöntemle çalışırız : yazar sitede makaleyi yazan (testleri haberler...) ığeumobıewı. Burada bir «oyun yazarı» veya başka detay bilgiler vermeye çalışmayın.</p> <h3 class="spip">Hangi makine(ler) için ? Hangi tip makale</h3>
<p>Şimdi bu makalenin hangi makineleri ilgilendirdiği ve hangi tip bir makale olduğunu belirtmek kalır.</p> <p>Bunun için, açılan menüler kullanacağız «Bir anahtar-sözcük ekleyiniz». İşte size pratik bir çözüm...</p> <CENTER><span class='spip_document_73 spip_documents spip_documents_center' >
<img src='http://www.spip.net/local/cache-vignettes/L333xH183/art1266-5-10997.gif' width='333' height='183' alt="image 333 x 183" title="image 333 x 183" style='height:183px;width:333px;' /></span></CENTER>
<p>Pour ce jeu, nous considérerons que le test vaut aussi bien pour la version Dreamcast que pour la version Playstation 2. Si on considère que les deux versions sont suffisamment différentes, on peut tout aussi bien écrire un test différent pour chaque machine, il suffira alors de ne sélectionner qu'une seul machine par article.</p> <p>Makale tipine gelince, bu bir test.</p> <p>Elimizde ne var ? :</p> <CENTER><span class='spip_document_72 spip_documents spip_documents_center' >
<img src='http://www.spip.net/local/cache-vignettes/L380xH90/art1266-4-c2b63.jpg' width='380' height='90' alt="image 380 x 90" title="image 380 x 90" style='height:90px;width:380px;' /></span></CENTER>
<p>Bir makaleyi yayınlama biçiminin formalize edilmesi gerektiğini bir kez daha vurgulayalım. Her türlü yayından önce gerekli anahtarsözcüklerin varlığını kontrol etmek gerekir.</p> <p>- Makinenin bildirilmesi gerçekten zorunlu değildir (makale yine de içindekiler bölümünde görülecektir); ama olmaması arayüzü bazı makalelerin makineleri belirtip bazılarının belirtmemesi yüzünden tutarsız kılacaktır ve makaleye «makineye göre» atıfta bulunulamayacaktır. Aynı makale için bir çok makine belirtilebilir.</p> <p>- Makale tipi mutlaka olmalıdır. İleride bu tür makaleleri yoğun biçimde kullandığımızı göreceğiz. Unutulması durumunda, makale kamusal sitede görünmeyecektir. Bir makale için sadece tek bir tip belirtmek gerekir.</p> <p>Bunu yaptıktan sonra bazıları çok makineli, farklı tiplerde ve farklı formatlarda başka makaleler oluşturun. Özellikle tam bir bölüm oluşturmaya çalışın (tüm makale tipleriyle) ve «Survival horror»'a yakın başlıkları zenginleştirin ki iskeletlerle ve site etkinliğini temsil edebilen başlıklarla çalışılabilsin. Yayın tarihlerini değiştirmeyi ve başlıkların ve makalelerin sıralanmasını test etmeyi unutmayın.</p> <p>Bu durumda ideal olan sitede çok sayıda makale oluşturmak ve çok geniş bir yelpazeyi içeren yayın tarihleri kullanmaktır.</p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/q7Y54f-bpbk" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/tr_article4120.html</feedburner:origLink></item>
<item xml:lang="fr">
		<title>#AUTORISER</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/F3XafcD6n7I/fr_article3896.html</link>
		<guid isPermaLink="false">http://www.spip.net/fr_article3896.html</guid>
		<dc:date>2009-05-25T20:24:59Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>cam.lafit, Fil</dc:creator>


		<dc:subject>calculee</dc:subject>
		<dc:subject>SPIP 2.0</dc:subject>
		<dc:subject>#AUTORISER</dc:subject>

		<description>Cette balise a été introduite par SPIP 2.0. Cette balise permet, côté squelette, d'effectuer les mêmes contrôles que ceux qu'on peut réaliser en PHP avec la fonction autoriser() Elle renvoie un espace si l'autorisation est donnée, et une chaîne vide dans le cas contraire. On met autant d'arguments (et les mêmes) qu'on en mettrait dans la fonction autoriser(). Par exemple, pour savoir si le visiteur courant peut accéder aux statistiques de l'article : [(#AUTORISERvoirstats,article,#ID_ARTICLE) &lt;a (...)

-
&lt;a href="http://www.spip.net/rubrique543.html" rel="directory"&gt;balises&lt;/a&gt;

/ 
&lt;a href="http://www.spip.net/@calculee" rel="tag"&gt;calculee&lt;/a&gt;, 
&lt;a href="http://www.spip.net/@spip20" rel="tag"&gt;SPIP 2.0&lt;/a&gt;, 
&lt;a href="http://www.spip.net/@autoriser" rel="tag"&gt;#AUTORISER&lt;/a&gt;

		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>Cette balise a été introduite par <a href='http://www.spip.net/fr_article3784.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a>. Cette balise permet, côté squelette, d'effectuer les mêmes contrôles que ceux qu'on peut réaliser en PHP avec la fonction <code class='spip_code' dir='ltr'>autoriser()</code></p> <p>Elle renvoie un espace si l'autorisation est donnée, et une chaîne vide dans le cas contraire. On met autant d'arguments (et les mêmes) qu'on en mettrait dans la fonction <code class='spip_code' dir='ltr'>autoriser()</code>.</p> <p>Par exemple, pour savoir si le visiteur courant peut accéder aux statistiques
de l'article :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[(#AUTORISER{voirstats,article,#ID_ARTICLE})<br /> <a href='ecrire/?exec=....'>voir les stats</a><br /> ]</code></div>
<p>Comme pour la fonction <code class='spip_code' dir='ltr'>autoriser()</code>, on peut passer un <code class='spip_code' dir='ltr'>#ID_AUTEUR</code> en argument pour demander si l'auteur en question est autorisé à .... .</p> <p>Par exemple pour signaler d'une étoile les administrateurs et rédacteurs dans
une liste d'auteurs :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><BOUCLE_a(AUTEURS){tous}><br /> #NOM [(#AUTORISER{ecrire,'','',#ID_AUTEUR}) *]<br /> </BOUCLE_a></code></div>
<p>Un autre exemple, ci dessous, si le visiteur a des droits de modifications sur l'article, afficher un formulaire pour l'éditer, qui, une fois validé, retourne sur la page de l'article en question :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>[(#AUTORISER{modifier, article,#ID_ARTICLE})<br /> #FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #URL_ARTICLE}<br /> ]</code></div>
<p>Rappel : les arguments de autoriser sont, dans l'ordre, (faire, quoi,
id, qui, options).</p> <p>Pour plus de détails nous vous invitons à consulter la documentation des fonctions de <a href='http://doc.spip.org/autoriser-php' class='spip_out'>inc/autoriser.php</a>.</p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/F3XafcD6n7I" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/fr_article3896.html</feedburner:origLink></item>
<item xml:lang="tr">
		<title>SPIP'te veritabanları</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/ZIPd-edWtak/tr_article4106.html</link>
		<guid isPermaLink="false">http://www.spip.net/tr_article4106.html</guid>
		<dc:date>2009-05-25T16:51:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>tr</dc:language>
		<dc:creator>mega</dc:creator>



		<description>&lt;p&gt;SPIP'in veritabanlarıyla yapabildiği herşey&lt;/p&gt;

-
&lt;a href="http://www.spip.net/rubrique588.html" rel="directory"&gt;Veritabanları&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_chapo'><p>SPIP MIME formatında (HTML, RSS, ICS ...) veritabanı ekstreleriyle sayfa düzeni yapabilen bir gereç olarak görülebilir. <a href='http://www.spip.net/tr_article4067.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a>'ın yeniliklerinden biri, birbirlerinden farklı hizmet birimlerinde yer alan farklı birçok SQL veritabanından gelen bilgileri tek sayfada toplayabilmesidir. SPIP hiç programlama gerektirmeden farklı bağlantıları işletebilir ve farklı tablo tanımlamalarını yapabilir. Bu makale yeni sürümün sunduğu bu özelliklerin kullanımını anlatmaktadır.</p></div>
		<div class='rss_texte'><h3 class="spip">Minimal kurulum</h3>
<p>Öncelikle tek bir veritabanı ile yapılabilen tüm kurulumları görelim.</p> <p>Kurulum esnasında SPIP PHP'nin yapılandırmasını test eder ve eğer mümkünse hepsi aynı işlevlere sahip bir çok SQL hizmet birimi arasından bir tanesini seçmenizi ister (şu anda MySQL, PostgreSQL veya SQLite). O anda SQL hizmet biriminin adresi, kullanıcı adı ve şifresi verilmelidir. Bu bilgiler genellikle kurulum dormuna girilir. <a href='http://www.spip.net/tr_article4114.html' class='spip_in'>SPIP çekirdeğinin ortak kullanımı</a>'nı gerçekleştirmek istediğinizde <code class='spip_code' dir='ltr'>mes_options.php</code> isimli yapılandırma dosyasında bu değerlerden bir veya bir kaçını bildirebilirsiniz. Bu durumda SPIP bu bilgileri istemeyecek ve siz de bu kurulumu kullanacak kişilere bu şifreleri vermek zorunda kalmazsınız.
Bu değerleri tanımlamak için kullanılacak sabitlerin isimleri şöyledir:</p> <table class="spip">
<tbody>
<tr class='row_even'>
<td><code class='spip_code' dir='ltr'>_INSTALL_SERVER_DB </code></td>
<td> <i>SQL hizmet biriminin tipi</i> (Mysql veya PG; büyük / küçük harfe duyarsız)</td></tr>
<tr class='row_odd'>
<td><code class='spip_code' dir='ltr'>_INSTALL_HOST_DB</code></td>
<td><i> SQL hizmet biriminin internet ismi (örneğin: localhost)</i></td></tr>
<tr class='row_even'>
<td><code class='spip_code' dir='ltr'>_INSTALL_USER_DB</code> </td>
<td><i>SQL hizmet biriminin kullanıcı ismi</i></td></tr>
<tr class='row_odd'>
<td><code class='spip_code' dir='ltr'>_INSTALL_PASS_DB </code></td>
<td> <i>SQL hizmet biriminin kullanıcı şifresi</i></td></tr>
</tbody>
</table>
<p>Bu durumda SPIP belirtilen bilgilerle hizmet birimine bağlanır.
Bağlanmada başarılı olursa, kullanıcının veritabanı oluşturma yetkisinin olup olmadığını test eder veya sadece mevcut veritabanlarını görüp bunlardan birini görme yetkisini test eder ya da kendi kullanıcı ismiyle aynı olan bir veritabanını kullanma yetkisi olup olmadığını kontrol eder. Tabii ki önceden <code class='spip_code' dir='ltr'>mes_options.php</code> dosyasında şu PHP sabitini tanımlayarak kullanılacak veritabanını bildirebilirsiniz :</p> <table class="spip">
<tbody>
<tr class='row_even'>
<td><code class='spip_code' dir='ltr'>_INSTALL_NAME_DB</code></td>
<td><i>veritabanının ismi</i></td></tr>
</tbody>
</table>
<p>SPIP SQL tablolarını oluşturarak kurulumu devam ettirir (veya yeniden kurulum yapılıyorsa mevcut tabloların kullanılabilir olup olmadığını test eder). Bu tabloların hepsi (varsayılan değer olarak <code class='spip_code' dir='ltr'>spip_</code> olan) bir <i>tablo ön-eki</i> ile başlar ve <code class='spip_code' dir='ltr'>mes_options.php</code> dosyasında iki şekilde bildirilebilir:</p> <table class="spip">
<tbody>
<tr class='row_even'>
<td><i>global değişken</i></td>
<td><code class='spip_code' dir='ltr'> $table_prefix</code></td></tr>
<tr class='row_odd'>
<td><i>sabit</i></td>
<td> <code class='spip_code' dir='ltr'>_INSTALL_TABLE_PREFIX </code></td></tr>
</tbody>
</table>
<p>Bu tablo ön-eki şunun gibi kısaltılmış döngüler yazmaya olanak tanır:</p> <p><code class='spip_code' dir='ltr'><BOUCLE1(ARTICLES)....</code></p> <p>halbuki tablonun SQL ismi aslında <code class='spip_code' dir='ltr'>spip_articles</code>'dir.</p> <p>SPIP daha sonra bir kullanıcı ismi ve şifre isteyerek sitenin ilk kullanıcısını oluşturur veya bu işlemi bir LDAP hizmet birimine delege etmeyi önerir. Bu tanımlamadan sonra minimal kurulum prosedürü sona erer ve redaksiyon alanına geçiş sayfası görülür : bu sayfada girilmiş olan kimlik tanımlayıcılar istenir. Bu tanımlayıcılar varsayılan olarak <code class='spip_code' dir='ltr'>config/connect.php</code> ismini alan bir dosyaya kaydedilmiştir.</p> <h3 class="spip"> Kuruluma ek</h3>
<p>Bu ana kadar, SPIP'in aynı hizmet birimindeki veya farklı hizmet birimlerindeki veya farklı makinelerdeki bir çok veritabanını nasıl kullanacağını gördük.</p> <p>Site kurulduğunda,özel alanın üstünden <i>yapılandırma</i> menüsünden <i>site bakımı</i> alt-menüsünü seçin. Bu menü üç sekmeli bir sayfa sunar; sağdakine, ismi <i>başka bir veritabanı tanımlayın</i> olan sekmeye tıklayın. Kurulum formuna benzeyen bir forma ulaşırsınız: bir SQL hizmet birimi tipi belirtmenizi ve internet adresini, bir kullanıcı ismi ve şifresini ister. Bağlantı başarılı olursa SPIP eğer yapabilirse mevcut olanları listeleyerek bir veritabanı ismi ister. Eğer bu veritabanı mevcutsa ek bir bağlantı dosyası oluşturur bu dosya varsayılan olarak <code class='spip_code' dir='ltr'>config</code> dizinindedir ve belirtilen veritabanının ismini taşır.</p> <p>Bu da tamamlandığında SPIP aynı forma geri döner ve mevcut bağlantı dosyalarını listeler yani erişilebilir veritabanlarını görüntüler. SPIP yeniden bir ek veritabanı tanımlamanızı ister : tanımlanabilir veritabanı sayısında herhangi bir sınır yoktur.</p> <p>Bu tanımlamaların yararı bu ek veritabanlarına sayfa düzeni iskeletlerinin notasyonunu uygulayabilmesidir. Eğer ismi <i>B</i><code class='spip_code' dir='ltr'>.php</code> olan ve <i>T</i> isimli bir tabloyu sorgulamaya olanak tanıyan bir bağlantı dosyası varsa o zaman şu iskelet</p> <p><code class='spip_code' dir='ltr'><BOUCLE1(B:T)></BOUCLE1>#TOTAL_BOUCLE<//B1></code></p> <p>bu tablonun satur sayısını verecektir. AYrıca, SPIP SQL hizmet biriminden kendisine bu tabloyu <i>tanımlamasını</i> ister ve alanlarını ve <i>birincil anahtarını</i> öğrenir. Eğer <i>T</i> döngüsü <code class='spip_code' dir='ltr'>id</code> isimli bir birincil anahtar ve <code class='spip_code' dir='ltr'>nom</code> isimli bir alan içeriyorsa o zaman şu iskelet:</p> <p><code class='spip_code' dir='ltr'><BOUCLE1(B:T){id}>#NOM</BOUCLE1></code></p> <p>bağlam tarafından verilen <code class='spip_code' dir='ltr'>id</code>'ye eşit olan <code class='spip_code' dir='ltr'>nom</code> alanını verecektir.</p> <p>Sonuçta, sayfanın URL'sine veritabanının ismini <code class='spip_code' dir='ltr'>connect</code> parametresiyle vererek döngülerinin varsayılan veritabanından farklı bir veritabanı kullanmasını isteyen bir iskelet uygulanabilir. Örneğin <code class='spip_code' dir='ltr'>http://benim_sitem?connect=baska_site</code>
<code class='spip_code' dir='ltr'>monsite</code> sitesinin standart <code class='spip_code' dir='ltr'>sommaire</code> iskeletini <code class='spip_code' dir='ltr'>config/baska_site.php</code> <code class='spip_code' dir='ltr'>benim_sitem</code> kurulum dizinindeki bağlantı dosyasının belirttiği veritabanına uygulayacaktır.</p> <p>Bir döngüde veya <code class='spip_code' dir='ltr'>connect</code> ile parametre olarak kullanıldığında bağlantı dosyasının isminde büyük/küçük harfe dikkat edilmelidir : SPIP küçük/büyük harflerde hiçbir dönüştürme yapmaz (ama bazı dosya sistemleri bunu yapar).</p> <p><i>Uyarı:</i> Ek veritabanlarına erişim özellikle sadece okuma modundadır; özellikle eğer bir veritabanı örneğin bir forumsa (SPIP'le yönetilen veya yönetilmeyen) orijinal sitesi dışından buraya mesaj göndermek olanaksızdır. Bu kısıtlamanın kaldırılması inclenmektedir.</p> <h3 class="spip">Çapraz kurulum</h3>
<p>Burada şunu vurgulamalıyız : yukarıdaki iskelet, <i>B</i><code class='spip_code' dir='ltr'>.php</code> isimli bir bağlantı dosyasının mevcudiyetine bağlıdır.
Önemli olan ana bağlantı dosyası ve ek veritabanlarının bağlantı dosyaları aynı formatta olmasıdır, bu da SPIP'e has bir durumdur : bir başka SPIP sitesinin bağlantı dosyasını direkt olarak tabloları işlemek için kullanabilmektedir. Bunun için, B sitesinin <code class='spip_code' dir='ltr'>connect.php</code> dosyası B<code class='spip_code' dir='ltr'>.php</code> A sitesinin <code class='spip_code' dir='ltr'>config</code> dizinine kopyalamaktır.</p> <p>Daha zekice bir yöntem, aynı kurulumu paylaşan SPIP sitelerinin hepsi için tek bir <code class='spip_code' dir='ltr'>config</code> dizini bulundurmak ve <code class='spip_code' dir='ltr'>connect.php</code> dosyasına A sitesi için A<code class='spip_code' dir='ltr'>.php</code>, B sitesi için B<code class='spip_code' dir='ltr'>.php</code> biçiminde isim vermektir. Böylece SPIP kurulan bir site diğer siteler tarafından bu ortak kurulumu kullanan ek veritabanı olarak tanınacaktır ve bu site de diğer siteleri kendisiyle aynı <code class='spip_code' dir='ltr'>config</code> dizinini kullanan diğer ek veritabanları olarak görecektir. Bu yapıyı optimum kullanabilmek için <code class='spip_code' dir='ltr'>_DIR_CONFIG</code> ve <code class='spip_code' dir='ltr'>_FILE_CONNECT_INS</code> sabitlerini büyük bir özenle tanımlamak gerekir. Aşağıda bu işlevi sunan bir "mutuallisation" örneği bulabilirsiniz.</p> <p>Uzak bir SQL hizmet birimine kurulmuş bir site için bağlantı dosyasını yerel siteye kopyalamak teoride yeterli olabilir. Ama barındırma firmalarının çoğu SQL hizmet birimlerinin kendi yerel ağları dışındaki uzak makineler tarafından sorgulanmasını kabûl etmezler. Burada ayrıca şuna da dikkat etmek gerekir : kurulumda SQL hizmet birimi için verilen isim hizmet birimine bağıl olarak tanımlanmış olan <code class='spip_code' dir='ltr'>localhost</code>'tur ama burada mutlak bir adres verilmelidir. Kısaca, SPIP bu mimarî yapıda çalışabilir ama en azından biraz bilgi sahibi olmaktan mükemmel şekilde müdahale edebilmeye kadar konuyu bilmek kaçınılmazdır.</p> <h3 class="spip"> SPIP'te ek veritabanları </h3>
<p>Bir bağlantı dosyası bir diğer SPIP sitesinin altındaysa (çapraz kurulum ile orijinal dosya veya kopyası olabilir) bu bize sitenin SPIP içerdiğini gösterir (<code class='spip_code' dir='ltr'>spip_connect_version</code> global değişkeni atanmıştır). Bu durumda, ana sitenin iskeletleri özel bir davranış biçimiyle uygulanacaktır:</p> <p>- kısaltılmış isimli döngüler ek veritabanlarında da kısaltılmış olarak yorumlanacaktır; bir başka deyişle, <code class='spip_code' dir='ltr'><BOUCLE1(B:ARTICLES)...</code>
(veya <code class='spip_code' dir='ltr'>connect=B.</code>) içeren bir URL ile <code class='spip_code' dir='ltr'><BOUCLE1(B:ARTICLES)...</code>)
B veritabanında <code class='spip_code' dir='ltr'>spip_articles</code>'e referans verecektir, daha net biçimde söylemek gerekirse <i>prefixe</i><code class='spip_code' dir='ltr'>articles</code> tablosu, bu tabloda <i>prefixe</i> B sitesi tarafından kullanılandır (bu ön-ek bağlantı dosyasında belirtilmiştir);</p> <p>- bir döngünün içinde <code class='spip_code' dir='ltr'>#URL_</code> komutları (bkz <a href='http://www.spip.net/tr_article4115.html' class='spip_in'>Kişiselleştirilmiş URL'ler kullanmak</a>) uzak sitenin değil ana sitenin <code class='spip_code' dir='ltr'>$type_urls</code> kodunu kullanacaktır ve üretilen URL ana siteyi işaret edecektir ama <code class='spip_code' dir='ltr'>connect=</code><i>site_distant</i> URL değişkenini ilave edecektir; bu strateji, ama sitenin iskeletlerini kullanmaya devam ederek uzak sitenin veritabanında gezinmeye olanak tanıyacaktır; bir başka deyişle bu iskelet takımının görüntüsünü test edecek ve kurulumu değiştirmeden veya bir kopyası üzerinde çalışmak yerine <code class='spip_code' dir='ltr'>$type_urls</code>'sini uzak sitede deneyecektir.</p> <p>- <a href='http://www.spip.net/tr_article3268.html' class='spip_in'>SPIP kısayolları için hatırlatma sayfası</a> uzak veritabanının alanlarında görülebilecek #URL komutları da bu şekilde yorumlanabilir: <code class='spip_code' dir='ltr'>[->art3681]</code>
uzak sitenin 3681 no'lu makalesine işaret edecek ama bu işi ana sitenin iskeletleri tarafından sunulan sayfa düzenini sunan bir URL ile gerçekleştirecektir.</p> <p>Bu işletim biçimi sayfa düzeni iskeletleri yazmaya gerek olmadan başka SPIP veritabanlarını sunma olanağı tanımaktadır çünkü veritabanının alan isimleri uzak siteninkilerle aynıdır. Çünkü SPIP altında olmayan bir veritabanı sayfa düzeni iskeletlerine gereksinim duyar ve diğer veritabanının hem tablolarını hem de alanlarını belirtmek zorundadır. Bu ihtiyaca cevap vermek üzere, site yöneticileri özel bir işlemden yararlanır : gezginlerine URL'sini takiben <code class='spip_code' dir='ltr'>?page=table:</code><i>table</i> (<i>table</i> burada veritabanının bir tablosudur) kodunu verdiklerinde SPIP otomatik olarak bu tabloya özel, gayet ergonomik bir içerik incelemesi sunan bir iskelet oluşturacaktır. Üretilen iskelet, sayfanın altındaki <i>squelette</i> bağlantısı aracılığı ile görüntülenebilir. Böylece bu iskeleti fare ile kopyalamak (satırların numaralanmasını sklamak için sütunun sol üstüne tıklayınız) ve uygun bir editör programıyla geliştirmek mümkündür.</p> <p>Bu otomatik üretim ile SPIP'in hiçbir ön iskelet olmadan çalışabileceğine dikkat edin.</p> <h3 class="spip"> Yedekleme ve Birleştirme </h3>
<p>SPIP <strong>site bakımı</strong> alt-menüsü ile en başından itibaren yerel veritabanı için iki yedekleme ve geri alma gerecine erişim sağlamaktadır (bkz <a href='http://www.spip.net/tr_article4116.html' class='spip_in'>Verilerinizi yedeklemek</a>). <a href='http://www.spip.net/tr_article4067.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a>'dan itibaren eski bir siteden gelen bir yedekleme yeni bir sürüme kurulabilir, ancak bu yöntem çok fazla belek alanı ister ve biz daima orijinal siteyi güncellemenizi, sonra yedek almanızı ve sonra yeni siteye okutmanızı öneririz.</p> <p>Diğer yandan, 1.8 sürümüne kadar yedekleme ve geri yükleme tamamını etkilerdi. Kısıtlı yönetici statüsünde yapılan birkaç uygunsuz addedilen denemeden sonra <a href='http://www.spip.net/tr_article4067.html' class='spip_in'><span style='color: #273494;'>SPIP 2.0</span></a> yeni ve daha uyumlu bir kısmî yedekleme ve kaynaştırma ile geri alma işlevlerini sunuyor.</p> <p>Yedekleme formu yedeklemeyi belirli bir bölümle sınırlamayı öneriyor. Üretilen dosya makaleleri, siteleri, kısa haberleri ve alt-bölümleri içerir ve tüm bunların içerdiği anahtar-söcüklerle birlikte anahtar-sözcük gruplarını içerir. Yedeğin ismi varsayılan değer olarak bölümün ismi olacaktır ama değiştirilebilir. Yedek dosyalarının oluşturulması öyle uzun sürebilir ki HTTP hizmet birimi etkin olmadığınız için bağlantınızı kesebilir. Sadece sayfayı tekrar yükleyin : SPIP kaldığı yeri bulu ve işine devam eder. <code class='spip_code' dir='ltr'>tmp</code> dizininin bir alt-dizininde göreceğiniz çok sayıda geçici dosya gayet normaldir çünkü bu bağlantı kesilmelerinden sonra devam edilebilmesi için alınmış bir önlemdir.</p> <p>Geri alma formu şu anda iki işlev sunar. Birincisi io anki veritabanının yedklenmiş olanla değiştirilmesidir. İkincisi yedeği eksik bir veritabanı gibi kabûl edip onu mevcut veritabanının üzerine yüklemektir. Mevcut olanla yedek arasında tablolarının (makale tablosu, kısa haber tablosu vb.) numaralanmasında çakışmalar olabileceği için SPIP yedeğin elemanlarını mevcut olanın son numarasından başlatarak yeniden numaralandırır. İkinci geçişte de yeniden numaralandırdığı elemanları transfer eder. Zaten birinci geçişte elemanları karşılaştırıp tekrarları şu kurallara göre elemiştir:</p> <p>- mevcut veritabanında aynı isimli bir anahtar-sözcük grubu varsa transfer edilecek bu grup göz ardı edilir;</p> <p>- eğer anahtar-sözcük grubu transfer edilmeyen bir anahtar-sözcük bir anahtar-sözcük grubunda orijinal grubu ile aynı ismi taşıyan bir eşanlamlıya sahipse bu anahtar-sözcük göz ardı edilir;</p> <p>- mevcut veritabanında sektörde, transfer edilecek bölümle aynı ismi taşıyan bir bölüm varsa bu bölüm göz ardı edilir;</p> <p>- eğer bir üstteki başlığı transfer edilmemiş bir alt-başlık aynı akrabalığa sahip bir eşanlamlaıya sahipse bu alt-başlık göz ardı edilir; aynı kural makaleler, kısa haberler ve atıfta bulunulan siteler için de geçerlidir;</p> <p>- eğer mevcut veritabanında transfer edilecek bir belge ile aynı isme sahip bir belge varsa ve aynı uzunluktalarsa bu belge göz ardı edilir.</p> <p>Bir başka deyişle, kaynaştırma işlemi iki veritabanının birleştirilmesidir, tekrarlanan elemanlarda mevcut veritabanının içeriği transfer edileninkine göre önceliklidir (örneğin, aynı isimdeki iki bölümde, mevcut veritabanının <i>texte</i> ve <i>descriptif</i> alanları korunacak ve diğerleri göz ardı edilecektir.).</p> <p>Ek belgelere gelince, bunlar uzak belgeler olarak transfer edilecek ve parçalı yedekleme ile /IMG dizininin tekrar sayılması ve kopyalanması gerekmeyecektir. Daha sonra kaynak siteye erişmek için her belgede yerel kopyalama düğmesi kullanılabilecektir. Eğer bu düğme kaybolduysa veya alıcı site tarafında aşılamayan erişim kısıtlamalarına sahipse orijinal IMG/ dizini erişilebilir bir URL'ye kopyalanacak ve transfer formunun son kutucuğuna yazılacaktır.</p> <p><i>Yayınlandı</i> durumunun <i>Önerildi</i> değerine dönüştürülmesine dikkat edin : bu bize çok yoğun bir transfer yapmamıza rağmen her duruma göre değişen bir yayın politikası oluşturma olanağı tanıyacaktır.</p> <h3 class="spip">Tam bir örnek</h3>
<p>Aşağıdaki "mutualisée" SPIP kurulumu tek bir yapılandirma dizini (<code class='spip_code' dir='ltr'>_DIR_CONNECT</code>)
ve tek bir yedekleme dizini (<code class='spip_code' dir='ltr'>_DIR_DUMP</code>) olmasını sağlar.
Böylece her site diğer sitelerdeki veritabanlarının bir görüntüsünü verebilir, onları birleştirebilir, yedeklerini kullanabilir.
Çevrimiçi yardım için de tek bir dizin kullanılmış olur (<code class='spip_code' dir='ltr'>_DIR_AIDE</code>) çünkü SPIP bu dosyaları <a href='http://www.spip.net/' class='spip_out'>spipnet</a> hizmet biriminden transfer eder,
<i>Document Type Definitions</i> için de tek bir dizin kullanılmış olur. <a href='http://www.spip.net/tr_article4117.html' class='spip_in'>Entegre XML onaylayıcı</a> W3C sitesinde veya diğer sitelerde (<code class='spip_code' dir='ltr'>_DIR_XML</code>) arar .</p> <p>Haklar ve jurnal hazırlama işlemleri de sadece iki dizin altında toplanmış olur:
(<code class='spip_code' dir='ltr'>_DIR_CHMOD</code> ve
<code class='spip_code' dir='ltr'>_DIR_LOG</code>).</p> <p>Kök dizinde config/connect, config/chmod, tmp/log, tmp/dump, tmp/xml ve tmp/aide oluşturulacaktır. İlki A veritabanına bağlanmak için A.php dosyasını içerecektir, ikincisi B için B.php vb.</p> <div style='text-align: left;' class='spip_code' dir='ltr'><code>if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {<br /> if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) {<br /> $cookie_prefix = $table_prefix = $r[1];<br /> <br /> define('_SPIP_PATH', <br /> _DIR_RACINE. 'Ajouts/' . $table_prefix . '/dist/:' .<br /> _DIR_RACINE .'Ajouts/' . $table_prefix . '/:' .<br /> _DIR_RACINE .'dist/:' .<br /> _DIR_RACINE .'dist/javascript/:' .<br /> _DIR_RESTREINT);<br /> <br /> $pi = $e . _NOM_PERMANENTS_INACCESSIBLES;<br /> $pa = $e . _NOM_PERMANENTS_ACCESSIBLES;<br /> $ti = $e . _NOM_TEMPORAIRES_INACCESSIBLES;<br /> $ta = $e . _NOM_TEMPORAIRES_ACCESSIBLES;<br /> <br /> $pig = _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES;<br /> $tig = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES;<br /> <br /> define('_DIR_DUMP', $tig . 'dump/');<br /> define('_DIR_AIDE', $tig . 'aide/');<br /> define('_DIR_CACHE_XML', $tig . "xml/");<br /> define('_DIR_LOG', $tig . 'log/');<br /> define('_DIR_CONNECT', $pig . 'connect/');<br /> define('_DIR_CHMOD', $pig . 'chmod/');<br /> define('_FILE_CONNECT_INS', $table_prefix);<br /> define('_FILE_CHMOD_INS', $table_prefix);<br /> define('_FILE_LOG_SUFFIX',<br /> '_' . $table_prefix . '.log');<br /> <br /> $GLOBALS['test_dirs'] =<br /> array($pa, $ta, $ti, $pig, $tig,<br /> _DIR_DUMP, _DIR_LOG, _DIR_CONNECT, _DIR_CHMOD);<br /> <br /> spip_initialisation($pi, $pa, $ti, $ta);<br /> }<br /> )</code></div></div>
		<div class='rss_ps'><p><i>Tarihçe</i>. SPIP ilk sürümlerinde sadece bir veritabanının bazı alanlarına erişim izni veriyordu, Sadece tek bir veritabanında bir tablonun önüne ekler getirerek her bir veritabanını simüle ediyordu.</p> <p><a href='http://www.spip.net/tr_article3264.html' class='spip_in'>SPIP 1.8, 1.8.1</a> ve yeni iskelet derleyici HTTP hizmet birimiyle her veritabanının her alanına erişime iznin yolunu açtılar. Ama bu seçenek standart dosyaları taklit ederek PHP dosyalar yazmayı gerektiriyordu. Ayrıca SPIP <i>hizmet birimi tipleri</i> ve <i>veritabanları</i> arasındaki incelikleri fark edemiyordu: aynı hizmet biriminin veritabanlarını adreslemek için bu dosyaları kopyalamak gerekiyordu. Bu çok yetersiz yapı, birçok eklentinin kullanmış olmasına rağmen bu fonksiyonların niçin hiç belgelenmediğini de açıklıyor.</p></div>
		<img src="http://feeds.feedburner.com/~r/Spip/~4/ZIPd-edWtak" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/tr_article4106.html</feedburner:origLink></item>
<item xml:lang="tr">
		<title>{titre_mot}, {type_mot}</title>
		<link>http://feedproxy.google.com/~r/Spip/~3/IpPkzBmDwSk/tr_article4113.html</link>
		<guid isPermaLink="false">http://www.spip.net/tr_article4113.html</guid>
		<dc:date>2009-05-20T22:33:46Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>tr</dc:language>
		<dc:creator>mega</dc:creator>



		<description>titre_mot=xxxx veya type_mot=yyyy (SPIP 1.3'ten itibaren) sırasıyla anahtar-sözcüğe bağlı ismi «xxxx» olan veya «yyyy» anahtar-sözcük grubuna bağlı makaleleri seçer. Eğer bir çok kriter verilirse titre_mot=xxxx (veya bir çok type_mot=yyyy verilirse) bu sözcüklerin hepsini birden içerenler seçilecektir (Yeni özellik SPIP 1.9).

-
&lt;a href="http://www.spip.net/rubrique583.html" rel="directory"&gt;Kriterler&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p>- <a name="titre_mot"></a><strong><code class='spip_code' dir='ltr'>{titre_mot=xxxx}</code></strong> veya <strong><code class='spip_code' dir='ltr'>{type_mot=yyyy}</code></strong> (<a href='http://www.spip.net/fr_article1253.html' class='spip_in' hreflang='fr'><span style='color: red;'>SPIP 1.3</span></a>'ten itibaren) sırasıyla anahtar-sözcüğe bağlı ismi «xxxx» olan veya «yyyy» anahtar-sözcük grubuna bağlı makaleleri seçer. Eğer bir çok kriter verilirse <code class='spip_code' dir='ltr'>{titre_mot=xxxx}</code> (veya bir çok <code class='spip_code' dir='ltr'>{type_mot=yyyy}</code> verilirse) bu sözcüklerin hepsini birden içerenler seçilecektir (Yeni özellik <a href='http://www.spip.net/tr_article3413.html' class='spip_in'><span style='color: darkviolet;'>S</span><span style='color: blue;'>P</span><span style='color: green;'>I</span><span style='color: salmon;'>P</span> <span style='color: green;'>1</span><span style='color: blue;'>.</span><span style='color: darkviolet;'>9</span></a>).</p></div>
		
		<img src="http://feeds.feedburner.com/~r/Spip/~4/IpPkzBmDwSk" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.spip.net/tr_article4113.html</feedburner:origLink></item>



<media:rating>adult</media:rating></channel>

</rss>
