Support de smfgratuit

Réservé aux forums smf officiel => Aide pour nos réalisations => Discussion démarrée par: Marc le 03 Juin 2007 à 15:51:08



Titre: [En cours][Tuto smf]Créer une page personnel dans SMF
Posté par: Marc le 03 Juin 2007 à 15:51:08
Ce tuto est en cour et sera déplacé dans les jours a venir.
Merci de votre compréhension. Fait par Garedo


Suite a une demande de Pmb236
Je me suis mis sur un petit Tutoriel de base.

Pour faire un exemple simple nous allons voir ensemble comment créer une page accessible soit à tout les visiteurs.

Première étape : Combien de fichiers à créer et modifier et leurs noms.

-Mapage.php  -> Dans le dossier Sources pour toutes les infos principales.
-Mapage.template.php -> Dans le dossier du thème default pour l’affichage.
-Mapage.french.ph -> Dans le dossier languages du thème par défaut pour les variables texte.

On modifiera les fichiers suivants :
-index.php -> a la racine du forum.
-index.template.php -> dans le dossier du thème default.

Seconde étape : Création du fichier Mapage.php

1)On commence par le commencement: balises php , indication de version du fichier et sécurité.

Code:
<?php
/********************************************************************************
* Ma page * ======================================================================
*
* Software Version:              1                                        *
* Copyright (C) 2001-2006 Garedo(http://smf-fr.org)    *

 ********************************************************************************/
 
 
if (!defined('SMF'))
die('Hacking attempt...');
 

 
 
?>

 

2)Fonction pour la navigation.
    On va donner ici toutes les infos pour les liens en rapports avec la page.

Code:
function MapageMain()
{
global $txt, $scripturl, $modSettings, $context;

//Load the main links template

loadLanguage('Mapage');

//listing actions
$subActions = array(
        '' => 'VoirMapage',
);

// Default to sub action 'main' or 'settings' depending on permissions.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : '';
$subActions[$_REQUEST['sa']]();
}

A coller juste après :
Code:
if (!defined('SMF'))
die('Hacking attempt...');

3)Enfin la fonction qui nous permette de d’afficher la page.
Code:
//fonction pour afficher ma page
function VoirMapage()
{
global $txt,  $scripturl, $modSettings, $context;

//Load the main links template
loadTemplate('Mapage');
loadLanguage('Mapage');

//Load the main index links template
$context['sub_template']  = 'main';

//Set the page title
$context['page_title'] = $txt['Mapage_1'];

$context['linktree'][] = array(
'url' => $scripturl . '?action=mapage',
'name' => $txt['Mapage_1'],
);
}

A coller juste avant :

Code:
 ?>

Troisième étape : Création du fichier Mapage.template.php

1)Toujour le même commencement : balises php et  indication de version.
Code:
<?php
/********************************************************************************
*  Ma Page                                                             *
* ==============================================================================*
* Software Version:              1                                       *
* Copyright (C) 2001-2006 Garedo (http://smf-fr.org)                               *
*********************************************************************************/


?>


2)Fonction  d’affichage.
Code:
function template_main()
{
global $txt;

echo
theme_linktree(),

'<div align="center" style="border: solid 1px black;padding:20px;width: 300px;margin:auto;">'.$txt['Mapage_2'].'</div>';
}

On le colle toujours avant :

Code:
 ?>

Quatrième étape : Création du fichier de langage Mapage.french.php

Code:
<?php

// Version: 1.1 ; Mapage

$txt['Mapage_1'] = 'Ma Page';
$txt['Mapage_2'] = 'Bonjours a tous.<br />Voici Ma Page perso.';


?>


Ciquieme étape : Edition du fichier index.php (celui qui ce trouve a la racine du forum)

On recherche :
Code:
	// Here's the monstrous $_REQUEST['action'] array - $_REQUEST['action'] => array($file, $function).
$actionArray = array(

Et on ajoute après
Code:
//Ajout pour Ma page
'mapage' => array('Mapage.php','MapageMain'),
Sixieme étape : Edition du fichier index.template.php  dans le dossier du thème default

On recherche
Code:
	if (in_array($context['current_action'], array('search', 'admin', 'calendar', 'profile', 'mlist', 'register', 'login', 'help', 'pm')))

Et on remplace par
Code:
	if (in_array($context['current_action'], array('search', 'admin', 'calendar', 'profile', 'mlist', 'register', 'login', 'help', 'pm','mapage')))

On recherche
Code:
	// The end of tab section.
echo '
<td class="maintab_' , $last , '">&nbsp;</td>
</tr>
</table>';

Et on ajoute avant
Code:
	//Voir le bouton [Mapage] 
echo ($current_action=='mapage' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'mapage' ? 'active_back' : 'back' , '">
<a href="', $scripturl, '?action=mapage">Ma page</a>
</td>' , $current_action == 'mapage' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

Et voila le tour et jouer.
Il ne vous reste plus qu’a remplir le bloc div dans la fonction template_main()  ;D ;D

Bien évidemment  ce tuto est très basique, mais il permet déjà une première approche sur la façon d’ajouter des pages personnelles dans votre sript de forum préféré.

Je suis sur un projet de livre d’or pour mon forum, je ferais le tuto en même temps.
Ce qui permettra de voir ensemble des fonctions étendues pour la gestion de quelques permissions et divers affichages.