[MOD] Thèmes différents par catégorie [MOD] Thèmes différents par catégorie
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

[MOD] Thèmes différents par catégorie

Started by Titooy, October 25, 2005, 09:48:59 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Titooy

L'idée de ce mod est de pouvoir choisir un thème différent pour certaines catégories de votre galerie. Exactement comme le proposent tous les systèmes de forums modernes.

Ajoutez un champ theme dans votre table "categories".

<coppermine>/include/init.inc.php
Trouvez
// Process theme selection if present in URI or in user profile
if (!empty($_GET['theme'])) {
    $USER['theme'] = $_GET['theme'];
}
// Load theme file
if (isset($USER['theme']) && !strstr($USER['theme'], '/') && is_dir('themes/' . $USER['theme'])) {
    $CONFIG['theme'] = strtr($USER['theme'], '$/\\:*?"\'<>|`', '____________');
} else {
    unset($USER['theme']);
}


Si vous ne voulez pas que les visiteurs puissent choisir eux-même le thème (en ajoutant &theme=blabla à la fin de l'URL), supprimez cette section ou mettez-la en commentaire.

Ajoutez avant
// Looks if there's a sub-theme for that category
if (!empty($_GET['cat'])) {
   $result = cpg_db_query("SELECT parent,theme FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = '{$_GET['cat']}'");
   $row = mysql_fetch_array($result);
   if (!empty($row['theme']) && !isset($theme_temp))
      $theme_temp = $row['theme'];
   mysql_free_result($result);
   while($row['parent'] != 0)
   {
      $result = cpg_db_query("SELECT parent,theme FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = '{$row['parent']}'");
      $row = mysql_fetch_array($result);
      mysql_free_result($result);
      if (isset($row['theme']) && !isset($theme_temp))
         $theme_temp = $row['theme'];
   } // while
   if (isset($theme_temp))
      $CONFIG['theme'] = $theme_temp;
}

// Looks if there's a sub-theme for that album
if (!empty($_GET['album'])) {
   $result = cpg_db_query("SELECT category FROM {$CONFIG['TABLE_ALBUMS']} WHERE aid = '{$_GET['album']}'");
   $row = mysql_fetch_array($result);
   mysql_free_result($result);
   $row['parent'] =  $row['category'];
   while($row['parent'] != 0)
   {
      $result = cpg_db_query("SELECT parent,theme FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = '{$row['parent']}'");
      $row = mysql_fetch_array($result);
      mysql_free_result($result);
      if (isset($row['theme']) && !isset($theme_temp))
         $theme_temp = $row['theme'];
   } // while
   if (isset($theme_temp))
      $CONFIG['theme'] = $theme_temp;
}




<coppermine>/catmgr.php
Trouvez
function display_cat_list() {

Ajoutez avant
function form_sub_theme() {
    global $CONFIG, $lang_catmgr_php, $current_category;

    $theme_dir = 'themes/';

    $dir = opendir($theme_dir);
    while ($file = readdir($dir)) {
        if (is_dir($theme_dir . $file) && $file != "." && $file != "..") {
            $theme_array[] = $file;
        }
    }
    closedir($dir);

    natcasesort($theme_array);

    echo <<<EOT
        <tr>
            <td class="tableb" width="60%">
                        {$lang_catmgr_php['cat_theme']}
        </td>
        <td class="tableb" valign="top">
                        <select name="theme" class="listbox">
EOT;
    echo "                    <option value=\"\"></option>\n";
    foreach ($theme_array as $theme) {
        echo "                                <option value=\"$theme\" " . ($theme == $current_category['theme'] ? 'selected="selected"' : '') . ">" . strtr(ucfirst($theme), '_', ' ') . "</option>\n";
    }
    echo <<<EOT
                        </select>
                </td>
        </tr>

EOT;
}




Trouvez
$current_category = array('cid' => '0', 'name' => '', 'parent' => '0', 'description' => '');

Remplacez par
$current_category = array('cid' => '0', 'name' => '', 'parent' => '0', 'description' => '', 'theme' => '');


Trouvez
        $result = cpg_db_query("SELECT cid, name, parent, description, thumb FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = '$cid' LIMIT 1");

Remplacez par
        $result = cpg_db_query("SELECT cid, name, parent, description, thumb, theme FROM {$CONFIG['TABLE_CATEGORIES']} WHERE cid = '$cid' LIMIT 1");


Trouvez 2 fois
        if (!isset($_POST['cid']) || !isset($_POST['parent']) || !isset($_POST['name']) || !isset($_POST['description']))

Remplacez par
        if (!isset($_POST['cid']) || !isset($_POST['parent']) || !isset($_POST['name']) || !isset($_POST['description']) || !isset($_POST['theme']))


Trouvez 2 fois
                $description = addslashes($_POST['description']);

Ajoutez après
                $theme = addslashes($_POST['theme']);



Trouvez
                cpg_db_query("UPDATE {$CONFIG['TABLE_CATEGORIES']} SET parent='$parent', name='$name', description='$description', thumb='$thumb' WHERE cid = '$cid' LIMIT 1");
                }else{
                        cpg_db_query("UPDATE {$CONFIG['TABLE_CATEGORIES']} SET name='$name', description='$description', thumb='$thumb' WHERE cid = '$cid' LIMIT 1");


Remplacez par
                cpg_db_query("UPDATE {$CONFIG['TABLE_CATEGORIES']} SET parent='$parent', name='$name', description='$description', thumb='$thumb', theme='$theme' WHERE cid = '$cid' LIMIT 1");
                }else{
                        cpg_db_query("UPDATE {$CONFIG['TABLE_CATEGORIES']} SET name='$name', description='$description', thumb='$thumb', theme='$theme' WHERE cid = '$cid' LIMIT 1");



Trouvez
        cpg_db_query("INSERT INTO {$CONFIG['TABLE_CATEGORIES']} (pos, parent, name, description) VALUES ('10000', '$parent', '$name', '$description')");

Remlacez par
        cpg_db_query("INSERT INTO {$CONFIG['TABLE_CATEGORIES']} (pos, parent, name, description, theme) VALUES ('10000', '$parent', '$name', '$description', '$theme')");


Trouvez
form_alb_thumb();

Ajoutez avant
form_sub_theme();



<coppermine>/lang/french.php (et toutes les langues qui sont utilisées par des administrateurs)
Trouvez
  'cat_desc' => 'Description de la catégorie',

Ajoutez après
  'cat_theme' => 'Thème de la catégorie',


Et voilà !

FixB

Alors je ne sais pas si je devrais poster ici, mais je tenais à dire : MERCI !!!
C'est tout simplement excellent ! Aucun souci pour appliquer la manip, et franchement c'est une fonctionnalité très très intéressante !

;D

François Keller

Bonjour,

QuoteAlors je ne sais pas si je devrais poster ici, mais je tenais à dire : MERCI !!!

Si si, c'est bien là  :D
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

seb1002

Bonjour un petit souci avec ce code....

je suis les étapes et à :

Trouvez 2 fois
        if (!isset($_POST['cid']) || !isset($_POST['parent']) || !isset($_POST['name']) || !isset($_POST['description']))

Remplacez par
        if (!isset($_POST['cid']) || !isset($_POST['parent']) || !isset($_POST['name']) || !isset($_POST['description']) || !isset($_POST['theme']))



je bloque car je ne le trouve qu'une seule fois et ce, à la ligne 303 du fichier catmgr de base de coppermine

J'utilise la dernière version

Une idée ???

un grand merci

seb

François Keller

dans la dernière version, il n'y a en effet qu'une seule occurence de cette ligne. Essayez si ça marche en faisant tout le reste...
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

seb1002

Justement j'ai essayé mais cela ne fonctionne pas car j'ai FATAL ERROR quand je veux aller sur une categorie

merci

seb

François Keller

j'ai jamais utilisé ce mod qui date déjà un peu et il est possible que le code ait été modifié ailleurs lors des mises à jour
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

seb1002

je ne trouve pas de mise a jour ... je croise les doigts pour que Titooy passe par ici et pour qu'il ait peut etre une petite réponse ;)

BEO

Ce plugin est très pratique, seulement, il affiche le thème par defaut une fois qu'on va dans un album.

En gros, le thème perso est mis dans la catégorie et quand on va dans un album de la catégorie, il prend plus en compte le thème.