[resolu] Comment supprimer historique des pages de profils

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Malgrès mes recherches je ne trouve pas comment supprimer l'affichage de l'historique sur les pages de profils de façon simple.

Bon certain me dirons que dans la vie rien n'est simple ( et encore moins avec le web ), mais je suis sur qu'un drupalaunote à bien trouvé une petite astuce pour supprimer cette info sans avoir à creer un template de la page de profil...

Euh pas sur ...

Bon je continue mes recherches mais si jamais ... merci d'avance

Forum : 
Version de Drupal : 

Hello; je n'ai pas la réponse mais voici quelques pistes, à toi de voir en fonction de tes connaissances :

1) cherche un module qui fait ça. tu pourrais regarder déjà si ce module te convient : http://drupal.org/project/alterprofilepage
Sinon tu fais le tour dans la catégories qui t'intéresse ou tu vas sur drupalmodules.com et tu regardes le petit bloc magique "module related qui est très pratique

2) le masquer en css.

3) jouer sur le template chargé de l'affichage du profil (il doit y avoir un template dans le module user que tu peux copier coller dans ton theme puis éditer après vidage du theme registry). Dois y avoir une boucle php ou tu dois pouvoir court-circuiter l'affichage de l'historique. Mais bon, en fait c'est une mauvaise idée car le theme ne doit servir QUE à de la mise en forme et pas à des manips de ce genre normalement.

4) créer un module en utilisant le hook_profile_alter(&$account) qui sert à manipuler justement les catégories qui s'affichent sur cette page.

Salut nyl auster,

Dejà merci pour ton aide :)

1)pour le module que tu propose ce n'est pas tout à fait celà qu'il me faut puisque ce dernier 'apparament ne supprime pas completement l'historique'

Pour le 2) c'est une solution a laquelle j'avais pensé mais qui n'est pas tres propre tout de meme (mais que je garde sous le coude )

Sinon je vais regarder en utilisant le hook_profile_alter je connais pas donc je me documente et je fais un retour ...

En mettant faire un module juste pour cacher un champ je trouve ça un peu beaucoup :-/

Mais bon il te servira surement à d'autres choses. Si tu fais du php c'est la solution la plus propre AHMA et qui te donneras le plus de controle sur les profils.

pour le 2) pas très propre mais parfois faut faire la part des choses entre une solution propre qui met trois heures (recherches de modules, essai avec le template ou l'override de theme, codage d'un petit module) et la solution "pas propre" qui met... 20 secondes. Mais je dis ça parce que j'ai décidé de plus passer 1 heures sur un truc qui me prenait 1 minutes à l'époque ou je faisais tout le php et css/html du site (et puis j'ai pas le choix, faut travailler plus pour gagner plus tout ça.)

Il faut juste se rappeler qu'on l'a mis en display : none; sinon c'est la crise de nerfs assurée mais c'est une question d'organisation...

Bonsoir les drupalaunautes :)

Je me permet de faire remonter ce post car je suis toujours face au même souci...

nyl auster m'as donné des bonnes pistes mais j'aimerais vraiment arriver à enlever cet historique sans le cacher...

J'ai fouiller le forum et ai trouvé quelques post sans reponses au même problème.

J'ai tenté de creer un "user-profile.tpl.php" mais avec les champs que j'ai rajouté je ne m'en sort pas vraiment.

Quelqu'un sait il peut etre dans quelle fonction et apelé ce fameux historique ?

J'ai donc fini par trouver :) ( 2mois plus tard )

Voilà donc ma solution pour ceux qui se confronterais au même problème, j'ai supprimé directement dans le fichier 'user.module' la partie ci dessous

if (!isset($account->content['summary'])) {
      $account->content['summary'] = array();
    }
    $account->content['summary'] += array(
      '#type' => 'user_profile_category',
      '#attributes' => array('class' => 'user-member'),
      '#weight' => 5,
      '#title' => t('History'),
    );
    $account->content['summary']['member_for'] =  array(
      '#type' => 'user_profile_item',
      '#title' => t('Member for'),
      '#value' => format_interval(time() - $account->created),
    );

ATTENTION CETTE SOLUTION EST SUREMENT DU BRICOLAGE DONC A PRENDRE AVEC DES PINCETTES

mais pour moi c'est resolu :)

Merci d'avoir mis la solution en ligne.

Je relance quand même le débat, n'y a-til pas moyen de faire ça en évitant de modifier le core ? (je vais cherché un peu, mais bon c'est vrai que passer des heures pour virer un élément c'est pénible !!!)

Tim

Hello, c'est encore moi,

ok je pense avoir résolu le problème de manière un peu plus propre.

pour "thèmer" le page profil il faut utiliser le fichier user-profil.tpl.php (dans le module du core user).

Ce fichier est de base très simple puisque constitué ainsi :

<div class=profile>
<?php print $user_profile;?>
</div>

En fait on peut contrôler ce que l'on veut faire apparaître en utilisant la variable $profile plutôt que $user_profile. Cette variable est un tableau associatif qui associe des champs à du contenu html.
Par exemple $profile['picture'] affiche bien sûr la photo !
Pour afficher l'ensemble des champs et des valeurs du tableau $profile on peut utiliser la ligne de code suivante :
print '<pre>'. check_plain(print_r($profile, 1)) .'</pre>';

Ces modifs sont bien sûr à faire dans une copie du fichier user-profile.tpl.php à placer dans son répertoire de thème.

Plus de détails en commentaire dans le fichier modules/user/user-profile.tpl.php

Si quelqu'un peut confirmer tout ça, ça fait peu de temps que je mets les mains dans le cambouis ;) , so...
merci
Tim

Merci Nyl,

j'avais vu ta réponse, mais j'avais un doute du fait que tu précises :

Dois y avoir une boucle php ou tu dois pouvoir court-circuiter l'affichage de l'historique. Mais bon, en fait c'est une mauvaise idée car le theme ne doit servir QUE à de la mise en forme et pas à des manips de ce genre normalement.

D'un autre côté, c'est bien de la mise en forme là, non ?

Tim

ha oui, j'exagère en disant que c'est une mauvaise idée.
Disons que la manière la plus logique pour moi est sans doute de passer par un hook (création d'un module) pour récupérer les informations qui vont être communiquées au profil et d'en retirer la variable que l'on ne veut pas voir (si on cherche à supprimer une informations); mais passer par le thème c'est bien aussi; beaucoup mieux que de toucher un module du coeur :-)

Hello, bon ça va faire remonter le post, mais voici comment faire pour retirer l'information en passant par un module et non en cachant l'info dans le thème (ce qui permet de supprimer l'information et pas seulement de la masquer).

Il suffit de faire un petit module effectivement dont le fichier mon_module.module contient les simples lignes suivantes :

Pour cacher la partie "membre depuis :"

function hidden_history_profile_alter(&$account) {
    unset($account->content['summary']['member_for']);
}

Pour cacher l'ensemble de l'Historique (mais attention certains module, comme blog par exemple y affiche des infos, la même chose mais en prenant tout le champ "summary" du tableau $account->content:

function hidden_history_profile_alter(&$account) {
    unset($account->content['summary']['member_for']);
}

C'était donc bien un hook_profile_alter ;-)

A+