<?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; joomla 1.0</title> <atom:link href="http://libre-d-esprit.thinking-days.net/tag/joomla-10/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>Thu, 28 Oct 2010 11:04:51 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.4</generator> <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>
