web-dev-qa-db-fra.com

Changer le logo du site pour un type de contenu spécifique

Je construis un site vraiment simple et je suis entré dans cette question maintenant. Le site a quelques types de contenu et l'un d'entre eux agit comme un wiki modéré (seuls les utilisateurs ayant un certain rôle peuvent créer/éditer ce contenu). Lors de la visualisation des listes de ces nœuds ou lors de la visualisation de tout nœud de ce type de contenu en mode intégral, j'aimerais que le logo du site soit différent. Dis, au lieu de "mon site", quelque chose comme "mon site [[wiki]]".

Ma première pensée était de modifier le contexte pour modifier les paramètres de thème en fonction du contexte. Dommage, je n'ai pas trouvé comment obtenir ça: /

Je plongeons dans les réponses disponibles ici, mais je ne semble pas avoir de réponse, bien que quelques questions similaires abordent ce sujet à travers différents systèmes:

  • On tente de montrer un logo différent pour différentes langues et des compensions et des modules i18n et variables. voir le fil sur i18n et variable
  • Deuxièmement, on ajoute une variable (bien que ce ne soit pas clair si elles le mettent directement dans le fichier nœud - type.tpl (et je ne voudrais pas que ce que je voudrais comme ça: - /), à la main écrivant le chemin d'accès à l'image souhaitée ... - voir le fil sur tpl "abusant": d

Des idées sur quelle est la meilleure approche pour obtenir ce logo personnalisé pour un type de contenu spécifique?

Merci :)

Le code fourni dans la réponse ne fonctionnait pas correctement, mais j'ai adapté le code et je l'ai eu pour fonctionner:

function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) {
  // If the node type is "blog" the template suggestion will be "page--node--blog.tpl.php".
   $vars['theme_hook_suggestions'][] = 'page__node__' . str_replace('_', '--', $vars['node']->type);
   }
}

Avec cette fonction, j'ai eu une page.TPL.PL.PHP adaptable et personnalisée. Maintenant, je n'ai besoin que de modifier la valeur du logo $ pour ce type de contenu ou d'ajouter des paramètres supplémentaires au thème, car codant durement, le chemin d'URL du logo alternatif semble inélégant :)

4
versvs

Le moyen le plus simple serait de créer un TPL pour le type de contenu à faire pour pouvoir suivre les étapes ci-dessous.

Créez d'abord une fonction préprocess_page comme indiqué ci-dessous. Cela irait dans le fichier template.php.

function YOURTHEMENAME_preprocess_page(&$vars) {
  if (isset($vars['node']->type)) {
    $vars['theme_hook_suggestions'][] = 'page__' . $vars['node']->type;
  }
}

maintenant, vous pouvez créer une nouvelle page.tpl par type de contenu quelque chose comme

page__CONTERNTTYPENAME.tpl.php

Vous pouvez copier tout le contenu de la page existante.tpl.php dans ceci et remplacez le logo avec le logo souhaité.

dans le thème zen, le logo est dans la page.tpl est imprimé comme suit

<?php if ($logo): ?>
      <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo"><img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" /></a>
    <?php endif; ?>

ici, vous pouvez remplacer l'image SRC avec le chemin direct de votre logo.

4
Mohammed Shameem