Modification de la requête concernant ma homepage

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.

Tout d'abord bonjour à tous,

Je suis débutant concernant drupal et je me retrouve actuellement face à un souci concernant la requête qui affiche une liste de contenu sur ma page d'accueil.
Je souhaiterai la modifier et passer certains arguments/filtres par défaut en fonction de l'utilisateur qui est connecté.
J'ai regardé du coté des Views mais je ne parviens pas à trouver la solution adéquat. Du coup je souhaiterai savoir comment éditer directement ma requête en php à l'aide d'un module perso.

Merci d'avance pour vos réponses ;)

Forum : 

Bonjour,

Il est possible avec une vue de faire ce que tu veux. Pour cela crée un vue de type page qui doit afficher la liste des tes utilisateurs. Par la suite qui défini l'url de ta vue car page d'accueil par défaut (passer par "Configuration" et "Information"). Ensuite dans ta vue, tu crée un filtre contextuel en te servant du champ "User:UID" et dans la configuration de ton filtre contextuel "Quand la valeur n'est pas disponible" "fournir une valeur par défaut" => "Identifiant (ID) de l'utilisateur connecté".

Si besoin, j'ai crée une vue, tu peux importé dans tes vues (elle ne fait pas grand chose, seulement affiché le nom de l'utilisateur mais c'est déjà un début pour que tu t'exerce => Sers toi du champs prévu dans la vue pour tester en rentrant 1 dans le champs texte de preview) :

$view = new view();
$view->name = 'accueil';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'users';
$view->human_name = 'Accueil';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially /

/ Display: Master /
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Accueil';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'plus';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access user profiles';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Valider';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Réinitialiser';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Trier par';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Éléments par page';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Tout -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Décalage';
$handler->display->display_options['pager']['options']['tags']['first'] = '« premier';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ précédent';
$handler->display->display_options['pager']['options']['tags']['next'] = 'suivant ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'dernier »';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/
Champ: Utilisateur : Nom /
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = '';
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
/
Critère de tri: Utilisateur : Date de création /
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'users';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/
Filtre contextuel: Utilisateur : Uid /
$handler->display->display_options['arguments']['uid']['id'] = 'uid';
$handler->display->display_options['arguments']['uid']['table'] = 'users';
$handler->display->display_options['arguments']['uid']['field'] = 'uid';
$handler->display->display_options['arguments']['uid']['default_action'] = 'default';
$handler->display->display_options['arguments']['uid']['exception']['title'] = 'Tout';
$handler->display->display_options['arguments']['uid']['default_argument_type'] = 'current_user';
$handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';
/
Critère de filtrage: Utilisateur : Actif /
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'users';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = '1';
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;

/ Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'accueil';
$translatables['accueil'] = array(
  t('Master'),
  t('Accueil'),
  t('plus'),
  t('Valider'),
  t('Réinitialiser'),
  t('Trier par'),
  t('Asc'),
  t('Desc'),
  t('Éléments par page'),
  t('- Tout -'),
  t('Décalage'),
  t('« premier'),
  t('‹ précédent'),
  t('suivant ›'),
  t('dernier »'),
  t('Tout'),
  t('Page'),
);

A ton service si besoin et bon courage ;)

Bonjour,

Tout d'abord merci pour ta réponse et désolé pour cette réponse tardive (j'ai profité d'un long week end :p) .
Ta réponse m'ouvre une possibilité mais je me demandais si il n'y avait pas plus simple comme utiliser un hook et modifier la requête de contenu en cours...

Possible ?

Bonjour,

Oui il est tout à fait possible de créer ton propre module et de l'afficher sous forme de block sur ta homepage. Dans ce module tu pourras exécuter ta propre requête avec les informations que tu souhaites faire afficher.

C'est tout aussi simple après il suffit juste d'être alaise avec la création de module, ce n'est pas compliqué tout ce qu'il faut c'est bien se documenter. Pour la vue, c'était une solution alternative dans le cas où tu ne souhaitais pas coder et que tu ne connaissais pas la méthode pour afficher une vue qui liste l'utilisateur en cours et ses informations.

En tout cas, n'hésite pas si tu as des questions.

Bonne journée

Merci, je pense que je vais m'orienter sur la solution du bloc.
L'idée de coder me plait bien :D.
Effectivement je viens de me rendre compte que dans le thème Boostrap3 il y a une région contenu en plus ce qui est finalement parfait !

Bonne journée et merci encore :)

Salut,

Je reviens t'embêter une nouvelle fois car j'ai une autre question.
J'ai bien créer mon block pour cela pas de soucis puis je l'ai ajouté dans ma région contenu pour ma homepage.
Cependant j'ai une une liste de mes 10 derniers node qui s'affiche, cela à l'air d'être un flux par défaut, cependant je ne vois pas comment le modifier et/ou le supprimer.

Une idée ?

Bonjour,

En faite c'est pour cela que je te proposais de faire une vue plutôt que de coder ton module. Il s'agit en faite des dernières contributions présente sur la page d'accueil que tu peux paramétrer dans configuration / système / information. Malheureusement tu ne peux pas le mettre à 0 (1 au minimum). Il te reste éventuellement la solution de le virer via un hook_preprocess_page mais cela peut entrainer des effets de bords....

Au cas où je te mets le morceau de code qui va bien ;) (a placer dans ton fichier template.php)

function mon_theme_preprocess_page(&$vars) {
  if (drupal_is_front_page()) {
    unset($vars['page']['content']['content']['content']['system_main']); //retirer le message "aucun contenu"
    drupal_set_title(''); //retire mle message de bienvenue
  }
}

Je doute que cela puisse t'aider car si tu as placé ton bloc dans la région content, il se peut qu'avec ce code il soit retiré...

Bon courage :)

Salut,

Effectivement j'ai placé mon block dans la rubrique région du coup pas top. Alors je me suis posé une autre question, ne serait il pas possible de créer une page et d'afficher mon block spécialement pour cette dernière ? Si c'est le cas ? Comment supprimer proprement le titre de ma page ?

Salut,

Tu peux utiliser le module "Context" te permettant de créer des context d'affichage. Après pour ton titre, tu reprends ce que j'ai mis au dessus en testant simplement le noeud sur lequel tu te trouves et tu fais appel à la fonction drupal_set_title('').