Ajouter une nouvelle page personnalisée à phpBB.

Modifications phpbb3,Trucs, Astuces,Tutoriels, Documentations et conseils pratiques pour se simplifier la vie
Répondre
Avatar du membre
Yunie
Messages : 43
Enregistré le : 13 avr. 2019 20:16

Ajouter une nouvelle page personnalisée à phpBB.

Message par Yunie » 12 avr. 2019 14:43

Ajouter une nouvelle page personnalisée à phpBB. Ce tutorial va vous apprendre à ajouter une nouvelle page personnalisée à phpBB. Pourquoi voudriez-vous faire celà ? Disons par exemple, que vous vouliez créer une nouvelle page qui ressemble exactement au design de votre forum. Cette nouvelle page peut contenir ce que vous voulez, d'un simple texte comme un règlement, à des choses plus compliqués comme des scripts phpBB. (Par exemple, un calendrier) Commençons donc.

- le fichier apropos_body.php
Lorsque vous créez la page apropos.php, assurez-vous qu'il n'y ait aucune ligne blanche et/ou espace avant la partie <?php et après la partie ?>
Pour cet exemple, nous créerons une simple page qui en apprend un peu sur le site. Copiez et collez le code ci-dessous dans votre éditeur de texte préféré.

Code : Tout sélectionner

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

page_header('Titre Ici');

$template->set_filenames(array(
    'body' => 'votrepage_body.html',
));

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
C'est tout ? Pas tout à fait. Continuons l'explication :
Si vous créez une page complètement personnalisée, vous n'aurez probablement pas besoin de faire ça, mais si vous avez besoin d'accéder aux fichiers et clés de langues de phpBB, alors changez cette ligne :

Code : Tout sélectionner

$user->setup();
pour la ligne suivante :

Code : Tout sélectionner

$user->setup('nom_de_base_du_fichier_langue_ici');
Remplacez nom_de_base_du_fichier_langue_ici avec le nom du fichier de langue que vous voulez sans l'extension .php
Par exemple, si vous avez besoin d'accéder aux clés de langue de viewtopic.php alors utilisez ce code :

Code : Tout sélectionner

$user->setup('viewtopic');
Le premier changement que vous avez besoin de faire concerne cette ligne :

Code : Tout sélectionner

page_header('Titre Ici');
Changez juste Titre Ici par ce que vous voulez voir afficher dans la barre de titre du navigateur.
Dans notre exemple, nous le changerons pour A Propos.

Le changement suivant à faire concerne cette ligne :

Code : Tout sélectionner

'body' => 'votrepage_body.html',
Une fois de plus, pourquoi changer cela ? phpBB sépare la logique de la page (tout le code PHP) du désign (couleurs, images, fonds, etc.) et du texte (le fichier HTML). Vous aurez besoin de renommer votrepage_body.html pour quelque chose de plus clair comme apropos.html et nous en aurons fini dans l'édition de ce fichier. Sauvegardez le fichier au-dessus dans votre éditeur de texte sous le nom apropos.php (note : Windows peut tenter d'ajouter une extension .txt à la fin, si cela arrive, sauvegardez-le sous le nom "apropos.php" y compris les guillemets)
- Astuce bonus
Si vous souhaitez restreindre l'accès de cette page aux utilisateurs connectés uniquement alors cherchez cette ligne

Code : Tout sélectionner

$user->setup();
Et ajoutez ce petit morceau de code après

Code : Tout sélectionner

if ($user->data['user_id'] == ANONYMOUS)
{
    login_box('', $user->lang['LOGIN']);
}
- le fichier apropos_body.html
Ensuite, nous allons créer le fichier HTML qui contient le contenu véritable de apropos.php. Encore une fois, dans votre éditeur de texte, copiez le code suivant:

Code : Tout sélectionner

<!-- INCLUDE overall_header.html -->

<h2>Titre Ici</h2>

<div class="panel">
   <div class="inner"><span class="corners-top"><span></span></span>

   <div class="content">
      <p>
         Contenu de la page ici
      </p>
   </div>

   <span class="corners-bottom"><span></span></span></div>
