je vous met mon tutoriel pour mettre une page d'attente "under construction" vers laquelle sera redirigé vos utilisateurs lorsque vous mettez le site en maintenance afin de les avertir.
1- Création d'une nouvelle fonction dans le fichier admin/mainController.php
Voici donc la fonction à rajouter dans ce fichier
- Code: Tout sélectionner
function maintenanceAction($active = 0)
{
$this->autoRender = false;
/*** si vous utilisez une page avec le countdown ( Ready2Launch ) ajouter cette portion de code ***/
/****** create the javascript for use with the countdown ***/
/**/ $fp = fopen(CODE_ROOT_DIR.'siteUnderConstruction/js/rewritedjsCountdown.js','w+');
/**/ $jour = date('d');
/**/ $mois = (int) date('m');
/**/ $intervalleEnJour = Config::get('timeDayIntervalForMaintenance');
/**/ $intervalleEnHeure = Config::get('timeHourIntervalForMaintenance');
/**/ $jour += (int) $intervalleEnJour;
/**/ $jsScript = 'TargetDate = "'.$mois.'/'.$jour.'/'.date('Y').' '.$intervalleEnHeure.':00:00"';
/**/ fputs($fp,$jsScript);
/**/ fclose($fp);
/*** end of js for countdown ***/
/** modification du htacess **/
if(file_exists(CODE_ROOT_DIR.'config/baseHtaccess.txt')) {
$fp = fopen(CODE_ROOT_DIR.'config/baseHtaccess.txt','r');
while (!feof($fp))
{
$data[] = trim(fgets($fp, 512));
}
fclose($fp);
}
if($active === '1')
{
$adminIp = str_replace('.','\.',$this->request->getIp()); /* on enregistre votre ip pour l'acces au site **/
$data[] = 'RewriteCond %{REMOTE_ADDR} !^'.$adminIp;
$data[] = 'RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]';
$data[] = 'RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|js) [NC]';
$data[] = 'RewriteRule .* '.Config::get('siteRootUrl').'maintenance.html [R=302,L]';
$this->setting->set('websiteMaintenanceModeEnabled',1);
Config::set('websiteMaintenanceModeEnabled', 1);
}
else
{
$this->setting->set('websiteMaintenanceModeEnabled',0);
Config::set('websiteMaintenanceModeEnabled', 0);
}
# HERE IS A GOOD PLACE TO ADD THE OLD SCRIPT REDIRECTION
$data[] = 'RewriteCond %{REQUEST_FILENAME} !-f';
$data[] = 'RewriteCond %{REQUEST_FILENAME} !-d';
$data[] = 'RewriteRule ^(.+)$ index.php';
/* writing the new htaccess file **/
$File = CODE_ROOT_DIR.".htaccess";
$fp = fopen($File, 'w');
foreach($data as $line)
{
fwrite($fp, $line."\n");
}
fclose($fp); /*** fin de la création du fichier htacess ***/
/*** on efface le cache pour le fichier de configuration **/
Cacher::getInstance()->clean("tag", array("setting"));
$this->redirect($this->moduleLink()); /** on se redirige vers la page d'acceuil de l'administration **/
}
Le fichier /config/baseHtaccess.txt devra contenir les règles que vous avez ajouter dans votre htaccess, si vous en avez pas, ce n'est pas grave, vous pouvez créer un fichier vide de ce même non, ou pas en créer.
Dans cette fonction, nous utilisons 3 nouvelles variables qui seront ajouté à la table settings de la base de donnée
* timeDayIntervalForMaintenance qui est le nombre de jours pendant lequel le site sera en maintenance
* timeHourIntervalForMaintenance qui est le nombre d'heure pendant lequel le site sera en maitenance
* websiteMaintenanceModeEnabled qui défini si votre site est en maintenance ou pas.
Mettez ces 3 valeurs à 0 dans votre base de données pour le début.
- Code: Tout sélectionner
$adminIp = str_replace('.','\.',$this->request->getIp()); /* on enregistre votre ip pour l'acces au site **/
pour tester le fonctionnement de la page, commenter cette ligne, car elle permet à cette adresse ip d'accéder au site même si la redirection est active, elle correspond à celui de l'administrateur qui a activé la maintenance.
2/ Modification de la fonction saveAction dans admin/controller/settingController.php
Dans ce fichier,
dans la fonction saveAction()
à la fin de la fonction, ajouter au dessus de
- Code: Tout sélectionner
$this->redirect($this->moduleLink());
le code suivant
- Code: Tout sélectionner
if ($this->request->websiteMaintenanceModeEnabled == 1) {
$this->redirect(AppRouter::getRewrittedUrl("/admin/main/maintenance/".$this->request->websiteMaintenanceModeEnabled));
exit;
}
Ainsi, si on active la maitenance via l'onglet et le formulaire de configuration, le traitement est réalisé et on est redirigé vers la page d'acceuil, dans le cas contraire, on a le fonctionnement normal.
3/ Modification du template /admin/templates/arfooo/setting/index.tpl
Dans ce fichier,
au dessus de </form>
ajouter le code
- Code: Tout sélectionner
<div class="column_in_table2" id="activeMaintenanceMode">
<table class="table1" cellspacing="1">
<col class="col1-1" /><col class="col2-2" />
<thead>
<h3>
<span class="first-word"><strong><b>{'settingIndex_h2_activeMaintenanceMode'|lang}</b></strong></span>
</h3>
</thead>
<tbody>
<tr class="line1">
<td>{'settingIndex_activeMaintenanceMode_enabled'|lang}: </td>
<td><input type="radio" name="websiteMaintenanceModeEnabled" value="1" /> {'On'|lang}
<input type="radio" name="websiteMaintenanceModeEnabled" value="0" /> {'Off'|lang}</td>
</tr>
<tr class="line2">
<td>{'settingIndex_activeMaintenanceMode_timeToWaitInDay'|lang}: </td>
<td><input type="text" class="input_text_small" name="timeDayIntervalForMaintenance" value="" /></td>
</tr>
<tr class="line1">
<td>{'settingIndex_activeMaintenanceMode_timeToWaitInHour'|lang}: </td>
<td><input type="text" class="input_text_small" name="timeHourIntervalForMaintenance" value="" /></td>
</tr>
</tbody>
</table>
</div>
4- Création des variables de langue dans le fichier /admin/languages/fr.php
Rajouter dans ce fichier, vers la ligne 907
- Code: Tout sélectionner
$language['settingIndex_h2_activeMaintenanceMode'] = 'Activer la maintenance du site';
$language['settingIndex_activeMaintenanceMode_enabled'] = 'Mettre le site en maintenance';
$language['settingIndex_activeMaintenanceMode_timeToWaitInDay'] = 'Temps d\'attente en jour, avant la fin de la maintenance';
$language['settingIndex_activeMaintenanceMode_timeToWaitInHour'] = 'Temps d\'attente en heure, avant la fin de la maintenance';
$language['mainIndex_desactiveMaintenanceMode'] = 'Désactiver la maintenance du site';
$language['mainIndex_maintenanceEnabled'] = 'La maitenance du site est active';
$language['mainIndex_activeMaintenanceMode'] = 'Activer la maintenance du site';
$language['mainIndex_maintenanceDisabled'] = 'La maitenance du site est desactive';
5/ Modification dans le fichier /admin/templates/arfooo/main/index.tpl
A l'endroit où cela vous convient,
vous rajouter
- Code: Tout sélectionner
<div class="column_in">
{if $setting.websiteMaintenanceModeEnabled == "1"}
{'mainIndex_maintenanceEnabled'|lang} .::. <a href="{'/admin/main/maintenance/0'|url}" title="{'mainIndex_desactiveMaintenanceMode'|lang}">{'mainIndex_desactiveMaintenanceMode'|lang}</b>
{else}
{'mainIndex_maintenanceDisabled'|lang} .::. <a href="{'/admin/main/maintenance/1'|url}" title="{'mainIndex_activeMaintenanceMode'|lang} ">{'mainIndex_activeMaintenanceMode'|lang}</b>
{/if}
</div>
Voila, au niveau des modifications, nous avons le nécessaire.
Pour la page de maitenance,
je vous propose de télécharger un fichier zip contenant deux templates que j'ai trouvé sur le net.
Ce sera à vous de les modifier pour votre site, ou utiliser un autre template.
Un template utilise la partie javascript pour le countdown, et non le second.
http://www.webmestre-annuaire.com/share/freeLaunchPage.zip
http://www.webmestre-annuaire.com/share/Ready2Launch.zip
Le contenu des fichiers zip sont à mettre à la racine de votre annuaire.
Merci pour vos retours,
j'ai adapté le tutoriel en l'écrivant donc testeurs bien venu.
Pensez à faire votre sauvegarde auparant et de vider votre dossier /compiled/
Un aperçu de ce que cela donne sur mon annuaire, utilisant un autre template, que l'on trouve aussi gratuitement ( mais voulais pas le partager celui la

Bah voila, heure du repas...