<?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>Libre d'esprit &#187; surcharge</title>
	<atom:link href="http://libre-d-esprit.thinking-days.net/tag/surcharge/feed/" rel="self" type="application/rss+xml" />
	<link>http://libre-d-esprit.thinking-days.net</link>
	<description>Logiciels libres, joomla, talend, php, virtuemart, templates Joomla</description>
	<lastBuildDate>Sun, 21 Mar 2010 16:53:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Surcharger les composants sous Joomla 1.0.X</title>
		<link>http://libre-d-esprit.thinking-days.net/2009/04/surcharger-les-composants-sous-joomla-10x/</link>
		<comments>http://libre-d-esprit.thinking-days.net/2009/04/surcharger-les-composants-sous-joomla-10x/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 21:35:41 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[affichage]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[joomla 1.0]]></category>
		<category><![CDATA[surcharge]]></category>
		<guid isPermaLink="false">http://libre-d-esprit.thinking-days.net/?p=11</guid>
		<description><![CDATA[L&#8217;une des nouveautés de Joomla 1.5, est la possibilité de surcharger l&#8217;affichage par défaut des composants.
Sous Joomla 1.0, dès que l&#8217;on souhaitait modifier légèrement l&#8217;affichage d&#8217;un composant, on était contraint de modifier le code source de ce dernier. Cela avait pour conséquence de compliquer  la maintenance des sites sous Joomla. En effet, il n&#8217;était [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;une des nouveautés de Joomla 1.5, est la possibilité de surcharger l&#8217;affichage par défaut des composants.</p>
<p>Sous Joomla 1.0, dès que l&#8217;on souhaitait modifier légèrement l&#8217;affichage d&#8217;un composant, on était contraint de modifier le code source de ce dernier. Cela avait pour conséquence de compliquer  la maintenance des sites sous Joomla. En effet, il n&#8217;était plus possible de suivre bêtement la procédure de mise à jour de Joomla pour appliquer un patch corrigeant une faille de sécurité par exemple.</p>
<p>En réalité, redéfinir l&#8217;affichage des composant est possible également sous Joomla 1.0. La technique consiste à créer un mambot système qui va modifier l&#8217;objet global $mainframe. Il est possible de modifier le comportement de $mainframe, mais également de l&#8217;étendre, de l&#8217;enrichir&#8230; Cette technique peut également être utilisé à d&#8217;autres fins : tels que la modification du comportement de l&#8217;objet global $database&#8230;.</p>
<p>Voici un premier exemple qui va modifier, de façon transparente pour Joomla, l&#8217;objet $mainframe, afin de lui ajouter de nouvelles fonctionnalités, ou afin de modifier son comportement.</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/defined"><span style="color: #990000;">defined</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> <br />
or <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$_MAMBOTS</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registerFunction</span><span style="color: #009900;">&#40;</span> <br />
&nbsp; <span style="color: #0000ff;">'onAfterStart'</span><span style="color: #339933;">,</span> <br />
&nbsp; <span style="color: #0000ff;">'extendMosMainframe'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> extendMosMainframe <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #000088;">$mainframe</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> mosExtendMainframe<span style="color: #009900;">&#40;</span><span style="color: #000088;">$mainframe</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">/*<br />
&nbsp;* Cette extension n'a aucun intérêt si de nouvelles<br />
&nbsp;* méthodes, de nouvelles ne sont pas ajoutées dans<br />
&nbsp;* la classe mosExtendMainframe, ou si des méthodes <br />
&nbsp;* de mosMainframe ne sont pas surchargées<br />
&nbsp;*/</span><br />
<span style="color: #000000; font-weight: bold;">class</span> mosExtendMainframe <span style="color: #000000; font-weight: bold;">extends</span> mosMainframe<span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #666666; font-style: italic;">// Récupération de l’ensemble des propriétés </span><br />
&nbsp; <span style="color: #666666; font-style: italic;">//de l’objet $mainframe initial</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$mosmainframe</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$vars</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/get_class_vars"><span style="color: #990000;">get_class_vars</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;mosMainframe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$vars</span> <span style="color: #b1b100;">AS</span> <span style="color: #000088;">$key</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mosmainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #000088;">$key</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>L&#8217;objet $mainframe est capital au sein de Joomla. En le modifiant certaines de ses propriétés, vous serez à même de redéfinir le nom des fichiers appartenant à un composant. Voici un exemple très succint, à placer au sein d&#8217;un mambot système :</p>
<div class="codecolorer-container php dawn" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'com_content'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$task</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'view'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span>_path<span style="color: #339933;">-&gt;</span><span style="color: #004000;">front</span><span style="color: #339933;">=</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000088;">$mos_config_absolute_path</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;/components/com_content/content.redefined.php&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span>_path<span style="color: #339933;">-&gt;</span><span style="color: #004000;">front_html</span><span style="color: #339933;">=</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000088;">$mos_config_absolute_path</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;/components/com_content/content.redefined.html.php&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span>_path<span style="color: #339933;">-&gt;</span><span style="color: #004000;">class</span><span style="color: #339933;">=</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000088;">$mos_config_absolute_path</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;/components/com_content/content.redefined.class.php&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span>_template <span style="color: #339933;">=</span> <br />
&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;redefined&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://libre-d-esprit.thinking-days.net/2009/04/surcharger-les-composants-sous-joomla-10x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