</div>

<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
C'est plutôt simple à faire. Pour changer le nom de la page qui est affiché en grosses lettres près du haut, changez juste la ligne :

Code : Tout sélectionner

<h2>Titre Ici</h2>
Remplacez Titre ici par A propos.

Et voici la partie où vous ajouterez le contenu véritable de la page :

Code : Tout sélectionner

         Contenu de la page ici
Vous pouvez ajouter n'importe quel code HTML ou CSS ou texte simple que vous voulez. Voici un exemple rapide avec un peu de texte et une liste de rubriques

Code : Tout sélectionner

         Le site a été créé cette année pour vous procurer le meilleur forum du Net !

         Nous vous promettons de :
         <ul>
            <li>vous fournir un contenu attrayant !</li>
            <li>vous fournir une ambiance amicale !</li>
            <li>surtout vous fournir un environnement où vous pourrez vous amuser !</li>
         </ul>
- Emballé, c'est pesé !
Si vous avez suivi correctement les instructions voilà à quoi doivent ressembler vos deux fichiers maintenant.
  1. apropos.php:
    • Code : Tout sélectionner

          <?php
          define('IN_PHPBB', true);
          $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
          $phpEx = substr(strrchr(__FILE__, '.'), 1);
          include($phpbb_root_path . 'common.' . $phpEx);
      
          // Start session management
          $user->session_begin();
          $auth->acl($user->data);
          $user->setup();
      
          page_header('A Propos');
      
          $template->set_filenames(array(
              'body' => 'apropos_body.html',
          ));
      
          make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
          page_footer();
          ?>
  2. apropos_body.html:
    • Code : Tout sélectionner

      <!-- INCLUDE overall_header.html -->
      
      <h2>Titre Ici</h2>
      
      <div class="panel">
         <div class="inner"><span class="corners-top"><span></span></span>
      
         <div class="content">
            <p>
               Le site a été créé cette année pour vous procurer le meilleur forum du Net !
      
               Nous vous promettons de :
               <ul>
                  <li>vous fournir un contenu attrayant !</li>
                  <li>vous fournir une ambiance amicale !</li>
                  <li>surtout vous fournir un environnement où vous pourrez vous amuser !</li>
               </ul>
            </p>
         </div>
      
         <span class="corners-bottom"><span></span></span></div>
      </div>
      
      <!-- INCLUDE jumpbox.html -->
      <!-- INCLUDE overall_footer.html -->
- Etape finale
Maintenant sauvegardez le fichier que vous venez de modifier sous le nom apropos_body.html et uploadez-le dans le répertoire styles/votre_style/ template sur votre espace web. Uploadez aussi le fichier apropos.php sur votre espace web dans le répertoire principal de phpBB ( le même endroit ou se trouve faq.php, viewforum.php, viewtopic.php, etc.).

Source:
phpbb-fr.com
Traduction de l'article de phpBB.com réalisée par Plasma.

Avatar du membre
Yunie
Messages : 43
Enregistré le : 13 avr. 2019 20:16

Re: Ajouter une nouvelle page personnalisée à phpBB.

Message par Yunie » 12 avr. 2019 14:44

ajout d'une fonction php (DIR) Cette documentation m'a été très utile pour faire ce forum, mais il manquait un truc... si-si!
Lister des répertoires pour éviter de se taper des listes à la main et de ce fait autogéré ces dossiers.
donc je me suis mis en quête d'une solution !

première étape
le code php pour lister un dossier

Code : Tout sélectionner

<?php
$dir = opendir("../contenu");
while($file = readdir($dir)){
   if(!in_array($file,array(".",".."))){
      echo '<a href="'.$file.'">';
      echo $file;
      echo '</a><br/>';
   }
}
?>
Ce qui donne ceci une liste cliquable ou chaque lien revois vers la page en question. pas mal
.
..
index.html
tuto1.php
tuto2.php
tuto3.php
ancien_tuto3.php
Hummm! bien mais peu mieux faire car
  1. il me met les sous dossier *j'en veux pas
  2. je ne veux pas voir le fichier index.html
  3. il me met les extensions de fichier dans les titres *c'est pas beau!
  4. en plus il est pas foutu de me mettre sa dans l'ordre alphabétique
  5. et surtout comment mettre sa sur ma page html vue que le monsieur de chez phpbb.com ne veut pas de php dans les pages de template. vilain méchant pas beau NA! :lol:

