<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TYPO3Facile</title>
	<atom:link href="http://www.typo3facile.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.typo3facile.fr</link>
	<description>- aide et astuces pour le CMS TYPO3</description>
	<lastBuildDate>Fri, 03 Feb 2012 11:27:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Optimisation dans Typo3 : déclarer son JavaScript en bas de page</title>
		<link>http://www.typo3facile.fr/2012/02/optimisation-dans-typo3-declarer-son-javascript-en-bas-de-page/</link>
		<comments>http://www.typo3facile.fr/2012/02/optimisation-dans-typo3-declarer-son-javascript-en-bas-de-page/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 11:26:00 +0000</pubDate>
		<dc:creator>Aurélie G.</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[TYPO3]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=793</guid>
		<description><![CDATA[L&#8217;un des 13 points analysés par YSlow pour l&#8217;optimisation d&#8217;un site est de placer tous les scripts et appels de fichiers JS en bas de page avant la fermeture de la balise &#60;body&#62;. Pour l&#8217;appliquer dans un Typo3, il suffit tout simplement d&#8217;utiliser les fonctions includeJSFooter pour l&#8217;appel des fichiers et footerData pour ajouter n&#8217;importe [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;un des 13 points analysés par <a title="Analyser votre site avec YSlow" href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a> pour l&#8217;optimisation d&#8217;un site est de placer tous les scripts et appels de fichiers JS en bas de page avant la fermeture de la balise &lt;body&gt;.</p>
<p>Pour l&#8217;appliquer dans un Typo3, il suffit tout simplement d&#8217;utiliser les fonctions includeJSFooter pour l&#8217;appel des fichiers et footerData pour ajouter n&#8217;importe quel script.</p>
<p>Exemple :</p>
<p><code>page.includeJSFooter {<br />
file1 = fileadmin/template/js/monfichier.js<br />
}</code></p>
<p>page.footerData {<br />
10 = HTML<br />
10.value (<br />
Mon script<br />
)<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2012/02/optimisation-dans-typo3-declarer-son-javascript-en-bas-de-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>indexer le contenu d&#8217;un typo3 automatiquement</title>
		<link>http://www.typo3facile.fr/2011/11/indexer-le-contenu-dun-typo3-automatiquement/</link>
		<comments>http://www.typo3facile.fr/2011/11/indexer-le-contenu-dun-typo3-automatiquement/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 10:25:13 +0000</pubDate>
		<dc:creator>Sébastien</dc:creator>
				<category><![CDATA[TYPO3]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=776</guid>
		<description><![CDATA[Il faut l&#8217;extension ici : http://typo3.org/extensions/repository/view/crawler/current/ Ensuite, dans les paramétrages du plugin, il faut lui donner le chemin d&#8217;accès du frontend : Frontend website base path [frontendBasePath] Base path of the website frontend (e.g. if you call http://mydomain.com/cms/index.php in the browser the base path is &#171;&#160;/cms/&#160;&#187;) Par défaut, ce plugin ne traite que 100 urls [...]]]></description>
			<content:encoded><![CDATA[<p>Il faut l&#8217;extension ici : <a href="http://typo3.org/extensions/repository/view/crawler/current/">http://typo3.org/extensions/repository/view/crawler/current/</a></p>
<p>Ensuite, dans les paramétrages du plugin, il faut lui donner le chemin d&#8217;accès du frontend :</p>
<dl>
<dt><span style="color: #808080;">Frontend website base path [frontendBasePath]</span></dt>
<dt><span style="color: #808080;">Base path of the website frontend (e.g. if you call http://mydomain.com/cms/index.php in the browser the base path is &laquo;&nbsp;/cms/&nbsp;&raquo;)</span></dt>
<dt></dt>
<dt>Par défaut, ce plugin ne traite que 100 urls à chaque fois qu&#8217;il est lancé. Vous pouvez modifier ceci dans les paramétrages du plugin : il faut modifier la valeur du champs &laquo;&nbsp;Maximal number of URLs, which can be added to the queue at one time&nbsp;&raquo;</dt>
</dl>
<p>ensuite, il faut activer l&#8217;indexation dans le typoscript du gabarit principal :</p>
<p><span style="color: #808080;">config.index_enable = 1</span></p>
<p><span style="color: #808080;">config.index_externals = 1</span></p>
<p>Dans les paramétrage du plugin indexed_search engine, il faut désactiver l&#8217;indexation à la volée :</p>
<p><img class="alignnone size-full wp-image-777" title="2009-04-20_131623" src="http://www.typo3facile.fr/wp-content/uploads/2011/11/2009-04-20_131623.png" alt="2009-04-20_131623" width="599" height="87" /></p>
<p>Ensuite, il faut créer un utilisateur qui à pour identifiant et mot de passe : _cli_crawler. Il n&#8217;y à pas besoin de lui donner les droits administrateur ou de le mettre dans un groupe BE.</p>
<p>Puis, dans le TSconfig de la page racine du site, il faut  mettre :</p>
<p><span style="color: #888888;"><code>#set up a crawl for users that arent logged in</code></span></p>
<div><span style="color: #888888;"><code>tx_crawler.crawlerCfg.paramSets.contenusite =</code></span></div>
<div><span style="color: #888888;"><code>tx_crawler.crawlerCfg.paramSets.contenusite {</code></span></div>
<div><span style="color: #888888;"><code> </code><code>cHash = 1</code></span></div>
<div><span style="color: #888888;"><code> </code><code>procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler</code></span></div>
<div><span style="color: #888888;"><code> </code><code>baseUrl = http:</code><code>//www.toto.fr/</code></span></div>
<div><span style="color: #888888;"><code>}</code></span></div>
<div><span style="color: #888888;"><code># for tt_news</code></span></div>
<div><span style="color: #888888;"><code># _PID:56 is the sysfolder with the news records</code></span></div>
<div><span style="color: #888888;"><code># pidsOnly = 80 is the page with the news singeview.</code></span></div>
<div><span style="color: #888888;"><code>tx_crawler.crawlerCfg.paramSets {</code></span></div>
<div><span style="color: #888888;"><code> </code><code>tt_news = &amp;tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:56]</code></span></div>
<div><span style="color: #888888;"><code> </code><code>tt_news.procInstrFilter = tx_indexedsearch_reindex</code></span></div>
<div><span style="color: #888888;"><code> </code><code>tt_news.cHash = 1</code></span></div>
<div><span style="color: #888888;"><code> </code><code>tt_news.pidsOnly = 85</code></span></div>
<div><span style="color: #888888;"><code> </code><code>tt_news.baseUrl = </code><code><code>http:</code><code>//www.toto.fr/</code></code></span></div>
<div><span style="color: #888888;"><code>}</code></span></div>
<div>Et sur le serveur, il faut mettre un script SH qui lance l&#8217;indexation automatique en 2 temps : mise dans la file d&#8217;attente puis crawl le site :</div>
<div>
<p><span style="color: #888888;"><code>typo3/cli_dispatch.phpsh crawler_im 1 -d 99 -proc tx_indexedsearch_reindex -n 200 -o queue </code></span></p>
<div><span style="color: #888888;"><code>typo3/cli_dispatch.phpsh crawler</code></span></div>
</div>
<div>Le chiffre 1 est l&#8217;id de la page racine du site.</div>
<div>le chiffre 99 est la profondeur de récursivité</div>
<div>le chiffre 200 est le nombre d&#8217;url traitée à la minute</div>
<div><code>-proc tx_indexedsearch_reindex force l'indexation</code></div>
<div>Un grand merci à <strong>Yohann CERDAN</strong> pour son blog et ses astuces sous typo3 : <a href="http://www.ycerdan.fr/">http://www.ycerdan.fr/</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/11/indexer-le-contenu-dun-typo3-automatiquement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuration typoscript du plugin apache solr</title>
		<link>http://www.typo3facile.fr/2011/11/configuration-typoscript-du-plugin-apache-solr/</link>
		<comments>http://www.typo3facile.fr/2011/11/configuration-typoscript-du-plugin-apache-solr/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 09:23:08 +0000</pubDate>
		<dc:creator>Sébastien</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=771</guid>
		<description><![CDATA[Après avoir installé le plugin &#171;&#160;Apache solr for Typo3&#8243;, il faut mettre quelques lignes de TS pour le configurer : Voici une configuration  à mettre dans un gabarit (appelé &#171;&#160;solr&#160;&#187; par exemple ^^): dans les constantes : plugin.tx_solr.solr.host = www.toto.fr =&#62; faire des conditions si il y a plusieurs serveurs (dev / val /prod par [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir installé le plugin &laquo;&nbsp;Apache solr for Typo3&#8243;, il faut mettre quelques lignes de TS pour le configurer :</p>
<p>Voici une configuration  à mettre dans un gabarit (appelé &laquo;&nbsp;solr&nbsp;&raquo; par exemple ^^):</p>
<p><strong>dans les constantes :</strong></p>
<p>plugin.tx_solr.solr.host = www.toto.fr =&gt; faire des conditions si il y a plusieurs serveurs (dev / val /prod par exemple)</p>
<p>plugin.tx_solr.solr.port = 8080<br />
plugin.tx_solr.solr.scheme = http<br />
plugin.tx_solr.solr.path = /solr/nomdurepertoiresurleserveur/</p>
<p><strong>dans le setup : (certaines lignes sont commentées, à dé-commenter si besoin)</strong></p>
<p>plugin.tx_solr {</p>
<p>addDefaultCss = 1<br />
addDefaultJs = 1</p>
<p>general {<br />
dateFormat.date = d/m/Y<br />
}</p>
<p>index {<br />
enablePageIndexing = 1<br />
enableIndexingWhileBeUserLoggedIn = 1<br />
enableFileIndexingExtractingQuery = 1</p>
<p>additionalFields {<br />
#mytype_sm = TEXT<br />
#mytype_sm.value = {leveltitle:2}<br />
#mytype_sm.insertData= 1<br />
}</p>
<p>// assigns processing instructions to Solr fields during indexing, Solr field = processing instruction<br />
fieldProcessingInstructions {<br />
changed = timestampToIsoDate<br />
created = timestampToIsoDate<br />
endtime = timestampToIsoDate<br />
mytype_sm = pathToHierarchy<br />
}<br />
}</p>
<p>#search {<br />
# TODO: move filter into query{}<br />
#  filter =</p>
<p>#targetPage = 0</p>
<p>#  allowEmptyQuery = 1</p>
<p>#  query {<br />
#   fields = content^40.0, title^5.0, keywords^2.0, tagsH1^5.0, tagsH2H3^3.0, tagsH4H5H6^2.0, tagsInline^1.0</p>
<p># see http://wiki.apache.org/solr/DisMaxRequestHandler#mm_.28Minimum_.27Should.27_Match.29<br />
#   minimumMatch =</p>
<p># see http://wiki.apache.org/solr/DisMaxRequestHandler#bf_.28Boost_Functions.29<br />
#  boostFunction =</p>
<p>// TODO implement multiple filters<br />
#      filter {<br />
#        10 = x:y<br />
#        20 = a:b<br />
#      }<br />
# }</p>
<p>form = simple</p>
<p># TODO make it a top level configuration section<br />
results {<br />
resultsPerPage = 20<br />
resultsPerPageSwitchOptions = 20, 50, 100</p>
<p>#  fieldname =&gt; processing instruction, available instructions:  timestamp, utf8Decode, skip (removes the field from the result)<br />
fieldProcessingInstructions {<br />
title = utf8Decode<br />
content = utf8Decode<br />
changed = dateFrench<br />
created = timestamp<br />
indexed = timestamp<br />
# TODO rename the skip instruction to remove?!<br />
spell = skip<br />
}</p>
<p>fieldRenderingInstructions {</p>
<p># additional example rendering for the title field<br />
title2 = TEXT<br />
title2 {<br />
field = title<br />
case = upper<br />
wrap = &lt;span class=&nbsp;&raquo;title&nbsp;&raquo;&gt;|&lt;/span&gt;<br />
}</p>
<p>url = TEXT<br />
url {<br />
field = url<br />
htmlSpecialChars = 1<br />
htmlSpecialChars.preserveEntities = 1<br />
}</p>
<p>}</p>
<p>pagebrowser {<br />
# TODO move to top level templateFile options<br />
#templateFile = fileadmin/templates/extensions/pagebrowse/template.html<br />
}</p>
<p>ignorePageBrowser = 0<br />
}</p>
<p>highlighting = 1<br />
highlighting {<br />
# title and content are set as default in solrconfig.xml already<br />
#      highlightFields = title,content<br />
fragmentSize = 500</p>
<p>wrap = &lt;span class=&nbsp;&raquo;results-highlight&nbsp;&raquo;&gt;|&lt;/span&gt;<br />
}</p>
<p>spellchecking = 1<br />
spellchecking {<br />
wrap = |&lt;div class=&nbsp;&raquo;spelling-suggestions&nbsp;&raquo;&gt;###LLL:didYouMean### |&lt;/div&gt;|<br />
}</p>
<p>sorting = 1<br />
sorting {<br />
defaultOrder = asc</p>
<p>fields {<br />
relevancy = 1<br />
relevancy {<br />
label = sorting_relevancy<br />
}</p>
<p>sortTitle = 1<br />
sortTitle {<br />
label = sorting_title<br />
}</p>
<p>type = 1<br />
type {<br />
label = sorting_type<br />
}</p>
<p>sortAuthor = 0<br />
sortAuthor {<br />
label = sorting_author<br />
}</p>
<p>created = 1<br />
created {<br />
label = sorting_created<br />
}<br />
}<br />
}</p>
<p>faceting = 1<br />
faceting {<br />
minimumCount = 1<br />
sortBy = count<br />
limit = 10<br />
singleFacetMode = 1</p>
<p>facetOrder = type, author, myType<br />
facets {<br />
type {<br />
label = Type de document<br />
field = type<br />
missing = 0<br />
}</p>
<p>author {<br />
label = Auteur<br />
field = sortAuthor<br />
}<br />
myType {<br />
label = Rubrique<br />
field = mytype_sm<br />
}</p>
<p>/* Not implemented yet<br />
lastChanged {<br />
label = Last Changed<br />
date =<br />
}</p>
<p>feuser {<br />
label = Created by FE User<br />
query =</p>
<p>TODO<br />
renderingInstruction = TEXT<br />
renderingInstruction {<br />
wrap = &lt;span&gt;|&lt;/span&gt;<br />
insertData = 1<br />
}</p>
<p>}<br />
*/<br />
}</p>
<p>// available place holders: @facetValue, @facetName, @facetText<br />
removeFacetLinkText = @facetText (Supprimer)</p>
<p>showAllLink.wrap = &lt;li&gt;|&lt;/li&gt;<br />
}<br />
}</p>
<p>suggest = 1<br />
suggest {<br />
loadJQuery = 1</p>
<p>numberOfSuggestions = 10<br />
suggestField = spell<br />
forceHttps = 0</p>
<p>stylesheet = EXT:solr/resources/css/jquery-ui/jquery-ui-1.8.2.custom.css</p>
<p>javaScriptFiles {<br />
library  = EXT:solr/resources/javascript/jquery-1.4.2.min.js<br />
ui    = EXT:solr/resources/javascript/jquery-ui-1.8.2.custom.min.js<br />
suggest  = EXT:solr/resources/javascript/eid_suggest/suggest.js<br />
}<br />
}</p>
<p>// TODO move to search.results<br />
searchResultsViewComponents {<br />
faceting = 1<br />
sorting = 1<br />
}</p>
<p>viewhelpers {<br />
crop {<br />
maxLength = 30<br />
cropIndicator = &#8230;<br />
}<br />
}</p>
<p>logging {<br />
exceptions = 1</p>
<p>// TODO change &laquo;&nbsp;indexing&nbsp;&raquo; to enable all indexing logging, split up into several options<br />
indexing = 1<br />
indexing{<br />
indexQueuePageIndexerGetData = 1<br />
}</p>
<p>query {<br />
filters = 1<br />
searchWords = 1<br />
queryString = 1<br />
rawPost = 1<br />
rawGet = 1<br />
}</p>
<p>}</p>
<p><strong>Ensuite :</strong></p>
<p>ne pas oublier d&#8217;appeler ce TS dans le gabarit principal de votre typo3 puis d&#8217;inclure les gabarits statiques de l&#8217;extension :</p>
<p>apache solr et pagebrowse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/11/configuration-typoscript-du-plugin-apache-solr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TT_News] Créer un flux RSS par catégorie de news</title>
		<link>http://www.typo3facile.fr/2011/09/tt_news-creer-un-flux-rss-par-categorie-de-news/</link>
		<comments>http://www.typo3facile.fr/2011/09/tt_news-creer-un-flux-rss-par-categorie-de-news/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 10:21:50 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[TT_NEWS]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[flux rss par catégorie tt_news]]></category>
		<category><![CDATA[tt_news fils rss]]></category>
		<category><![CDATA[tt_news flux rss multiples]]></category>
		<category><![CDATA[typo3 plusieurs fils rss]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=763</guid>
		<description><![CDATA[Au sein d&#8217;un même site, vous pouvez avoir besoin de créer plusieurs fils RSS à partir de vos news TT_NEWS. Par exemple, il peut être logique de vouloir créer un flux RSS pour chacune des catégories de vos news. Tout est (très bien) expliqué sur le blog de Thomas Leroy (intégrateur certifié TYPO3) : http://www.tleroy.fr/creer-plusieurs-flux-rss-tt_news/  [...]]]></description>
			<content:encoded><![CDATA[<p>Au sein d&#8217;un même site, vous pouvez avoir besoin de créer plusieurs fils RSS à partir de vos news TT_NEWS.<br />
Par exemple, il peut être logique de vouloir créer <strong>un flux RSS pour chacune des catégories de vos news</strong>.</p>
<p>Tout est (très bien) expliqué sur le blog de Thomas Leroy (intégrateur certifié TYPO3) :<br />
<a title="Créer un flux RSS pour chacune de vos catégories de news - Blog de Thomas Leroy - Nouvelle fenêtre" href="http://www.tleroy.fr/creer-plusieurs-flux-rss-tt_news/" target="_blank">http://www.tleroy.fr/creer-plusieurs-flux-rss-tt_news/ </a></p>
<p>A vous de jouer !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/09/tt_news-creer-un-flux-rss-par-categorie-de-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TypoScript] Ajouter automatiquement un sommaire ancré en haut de page</title>
		<link>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-sommaire-ancre-en-haut-de-page/</link>
		<comments>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-sommaire-ancre-en-haut-de-page/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 08:28:26 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[sommaire ancré]]></category>
		<category><![CDATA[sommaire automatique typo3]]></category>
		<category><![CDATA[titres de contenus typo3]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=750</guid>
		<description><![CDATA[Lorsqu&#8217;une page TYPO3 contient énormément de contenus, il peut être utile de générer automatiquement un sommaire ancré en haut de page. Le code TypoScript ci-dessous présume que vous avez fait une configuration de base pour que typo3 aille chercher votre template, dans lequel vous avez placé un marqueur ###monsommaire### et que le champ &#171;&#160;Titre&#160;&#187; de chacun des contenus de [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsqu&#8217;une page TYPO3 contient énormément de contenus, il peut être utile de générer automatiquement un sommaire ancré en haut de page.</p>
<p>Le code TypoScript ci-dessous présume que vous avez fait une configuration de base pour que typo3 aille chercher votre template, dans lequel vous avez placé un marqueur <em>###monsommaire###</em> et que le champ &laquo;&nbsp;Titre&nbsp;&raquo; de chacun des contenus de votre page TYPO3 est rempli</p>
<p>La particularité de ce code est qu&#8217;il va <strong>tester le nombre de contenus dans la page</strong>.</p>
<ul>
<li>Si il n&#8217;y aucun contenu ou un seul contenu, le sommaire ne s&#8217;affichera pas (car pas vraiment utile et pas très esthétique dans ce cas).</li>
<li>Si il y a deux contenus ou plus, le sommaire sera affiché à l&#8217;endroit où vous avez placé votre marqueur dans votre template.</li>
</ul>
<h2>Code TypoScript</h2>
<pre class="brush: php; title: ; notranslate">
marks.monsommaire = CONTENT
marks.monsommaire {
   //je récupère le titre et l'id de chacun des contenus de la colonne &quot;normal&quot; de ma page TYPO3
   table = tt_content
   select {
      pidInList = this
      orderBy = sorting
      selectFields = header,uid
      where = colPos = 0
      languageField=sys_language_uid
   }

   //je teste le nombre de contenus de ma colonne normal
   stdWrap.if.value = 1
   stdWrap.if.isGreaterThan.numRows.table = tt_content
   stdWrap.if.isGreaterThan.numRows.select {
      pidInList = this
      where = colPos = 0
      languageField=sys_language_uid
   }
   //si le nombre de contenus de ma page est supérieur à 1, j'affiche le sommaire ancré sous forme de listes à puces
   stdWrap.wrap = &lt;ul class=&quot;ss_menu_page&quot;&gt;&lt;a name=&quot;sommaire_page&quot;&gt;&lt;/a&gt;|&lt;/ul&gt;
   stdWrap.required = 1
   renderObj = TEXT
   renderObj {
      field = header
      required = 1
      dataWrap= &lt;li&gt;&lt;a href=&quot;#c{field:uid}&quot; title=&quot;#c{field:uid}&quot; target=&quot;_self&quot;&gt;|&lt;/a&gt;&lt;/li&gt;
   }
}
</pre>
<h2>Exemple</h2>
<p><a title="Ajouter un sommaire ancré en haut d'une page TYPO3 - Nouvelle fenêtre" href="http://eduscol.education.fr/histoire-geographie/enseigner/ressources-par-niveau-et-programmes/college/sixieme/histoire.html" target="_blank">http://eduscol.education.fr/histoire-geographie/enseigner/ressources-par-niveau-et-programmes/college/sixieme/histoire.html</a></p>
<h2>Et aussi&#8230;</h2>
<p>Toujours dans le cas d&#8217;une page longue, il peut être utile de rajouter un lien ancré &laquo;&nbsp;Retour en haut de page&nbsp;&raquo; sous chacun des contenus typo3 de la page.<br />
Pour ce faire, voir l&#8217;article <a title="Ajouter un lien ancré &quot;Remonter en haut de page&quot; sous chaque contenu d'une page TYPO3" href="http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-lien-ancre-top-sous-chaque-contenu-dune-page-typo3/">[TypoScript] Ajouter automatiquement un lien ancre #top sous chaque contenu d’une page TYPO3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-sommaire-ancre-en-haut-de-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TypoScript] Ajouter automatiquement un lien ancre #top sous chaque contenu d&#8217;une page TYPO3</title>
		<link>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-lien-ancre-top-sous-chaque-contenu-dune-page-typo3/</link>
		<comments>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-lien-ancre-top-sous-chaque-contenu-dune-page-typo3/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 08:02:31 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[ajout lien sous contenu]]></category>
		<category><![CDATA[isGreaterThan]]></category>
		<category><![CDATA[lien ancre sous chaque contenu typo3]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=740</guid>
		<description><![CDATA[Pour améliorer la navigation à l&#8217;intérieur d&#8217;une page contenant des contenus en grand nombre (et donc une page assez longue), vous pouvez avoir besoin d&#8217;ajouter automatiquement un lien &#171;&#160;Remonter en haut de page&#160;&#187; (ou un autre type de contenu) sous chacun des contenus de la page. Le code TypoScript ci-dessous présume que vous avez fait une [...]]]></description>
			<content:encoded><![CDATA[<p>Pour améliorer la navigation à l&#8217;intérieur d&#8217;une page contenant des contenus en grand nombre (et donc une page assez longue), vous pouvez avoir besoin d&#8217;<strong>ajouter automatiquement un lien &laquo;&nbsp;Remonter en haut de page&nbsp;&raquo;</strong> <strong>(ou un autre type de contenu) sous <span style="text-decoration: underline;">chacun des contenus</span> de la page</strong>.</p>
<p>Le code TypoScript ci-dessous présume que vous avez fait une configuration de base pour que typo3 aille chercher votre template, dans lequel vous avez placé un marqueur <em>###monmarqueur###</em> et un <em>&lt;a name=&nbsp;&raquo;#top&nbsp;&raquo;&gt;&lt;/a&gt;</em> à ce qui correspond à votre haut de page (ou haut de contenu).</p>
<p>La particularité de ce code est qu&#8217;il va <strong><span style="text-decoration: underline;">tester le nombre de contenus</span> dans la page</strong>.</p>
<ul>
<li>Si il n&#8217;y aucun contenu ou un seul contenu, le lien &laquo;&nbsp;Remonter en haut de page&nbsp;&raquo; ne s&#8217;affichera pas (car pas vraiment utile et pas très esthétique dans ce cas).</li>
<li>Si il y a deux contenus ou plus, le lien &laquo;&nbsp;Remonter en haut de page&nbsp;&raquo; sera affiché sous chacun des contenus de la page.</li>
</ul>
<h2>Code TypoScript</h2>
<pre class="brush: php; title: ; notranslate">
//le marqueur &amp;quot;monmarqueur&amp;quot; va aller chercher le contenu de la colonne de contenu &amp;quot;normal&amp;quot;
marks.monmarqueur = CONTENT
marks.monmarqueur &lt; styles.content.get
marks.monmarqueur{
   stdWrap.required = 1

   //on prepare un tableau d objet (au cas ou ca n est pas deja cree ailleurs)
   renderObj.stdWrap.append=COA

   //on cree un objet qui sera ajoute apres le contenu normal
   renderObj.stdWrap.append.30=TEXT

   //on y met le code HTML qui sera utilise
   renderObj.stdWrap.append.30.value= &lt;a href=&quot;#top&quot; title=&quot;Revenir en haut de page&quot;&gt;Revenir en haut de page&lt;/a&gt;

   //on parametre le .stdWrap.if qui va du coup agir uniquement sur l objet .append.30
   //on met en place la valeur maximal pour le if
   renderObj.stdWrap.append.30.stdWrap.if.value = 1

   //on met en place le isGreaterThan qui teste si il y a + d'un contenu dans la page
   renderObj.stdWrap.append.30.stdWrap.if{
      isGreaterThan.numRows.table = tt_content
      isGreaterThan.numRows.select.pidInList = this
      isGreaterThan.numRows.select.where = colPos = 0
   }
}
</pre>
<h2>Exemple</h2>
<p><a title="Exemple d'ajout de lien ancré sous contenus Typo3 - Nouvelle fenêtre" href="http://eduscol.education.fr/histoire-geographie/enseigner/ressources-par-niveau-et-programmes/college/sixieme/histoire.html" target="_blank">http://eduscol.education.fr/histoire-geographie/enseigner/ressources-par-niveau-et-programmes/college/sixieme/histoire.html</a></p>
<h2>Remerciements</h2>
<p>Tout le mérite de ce script TS revient à &laquo;&nbsp;<a title="Site web d'Olivier Saint Clair - Nouvelle fenêtre" href="http://www.mes-realisations.fr/" target="_blank">OlivierSC</a> &nbsp;&raquo;, développeur/intégrateur TYPO3 certifié, et membre fidèle du <a title="Forum FR TYPO3 - Nouvelle fenêtre" href="http://forum.typo3-fr.org/" target="_blank">Forum FR Typo3</a>.</p>
<p><a title="Nouvelle fenêtre" href="http://forum.typo3-fr.org/topic/17798-condition-renderobj/" target="_blank">Relire la discussion à l&#8217;origine de cet article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/09/typoscript-ajouter-automatiquement-un-lien-ancre-top-sous-chaque-contenu-dune-page-typo3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[TT_NEWS] Tronquer le résumé d&#8217;une news sans couper une balise HTML (pas de balise fermante)</title>
		<link>http://www.typo3facile.fr/2011/09/tt_news-tronquer-le-resume-dune-news-sans-couper-une-balise-html/</link>
		<comments>http://www.typo3facile.fr/2011/09/tt_news-tronquer-le-resume-dune-news-sans-couper-une-balise-html/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 15:58:23 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[TT_NEWS]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[couper balise html tt_news]]></category>
		<category><![CDATA[crop]]></category>
		<category><![CDATA[htmlCrop]]></category>
		<category><![CDATA[pmk html crop]]></category>
		<category><![CDATA[tag html]]></category>
		<category><![CDATA[troncature]]></category>
		<category><![CDATA[tt_news troncature html]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=725</guid>
		<description><![CDATA[Lorsque vous rédigez une news TT_NEWS , si vous mettez le texte en forme (ex : italique, gras, souligné), et que vous la faites remonter sous forme de résumé (LIST, LATEST), sur une page quelconque de votre site, il peut arriver que la troncature se fasse entre deux balises HTML (ex : balise &#60;em&#62;Ceci est mon [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque vous rédigez une news TT_NEWS , si vous mettez le texte en forme (ex : italique, gras, souligné), et que vous la faites remonter sous forme de résumé (LIST, LATEST), sur une page quelconque de votre site, il peut arriver que <strong>la troncature se fasse entre deux balises HTML</strong> (ex : balise &lt;em&gt;Ceci est mon texte. [troncature] Ceci est la suite de mon texte.&lt;/em&gt;)</p>
<p>Dans ce cas, les balises HTML restent non fermées et s&#8217;appliquent donc à tout le contenu qui se trouver après votre actualité dans votre page, ce qui peut s&#8217;avérer un peu gênant.</p>
<p>Pour y remédier, deux petites choses à faire :</p>
<ol>
<li><strong>Installer l&#8217;extension <a title="Extension PMK HTML Crop - Typo3.org -  Nouvelle fenêtre" href="http://typo3.org/extensions/repository/view/pmkhtmlcrop/0.0.1/" target="_blank">PMK HTML Crop</a></strong>, qui va vous permettre d&#8217;utiliser une nouvelle fonction &laquo;&nbsp;htmlCrop&nbsp;&raquo; dont les propriétés sont les mêmes que celle de la fonction &laquo;&nbsp;crop&nbsp;&raquo;, en prenant toutefois en compte les tags HTML de votre contenu.</li>
<li><strong>Placer ces deux lignes de code TS dans votre template principal</strong></li>
</ol>
<pre class="brush: php; title: ; notranslate">
plugin.tt_news.general_stdWrap.postUserFunc = tx_pmkhtmlcrop-&gt;htmlCrop
plugin.tt_news.displayLatest.content_stdWrap.htmlCrop = 100|...|1
</pre>
<p>Bien évidemment, tronquer au nombre de caractères que vous le souhaitez (ici 100) et remplacer <em>displayLatest</em> par <em>displayList </em>en fonction de vos besoins.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/09/tt_news-tronquer-le-resume-dune-news-sans-couper-une-balise-html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[TT_NEWS] Permettre à un groupe d&#8217;utilisateur de voir toutes les catégories de news</title>
		<link>http://www.typo3facile.fr/2011/09/tt_news-permettre-a-un-groupe-dutilisateur-de-voir-toutes-les-categories-de-news/</link>
		<comments>http://www.typo3facile.fr/2011/09/tt_news-permettre-a-un-groupe-dutilisateur-de-voir-toutes-les-categories-de-news/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 09:48:25 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[TT_NEWS]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[autoriser choix catégorie]]></category>
		<category><![CDATA[catégories non visibles]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=720</guid>
		<description><![CDATA[Par défaut, TT_NEWS n&#8217;autorise pas un groupe d&#8217;utilisateurs à voir/choisir la catégorie TT_NEWS créé par un autre utilisateur ou un administrateur. Pour pallier ce problème, il suffit d&#8217;ajouter ce bout de code à la config TS du groupe d&#8217;utilisateur (ou directement de l&#8217;utilisateur si besoin) : Pensez à enregistrer et surtout vider les caches TYPO3.]]></description>
			<content:encoded><![CDATA[<p>Par défaut, TT_NEWS n&#8217;autorise pas un groupe d&#8217;utilisateurs à voir/choisir la catégorie TT_NEWS créé par un autre utilisateur ou un administrateur.</p>
<p>Pour pallier ce problème, il suffit d&#8217;ajouter ce bout de code à la config TS du groupe d&#8217;utilisateur (ou directement de l&#8217;utilisateur si besoin) :</p>
<pre class="brush: php; title: ; notranslate">
options.useListOfAllowedItems = 0
</pre>
<p>Pensez à enregistrer et surtout vider les caches TYPO3.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/09/tt_news-permettre-a-un-groupe-dutilisateur-de-voir-toutes-les-categories-de-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TypoScript] Ajouter la date de mise à jour de la page</title>
		<link>http://www.typo3facile.fr/2011/06/typoscript-ajouter-la-date-de-mise-a-jour-de-la-page/</link>
		<comments>http://www.typo3facile.fr/2011/06/typoscript-ajouter-la-date-de-mise-a-jour-de-la-page/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 09:44:14 +0000</pubDate>
		<dc:creator>François</dc:creator>
				<category><![CDATA[Astuces diverses]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Typoscript]]></category>
		<category><![CDATA[date de mise à jour]]></category>
		<category><![CDATA[update date]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=709</guid>
		<description><![CDATA[Dans certains cas, et notamment sur des pages dont le contenu change régulièrement, il peut être intéressant de signifier à l&#8217;internaute à quelle date ce contenu (cette page) a été mis(e) à jour. Pour ce faire, il va falloir ajouter un peu de TYPOSCRIPT à votre template TYPO3. Je vous mets le code en brut [...]]]></description>
			<content:encoded><![CDATA[<p>Dans certains cas, et notamment sur des pages dont le contenu change régulièrement, il peut être intéressant de signifier à l&#8217;internaute à quelle date ce contenu (cette page) a été mis(e) à jour.</p>
<p>Pour ce faire, il va falloir <strong>ajouter un peu de TYPOSCRIPT</strong> à votre template TYPO3. Je vous mets le code en brut ci-dessous, avec un brève explication en-dessous.</p>
<pre class="brush: plain; title: ; notranslate">
temp.lastUpdate = TEXT
temp.lastUpdate {
data = page:crdate
if.isTrue.data = page:crdate
strftime = %d/%m/%Y
data = register : SYS_LASTCHANGED
if
}

page.10 {
marks.last_update &lt; temp.lastUpdate
marks.last_update.wrap = &lt;p class=&quot;date_maj&quot;&gt;Page mise &amp;agrave; jour le&amp;nbsp;|.&lt;/p&gt;
}
</pre>
<p>En gros :</p>
<ul>
<li>On définit une <strong>variable temporaire</strong> (de type <em>TEXT</em>) dans laquelle on va récupérer la <strong>date de création</strong> de la page (<em>crdate</em>) ;</li>
<li>On regarde ensuite si dans la base de données a été enregistrée une <strong>date de mise à jour de la page</strong> (<em>register : SYS_LASTCHANGED</em>), normalement plus récente que la date de création&#8230; <img src='http://www.typo3facile.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Si c&#8217;est le cas, notre variable temporaire prend comme valeur la date de mise à jour ;</li>
<li>Ensuite (en supposant que les marqueurs de template TYPO3 n&#8217;ont plus de secret pour vous), je vais donner à mon <strong>marqueur TYPO3 (<em>last_update</em>) la valeur de la variable</strong> définie plus haut ;</li>
<li>Je fais un petit &laquo;&nbsp;<strong>wrap</strong>&nbsp;&raquo; pour la mise en forme, parce qu&#8217;avec ce &laquo;&nbsp;wrap&nbsp;&raquo; et un petit coup de <strong>CSS</strong>, ça sera plus joli et surtout ça collera à votre charte ;</li>
<li>Si comme moi, vous avez créé un <strong>nouveau gabarit TS juste pour ce bout de code </strong>(oui&#8230;j&#8217;aime bien découper tous mes TS pour savoir à quoi ils correspondent et pour pouvoir les modifier plus facilement), n&#8217;oubliez pas de l&#8217;inclure dans votre template général.</li>
</ul>
<p>Et voilà, c&#8217;est fait.</p>
<p>Si vous avez des questions, n&#8217;hésitez pas à les poser via le commentaire c&#8217;est fait pour ça ! <img src='http://www.typo3facile.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/06/typoscript-ajouter-la-date-de-mise-a-jour-de-la-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[TYPO3 TT_News] Ajouter un champ et son marqueur dans tt_news</title>
		<link>http://www.typo3facile.fr/2011/03/typo3-tt_news-ajouter-un-champ-et-son-marqueur-dans-tt_news/</link>
		<comments>http://www.typo3facile.fr/2011/03/typo3-tt_news-ajouter-un-champ-et-son-marqueur-dans-tt_news/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 16:04:55 +0000</pubDate>
		<dc:creator>Julia</dc:creator>
				<category><![CDATA[TT_NEWS]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[champ supplémentaire]]></category>
		<category><![CDATA[création d'extension]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[kickstarter]]></category>

		<guid isPermaLink="false">http://www.typo3facile.fr/?p=664</guid>
		<description><![CDATA[Voici un petit tuto sans prétentions pour créer un nouveau champ et le marqueur qui va avec dans vos news, autrement dit un &#171;&#160;hook&#160;&#187; de tt_news. Ce tuto nécessite un site TYPO3 à disposition qui ne craint rien (un TYPO3 de test ou en local fera très bien l&#8217;affaire), une bonne maîtrise de TYPO3 et [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit tuto sans prétentions pour créer un nouveau champ et le marqueur qui va avec dans vos news, autrement dit un &laquo;&nbsp;hook&nbsp;&raquo; de tt_news.</p>
<p>Ce tuto nécessite un site TYPO3 à disposition qui ne craint rien (un TYPO3 de test ou en local fera très bien l&#8217;affaire), une bonne maîtrise de TYPO3 et du typoscript, de l&#8217;extension tt_news, et un peu de connaissance en php (mais vraiment pas beaucoup, on s&#8217;en sort avec du copier-coller et quelques neurones).</p>
<h2>L&#8217;extension Kickstarter</h2>
<p>Pour créer un champ supplémentaire dans vos news, pas de miracle, il faut en fait créer une extension : un &laquo;&nbsp;hook&nbsp;&raquo;, c&#8217;est une extension d&#8217;extension. Et pour en créer une, il est plus facile de commencer avec le Kickstarter :  l&#8217;extension qui aide à faire des petits (mais qui ne les fait pas à votre place).</p>
<p>Le Kickstarter n&#8217;est pas un éditeur de code ni une machine à créer l&#8217;extension-de-vos-rêves sans écrire une ligne de code, elle permet juste de créer l&#8217;architecture des fichiers nécessaires à une extension. Et c&#8217;est déjà pas mal.</p>
<p>Donc on ouvre le gestionnaire d&#8217;extension de son TYPO3 de test et on installe le kickstarter.</p>
<h2>Nommer et décrire votre extension</h2>
<p>Une fois le Kickstarter installé, dans le gestionnaire d&#8217;extensions, choisissez « make new extension » dans le menu déroulant du haut.</p>
<p>Ensuite, paramétrez les éléments suivants pour votre extension : la clé de votre extension, son titre, une petite description, sa catégorie (dans notre cas: frontend plugin), ses dépendances (ici : tt_news), votre nom et votre mail.</p>
<p><a href="http://www.typo3facile.fr/wp-content/uploads/2011/03/1.png" rel="lightbox[664]"><img class="alignnone size-medium wp-image-665" title="Kickstarter phase 1" src="http://www.typo3facile.fr/wp-content/uploads/2011/03/1-235x300.png" alt="Kickstarter phase 1" width="235" height="300" /></a></p>
<p>Je vais un peu vite: si vous voulez en savoir plus sur cette page de paramétrages, vous pouvez consulter le tuto très bien fait sur <a title="Typo3Journal - Développer son extension typo3 - Nouvelle fenêtre" href="http://www.typo3journal.info/articles/developpement/developpement-extensions-1.html" target="_blank">typo3journal</a>.</p>
<p>Pour terminer, cliquez sur « update » (l&#8217;un ou l&#8217;autre des deux boutons).</p>
<h2>Ajouter une table à tt_news</h2>
<p>Pour ajouter un champ à tt_news, commençons par étendre sa base de données avec une table.</p>
<ol>
<li>Cliquez sur « Extend existing tables ».</li>
<li>Dans la liste qui s&#8217;affiche, choisissez News (tt_news).</li>
<li>Donnez un nom à votre champ puis un titre. Le titre est ce qui s&#8217;affichera dans le back office donc n&#8217;hésitez pas à être un peu descriptif.</li>
<li>Choisissez le type de champ. Vous pouvez visualiser en cliquant sur « update » et changer ensuite si ça ne vous convient pas.</li>
<li>Pour notre exemple, j&#8217;ai choisi un champ simple de type «String input».</li>
</ol>
<p>De ce choix de champ dépendra ensuite le code à créer pour interpréter les données intégrées.<br />
Vous pouvez ajouter autant de champs que vous le souhaitez, il vous suffit de cliquer sur « update » et de remplir les champs en dessous « New Field ».</p>
<p>À cette étape, on en a presque terminé avec le kickstarter. Si vous voulez aller plus loin à son propos, n&#8217;hésitez pas à <a title="Typo3Journal - Developper une extension typo3 - Nouvelle fenêtre" href="http://www.typo3journal.info/articles/developpement/developpement-extensions-1.html" target="_blank">consulter le tuto sur typo3journal</a>.<a href="http://www.typo3journal.info/articles/developpement/developpement-extensions-1.html"></a></p>
<h2>Générer les fichiers de l&#8217;extension</h2>
<p>Toujours dans le kickstarter :</p>
<ol>
<li>Cliquez sur « View result » sous la clé de votre extension, puis sur « write ». Vous remarquerez le chemin d&#8217;accès aux fichiers de votre extension (typo3conf/ext/nom_de_mon_extension/).</li>
<li>Un message apparaît, informant que le kicksarter n&#8217;est pas un éditeur et que si l&#8217;extension existe déjà sur votre site les fichiers précédents seront écrasés. Cliquez sur ok.</li>
<li>Un bel encart vert vous indique que l&#8217;extension existe mais qu&#8217;elle n&#8217;est pas installée : ne l&#8217;installez pas pour le moment, ça ne sert à rien.</li>
<li>Si vous allez dans le gestionnaire des extensions, vous verrez votre petite nouvelle dans la liste des extension non installées.</li>
</ol>
<h2>Récupérer les fichiers générés</h2>
<p>Pour la suite, vous aurez peut-être besoin de mon extension créée dans cet exemple : je vous invite à <a title="Extension test_newsplus.t3x - Téléchargement" href="http://www.typo3facile.fr/wp-content/uploads/2011/03/test_newsplus.t3x" target="_blank">la télécharger</a> et à l&#8217;installer dans votre TYPO3 de test.</p>
<p>Ensuite, lâchez un peu le back de TYPO3 et ouvrez votre éditeur de code préféré : vous allez avoir besoin d&#8217;un éditeur de code et d&#8217;un moyen de transfert ftp si vous n&#8217;êtes pas en local. Personnellement j&#8217;utilise Netbeans qui fait les deux, comme beaucoup d&#8217;autre IDE, vous faites comme vous voulez : chacun sa came.</p>
<p>Récupérez les fichiers de votre extension, ils se trouvent au même endroit que toutes les extensions, dans un dossier au nom de votre extension : typo3conf/ext/nom_devotreextension.</p>
<p>Profitez-en pour récupérer aussi les fichiers de l&#8217;exemple : typo3conf/ext/test_newsplus.</p>
<h2>Création des fichiers supplémentaires</h2>
<ol>
<li>Nous allons commencer par créer un fichier php qui va servir à stocker le code qui va étendre tt_news : class.tx_nomdemonextension.php. Pour le moment, laissons ce fichier vide.</li>
<li>Attention au nommage, c&#8217;est très important.  Vous noterez bien que le nom du fichier est constitué de « class. » puis « tx_ » puis de la clé de votre extension sans les underscore s&#8217;il y en a.</li>
<li>Ensuite, nous créons le fichier qui va ajouter notre extension à tt_news : ext_localconf.php (attention à bien le nommer comme il faut). Laissez ce fichier vide pour le moment.</li>
<li>On va aussi créer un fichier pour paramétrer le setup. Pour mon exemple j&#8217;ai juste besoin d&#8217;un « wrap » équivalent à « title_stdWrap » dans tt_news. Je vais créer un fichier qui servira d&#8217;exemple de paramétrage aux utilisateurs de l&#8217;extension : dans un dossier « static », ajouter un fichier setup.txt.</li>
</ol>
<p>Voilà à quoi doit ressembler l&#8217;arbre de votre extension à la fin de cette étape :</p>
<p><a href="http://www.typo3facile.fr/wp-content/uploads/2011/03/6.png" rel="lightbox[664]"><img class="alignnone size-thumbnail wp-image-675" title="6" src="http://www.typo3facile.fr/wp-content/uploads/2011/03/6-150x150.png" alt="Arbre des fichiers de l'extension" width="150" height="150" /></a></p>
<h2>Le fichier &laquo;&nbsp;ext_localconf.php&nbsp;&raquo;</h2>
<ol>
<li>Ouvrez le fichier puis copier-collez les lignes suivantes:
<pre class="brush: php; highlight: [6,8]; title: ; notranslate">&lt;?php
if (!defined ('TYPO3_MODE')) {
 die ('Access denied.');
}
// include &quot;model&quot;
require_once(t3lib_extMgm::extPath('test_newsplus').'class.tx_testnewsplus.php');
// call tt_news Hook
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'tx_testnewsplus';
?&gt;</pre>
</li>
<li>Les lignes surlignées contiennent des éléments que vous devez remplacer : clé de votre extensions, chemin vers le fichier class.nomdemonextension.php, nom de votre extension.</li>
</ol>
<h2>Le fichier &laquo;&nbsp;class.tx_nomdemonextension.php&nbsp;&raquo;</h2>
<ol>
<li>Ouvrez celui de l&#8217;exemple en parallèle : class.tx_testnewsplus.php, et copiez-collez l&#8217;intégralité de ce fichier dans le vôtre. Nous allons le modifier pour l&#8217;adapter.</li>
<li>Les entêtes en commentaires sont des protections légales, cherchez et remplacez par vos propre nom, mail et nom d&#8217;extension.</li>
<li>Intéressons-nous maintenant à la class php du fichier :
<pre class="brush: php; highlight: [1,3,4,5,9,10]; title: ; notranslate">
class tx_testnewsplus {
 function extraItemMarkerProcessor($markerArray, $row, $lConf, $parentObject) {
 if ($row['tx_testnewsplus_producteur'] != ''){
 $markerArray['###NEWS_PRODUCTEUR###'] = $parentObject-&gt;local_cObj-&gt;stdWrap($row['tx_testnewsplus_producteur'], $lConf['producteur_stdWrap.']);}
 else $markerArray['###NEWS_PRODUCTEUR###'] = &quot;&quot;;
 return $markerArray;
 }
}
if (defined('TYPO3_MODE') &amp;&amp; $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/test_newsplus/class.tx_testnewsplus.php'])
 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/test_newsplus/class.tx_testnewsplus.php']);
?&gt;</pre>
<p>En clair, cette fonction dit que : s&#8217;il y a des choses inscrites dans le champ «  tx_testnewsplus_producteur » alors il faut les mettre à la place du marqueur ###NEWS_PRODUCTEUR###.<br />
Et si dans le setup on a ajouté un paramètre qui s&#8217;appelle producteur_stdWrap, alors on l&#8217;ajoute au marqueur.<br />
Enfin, s&#8217;il n&#8217;y a rien dans le champ  tx_testnewsplus_producteur, alors il n&#8217;y a rien qui s&#8217;affiche.<br />
Voilà il ne vous reste plus qu&#8217;à modifier avec vos propres nom de fichiers et de champs -  les lignes concernées sont surlignées dans le code ci-dessus.<br />
Si vous avez créer plusieurs champs, dupliquez les lignes 3,4,5 avant la ligne 6, et adaptez à chaque nom de champ et de marqueur, pensez aussi à modifier le stdWrap à chaque fois.</li>
<li>Pensez bien à ajoutez votre nouveau marqueur dans votre template tt_news.</li>
</ol>
<p>Si vous souhaitez aller plus loin dans les fonctions de hook de tt_news, la<a title="Typo3 tt_news documentation - Nouvelle fenêtre" href="http://typo3.org/documentation/document-library/extension-manuals/tt_news/3.0.1/view/1/5/" target="_blank"> doc de tt_news</a> amène quelques infos et il y a des exemples directement dans les fichiers de l&#8217;extension tt_news (typo3conf/ext/tt_news/res/ tous les fichiers commençant par example_)</p>
<h2>Le fichier &laquo;&nbsp;setup.text&nbsp;&raquo; (dossier static)</h2>
<p>Ce fichier est informatif : il va indiquer le setup possible pour mon nouveau champ tt_news.</p>
<p>Dans mon exemple, j&#8217;ai besoin de pouvoir entourer le nom de producteur récupéré par un intitulé du type « producteur : ». On va ajouter donc utiliser le « producteur_stdWrap » placé dans le fichier &laquo;&nbsp;class.tx_testnewsplus.php&nbsp;&raquo;, qui aura la même fonction « author_stdWrap » ou « title_stdWrap » dans le setup de tt_news.</p>
<p>Donc ajouter dans &laquo;&nbsp;setup.txt&nbsp;&raquo; :</p>
<pre class="brush: plain; title: ; notranslate">

plugin.tt_news.displaySingle.producteur_stdWrap.wrap = &lt;p&gt;Producteur : |&lt;/p&gt;

plugin.tt_news.displayList.producteur_stdWrap.wrap = &lt;p&gt;Producteur : |&lt;/p&gt;

plugin.tt_news.displayLatest.producteur_stdWrap.wrap = &lt;p&gt;Producteur : |&lt;/p&gt;
</pre>
<p>Cette ligne sera ensuite à ajouter dans le gabarit setup de tt_news.</p>
<h2>Installer et tester votre nouveau champ TT_News</h2>
<p>Il ne vous reste plus qu&#8217;à uploader les fichiers de votre extensions, ainsi que le template de tt_news où vous avez ajouté le nouveau marqueur.<br />
Une fois cela fait, rendez-vous dans le gestionnaire d&#8217;extension de votre back typo3 pour installer l&#8217;extension.</p>
<p>À l&#8217;installation, il vous demande la création du nouveau champ : oui bien sûr que vous êtes d&#8217;accord, c&#8217;est même exprès pour ça que je fait ce tuto.</p>
<p>Ensuite, insérez une news ou ouvrez une ancienne news, vous devrez y voir, dans l&#8217;onglet «Etendues » ou « Extended », votre nouveau champ personnalisé.</p>
<p>Si vous souhaitez paramétrer le Wrap, il ne vous reste plus qu&#8217;à ajouter dans le setup les éléments du point 10.</p>
<p>Et voilà, c&#8217;est fini pour aujourd&#8217;hui.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.typo3facile.fr/2011/03/typo3-tt_news-ajouter-un-champ-et-son-marqueur-dans-tt_news/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

