cquiec, quand on dit connaître le php ce serait plutôt "avoir des rudiments", ce qu’on fini toujours par avoir à force de voir du code. Ceci dit, contrairement à Joomla par exemple, MODx ne nécessite pas forcémment de toucher au code php : on peut très bien s’en servir sans jamais y toucher (c’est toute la beauté pour un designer d’ailleurs !).
OK pour installer un plugin, module ou snippet on va copier-coller du code php mais faut-il y connaître grand chose pour ça
? Certains diront : oui mais certains snippets demandent de renseigner des paramètres qui sont dans le code du snippet lui-même => vrai, mais là il s’agit plus de savoir lire (et parfois donc lire l’anglais) que de connaître php.
Sinon pour répondre à Beldrak, désolé si j’ai été un peu véhément, effectivement je suis passionné...
Maintenant revenons à quelque chose de rationnel : comparons le gabarits du template par défaut de Joomla et celui de MODx (
sans tenir compte du fait que celui de Joomla bénéficie de la coloration syntaxique du php ce qui le rend sur ce forum plus facile à lire) .
Joomla :
<?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php $iso = split( '=', _ISO );
echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<?php mosShowHead(); ?>
<?php
if ( $my->id ) {
initEditor();
}
if ((mosCountModules( 'user1' )) && (mosCountModules( 'user2' ))) {
//if both modules are loaded, we need a 50%-layout for them
$usera = 'user1';
$userb = 'user2';
} else if ((mosCountModules( 'user1' )) || (mosCountModules( 'user2' ))) {
// if only one, then 100% no matter which one.
$usera = 'user3';
$userb = 'user3';
}
?>
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
<link href="<?php echo $mosConfig_live_site; ?>/templates/madeyourweb/css/template_css.css" rel="stylesheet" type="text/css"/>
<link href="<?php echo $mosConfig_live_site; ?>/templates/madeyourweb/css/css_color_green.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="accessibility">
<a href="index.php#menu">
Menu</a>
<a href="index.php#content">
Content/Inhalt</a>
</div>
<div id="pagewidth-800" >
<div id="header" >
<div id="top-top">
<?php
if (mosCountModules( "user4" )) {
?>
<div id="search">
<?php mosLoadModules ( 'user4',-1); ?>
</div>
<?php
}
?>
<div id="topmenu">
<?php if (mosCountModules( "user3" )) { ?><?php mosLoadModules ( 'user3',-1); ?><?php } ?>
</div>
</div>
<div class="clr"></div>
<div id="top-bottom">
<a href="index.php">
<?php echo '<img src="' .$mosConfig_live_site. '/templates/' .$GLOBALS['cur_template']. '/images/logo.gif" border="0" width="250" height="80" alt="logo" />'; ?>
</a>
</div>
<?php
if (mosCountModules( "banner" )) {
?>
<div id="banner">
<?php mosLoadModules ( 'banner',-1); ?>
</div>
<?php
}
?>
</div>
<div id="outer-800" >
<div id="pathway">
<?php mospathway() ?>
</div>
<div id="leftcol">
<a name="menu"></a>
<?php
if (mosCountModules( "left" )) {
mosLoadModules ( 'left',-3);
}
?>
</div>
<?php
if ((mosCountModules( "right" )) || (mosCountModules( "top" ))) {
?>
<div id="maincol-broad-800" >
<?php
} else {
?>
<div id="maincol-wide-800" >
<?php
}
if (mosCountModules( "user1" )) {
?>
<div id="<?php echo $usera; ?>">
<?php mosLoadModules ( 'user1',-2); ?>
</div>
<?php
}
if (mosCountModules( "user2" )) {
?>
<div id="<?php echo $userb; ?>">
<?php mosLoadModules ( 'user2',-2); ?>
</div>
<?php
}
?>
<div class="clr"></div>
<div class="content">
<a name="content"></a>
<?php mosMainBody(); ?>
</div>
</div>
<?php
if ((mosCountModules( "right" )) || (mosCountModules( "top" ))) {
?>
<div id="rightcol-broad">
<?php mosLoadModules ( 'top',-3); ?>
<?php mosLoadModules ( 'right',-3); ?>
</div>
<?php
}
?>
<div class="clr"></div>
</div>
<div id="footer-800" >
<?php include_once( $mosConfig_absolute_path .'/includes/footer.php' ); ?>
<?php mosLoadModules( 'debug', -1 );?>
</div>
</div>
</body>
</html>
Maintenant MODx :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[(site_name)] | [*pagetitle*]</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="[(base_url)]assets/templates/default/site.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="[(site_url)][~11~]" />
<base href="[(site_url)]" />
<!--[if lte IE 6]>
<style type="text/css" media="screen, tv, projection">
body { behavior: url(assets/js/csshover.htc); } /* hover:anything support */
#content { margin-left: 22px; } /* to avoid the BMH */
a, a:link { border-bottom-style: solid } /* becuase IE just doesn't dot */
</style>
<script type="text/javascript" src="assets/js/sleight.js"></script>
<![endif]-->
<script src="manager/media/script/scriptaculous/prototype.js" type="text/javascript"></script>
<script src="manager/media/script/scriptaculous/scriptaculous.js" type="text/javascript"></script>
</head>
<body>
<div id="page">
<div id="header">
<div id="search"><a name="search"></a>
[!FlexSearchForm? &FSF_showResults=`0` &FSF_landing=`8`!]
</div>
<h1><a href="[~[(site_start)]~]" title="[(site_name)]">[(site_name)]</a></h1>
</div>
<!-- close #header -->
<div id="content">
<div class="post">
<h4 class="date-header">[!DateTime? &format=`d-M-Y h:i A`!]</h4>
<h3 id="post-">[*longtitle*]</h3>
[*#content*]
</div>
<!-- close .post (main column content) -->
<div id="navlist"><a name="navlist"></a>
<h3>Related Links:</h3>
[[ListRelated? &LR_title=`Other pages possibly of interest...`]]
</div>
<!-- close #navlist -->
</div>
<!-- close #content -->
<div id="sidebar">
<ul>
<li><h2>About Me:</h2>
{{AboutMe}}
</li>
<li id="dropmenu"><a name="dropmenu"></a><h2>Pages:</h2>
[!DropMenu!]
</li>
<li id="recentdocs"><a name="recentdocs"></a><h2>Most Recent:</h2>
[[ListIndexer?LIn_root=0]]
</li>
<li><h2>Meta:</h2>
<ul>
<li><a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a></li>
<li><a href="http://jigsaw.w3.org/css-validator/check/referer" title="This page uses valid Cascading Stylesheets" rel="external">Valid <abbr title="W3C Cascading Stylesheets">css</abbr></a></li>
<li><a href="http://modxcms.com/" title="Powered by MODx, Do more with less.">MOD<strong>x</strong></a></li>
</ul>
</li>
</ul>
</div>
<!-- close #sidebar -->
<div class="clear"> </div>
<div id="footer">
<p>[(site_name)] is powered by <a href="http://modxcms.com/" title="Powered by MODx, Do more with less."><strong>MOD</strong>x</a><br />
<a href="[~11~]" title="Link to our Blog RSS Feeds">Blog Entries (RSS)</a><br />
<strong>MOD</strong>x-theme by <a href="http://www.liquidthemes.com">liquidthemes</a><br />
MySQL: [^qt^], [^q^] request(s), PHP: [^p^], total: [^t^], document retrieved from [^s^].</p>
</div>
<!-- close #footer -->
</div>
<!-- close #page -->
</body>
</html>
La question c’est lequel est le plus compréhensible ? le plus simple ?
Perso entre
<?php mosMainBody(); ?> et
[*content*] je trouve qu’il n’y a pas photo... en tant que designer je pense que cela rend les templates beaucoup plus lisibles => moins de risque d’erreurs, maitenance facilitée, apprentissage "intuitif" ( "content" si on parle trois mot d’anglais pas trop dur à retenir... et [* *] plutôt facile comme balisage...).
Non ?