Avatar du membre
Yunie
Messages : 43
Enregistré le : 13 avr. 2019 20:16

Re: Ajouter une nouvelle page personnalisée à phpBB.

Message par Yunie » 12 avr. 2019 14:45

ajout d'une fonction php (DIR) Solutions
  1. il me met les sous dossier *j'en veux pas
  2. je ne veux pas voir le fichier index.html
    • utilisation de cette fonction

      Code : Tout sélectionner

      && !preg_match('/^.*?\.html$/', $dir) 
      nous allons donc exclure toutes les page avec une extension .html
      aparté : d’après mes connaissances il n'y a pas de différence entre .htm et .html
      donc si vous voulez faire un distinguo vous mettre le page visible avec l’extension .htm hihihi pas con non ?
  3. il me met les extensions de fichier dans les titres *c'est pas beau!
    • utilisation de cette fonction

      Code : Tout sélectionner

      $fichiers = substr ( $file , 0 , -( strlen ( $file )-( strrpos ( $file , "." )))); 
  4. en plus il est pas foutu de me mettre sa dans l'ordre alphabétique
    • bon là sa deviens plus dure car le code va changer du tous au tous je vais pas enumerer tous les changement mais mettre le code avec les etates 1-2-3-4

      Code : Tout sélectionner

      <?php
      $dir = opendir("../contenu");
      $ouverture = opendir($dir); 
      while($file = readdir($dir)){
          if($file != '.' && ($file != 'index.php') && $file != '..'&& !preg_match('/^.*?\.html$/', $file)&& !preg_match('/^.*?\Img$/', $file)){
            $files = substr ( $file , 0 , -( strlen ( $file )-( strrpos ( $file , "." ))));
            $files_array[] = $file;
         }
      }
      closedir($ouverture);
      sort($files_array);
      foreach($files_array as $file)
      {
         echo '</a> - <a href="'.$file.'">';
         echo $file;
         echo '</a><br/>';
      }
      ?>
Bon génial j'ai ce que je voulais mais.. menque la 5 étape
  • donc là faut ruser avec le phpbb3
    • mettre dans ton template ceci l'endroit n'a pas d'importance

      Code : Tout sélectionner

      <ul>
      <!-- BEGIN file -->
      <li><a href="{file.U_LINK}" title="{L_DOWNLOAD}">{file.NAME}</a></li>
      <!-- END file -->
      </ul>
    • prévoir dans language/fr/common.php une clé DOWNLOAD (et les autre langue si vous les utilisés)

      Code : Tout sélectionner

          'DOWNLOAD' => 'Télécharger ce fichier',
    • pour la partie php ouvrir votre fichier apropos_body.php
      Rechercher :

      Code : Tout sélectionner

      // Start session management
      Ajouter avant :

      Code : Tout sélectionner

      // start Configuration pour montrer l'interieur de dossier
       
      $dossier = $phpbb_root_path . '../contenu'; 
      $ouverture = opendir($dossier); 
      while($fichier = readdir($ouverture)){
          if($fichier != '.' && ($fichier != 'index.php') && $fichier != '..'&& !preg_match('/^.*?\.html$/', $fichier)&& !preg_match('/^.*?\Img$/', $fichier)){
            $fichiers_array[] = $fichier;
         }
      }
      closedir($ouverture); 
      sort($fichiers_array);
      foreach($fichiers_array as $fichier)
      {
      		$fichiers = $fichier;
      		$fichiers = substr ( $fichier , 0 , -( strlen ( $fichier )-( strrpos ( $fichier , "." )))); 
      		$template->assign_block_vars('file', array(
      
      			'U_LINK' => $dossier.$fichier,
      			'NAME' => $fichiers
      		));
      }
      
      // end Configuration pour montrer l'inerieur de dossier
      
      

Répondre