8791 sujets

Développement web côté serveur, CMS

Hello,
Comme pourrais faire pour rendre ca un peu moins dur en terme de consommation serveur.

Un array. Mais j'arrive pas bien à le faire fonctionner ? merci pour votre aide

<?php 
if (in_category('8')) {include (TEMPLATEPATH . '/single-aluminium-range.php');
}
elseif (in_category('1')) {include (TEMPLATEPATH . '/single-brass-range.php');
}
elseif (in_category('4')) {include (TEMPLATEPATH . '/single-brass-range.php');
}
elseif (in_category('13')) {include (TEMPLATEPATH . '/single-iron.php');
}
elseif (in_category('9')) {include (TEMPLATEPATH . '/single-iron.php');
}
elseif (in_category('11')) {include (TEMPLATEPATH . '/single-iron.php');
}
elseif (in_category('10')) {include (TEMPLATEPATH . '/single-iron.php');
}
elseif (in_category('12')) {include (TEMPLATEPATH . '/single-iron.php');
}
else { include (TEMPLATEPATH . '/single-aluminium-range.php');
}

?>
Salut,

Quel est le rôle de ta fonction in_category ? J'ignore ce que tu veux faire exactement, la question n'est pas claire (tu peux faire mille choses avec un tableau).

Pour l'array :
$includes = array(
  '8' => TEMPLATEPATH . '/single-aluminium-range.php',
  ...
);

if (in_category('8') && (array_key_exists('8', $GLOBALS['includes']) && file_exists($GLOBALS['includes']['8'])))
{
  include($GLOBALS['includes']['8']);
}
else {
  include(TEMPLATEPATH . '/single-aluminium-range.php');
}
Si besoin de tester sur toutes les entrées de l'array $includes, il suffit de transformer le if - else en fonction.

Nota : code non testé, il est possible qu'il manque une parenthèse ou un point-virgule ci ou là

Edit : je viens de relire ta question, il n'y a rien de "moins dur en terme de consommation serveur" que des if - else. Le code que je propose permet d'avoir un code plus propre mais est probablement plus gourmand en ressources (bien que ce soit relatif dans ce cas) puisqu'il implique des tests d'existence de fichiers et des fonctions.
Modifié par Akhilleus (20 Oct 2012 - 17:03)
Je veux que si on est en présence de la catégorie 6,7,8 etc... alors ce soit la page single-1.php qui s'affiche, sinon si on est en présence de la catégorie 9,20,11, ce soit la page single-2.php qui s'affiche. Ainsi de suite. sans avoir un code à rallonge.
So :
$includes = array(
  '8' => TEMPLATEPATH . '/single-aluminium-range.php',
  ...
);

function category_include($test) {
  if (in_category($test) && (array_key_exists($test, $GLOBALS['includes']) && file_exists($GLOBALS['includes'][$test])))
  {
    include($GLOBALS['includes'][$test]);
  }
  else {
    include(TEMPLATEPATH . '/single-aluminium-range.php');
  }
}

category_include($test);
Avec $test qui vient par exemple d'un $_GET ou $_POST que tu auras préalablement sécurisé.

Edit : correction d'une erreur dans le code
Modifié par Akhilleus (20 Oct 2012 - 17:05)
Administrateur
Bonjour,

Tu pourrais préciser que c'est une question relative à WordPress. in_category() et TEMPLATEPATH ...

edit: snip
Modifié par Felipe (21 Oct 2012 - 19:52)
Un simple switch :


switch ($cat_ID)
{
  case '6':
  case '7':
  case '8':
    require TEMPLATEPATH . '/single-1.php';
    break;
  case '9':
  case '11':
  case '20':
    require TEMPLATEPATH . '/single-2.php';
    break;
  default:
    require TEMPLATEPATH . '/single-aluminium-range.php';
    break;
}
jb_gfx a écrit :
Un simple switch :


switch ($cat_ID)
{
  case '6':
  case '7':
  case '8':
    require TEMPLATEPATH . '/single-1.php';
    break;
  case '9':
  case '11':
  case '20':
    require TEMPLATEPATH . '/single-2.php';
    break;
  default:
    require TEMPLATEPATH . '/single-aluminium-range.php';
    break;
}


ca me parait pas mal du tout ca. je vais tester grand merci !
Perso j'aurais fait un tableau php (dans un fichier de param par exemple) genre

<?php
$tableau[8] = "/single-aluminium-range.php";
$tableau[1] = "/single-brass-range.php";
?>

Puis j'aurais appellé du genre

<?php
echo $tableau[$i]; (suivant ton cas);
?>


Le switch est peu être plus propre. Question de façon de faire. Je préfère lire les tableaux Smiley cligne
Modifié par ffwrude (31 Oct 2012 - 16:13)