Submitted by nicoolegrenie on
Bonjour à tous, voilà pour un projet d'un ami, qui à fait son site en drupal je doit modifier une fonction qui se trouve dans user.module.
pas de grosses modifications juste ajouter du html à certain endroit pour pouvoir affiner le thème du site.
donc la fonction c'est celle ci
/**
* Implements hook_block_view().
*/
function user_block_view($delta = '') {
global $user;
$block = array();
switch ($delta) {
case 'login':
// For usability's sake, avoid showing two login forms on one page.
if (!$user->uid && !(arg(0) == 'user' && !is_numeric(arg(1)))) {
$block['subject'] = t('User login');
$block['content'] = drupal_get_form('user_login_block');
}
return $block;
case 'new':
if (user_access('access content')) {
// Retrieve a list of new users who have subsequently accessed the site successfully.
$items = db_query_range('SELECT uid, name FROM {users} WHERE status <> 0 AND access <> 0 ORDER BY created DESC', 0, variable_get('user_block_whois_new_count', 5))->fetchAll();
$output = theme('user_list', array('users' => $items));
$block['subject'] = t('Who\'s new');
$block['content'] = $output;
}
return $block;
case 'online':
if (user_access('access content')) {
// Count users active within the defined period.
$interval = REQUEST_TIME - variable_get('user_block_seconds_online', 900);
// Perform database queries to gather online user lists. We use s.timestamp
// rather than u.access because it is much faster.
$authenticated_count = db_query("SELECT COUNT(DISTINCT s.uid) FROM {sessions} s WHERE s.timestamp >= :timestamp AND s.uid > 0", array(':timestamp' => $interval))->fetchField();
$output = '<p>' . format_plural($authenticated_count, 'There is currently 1 user online.', 'There are currently @count users online.') . '</p>';
// Display a list of currently online users.
$max_users = variable_get('user_block_max_list_count', 10);
if ($authenticated_count && $max_users) {
$items = db_query_range('SELECT u.uid, u.name, MAX(s.timestamp) AS max_timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= :interval AND s.uid > 0 GROUP BY u.uid, u.name ORDER BY max_timestamp DESC', 0, $max_users, array(':interval' => $interval))->fetchAll();
$output .= theme('user_list', array('users' => $items));
}
$block['subject'] = t('Who\'s online');
$block['content'] = $output;
}
return $block;
}
}
je veux juste ajouter des span aux nombre de users en ligne
$output = '<p>' . format_plural($authenticated_count, 'There is currently <span>1</span> user online.', 'There are currently <span>@count</span> users online.') . '</p>';
j'ai fait pas mal de rechercher mais je ne comprend pas comment je peux l'écraser dans template.php de mon theme ou sub_theme
merci d'avance pour vos réponses ou vos indices
Personne ne peut m'éclairer
Permalien Soumis par nicoolegrenie le 16 Février, 2016 - 10:53
Personne ne peut m'éclairer sur ce sujet ?
Je suis pas un expert PHP,
Permalien Soumis par Qazema le 16 Février, 2016 - 18:31
Je suis pas un expert PHP, mais j'imagine qu'en incluant ceci dans ton template.php :
function NOMDETONTHEME_user_block_view($delta = '') {
/** Copié collé de la fonction que tu as cité en y incluant tes modifs **/
}
Ensuite tu vides le cache du site et ça devrait fonctionner.
N'oublies pas de préfixer la fonction avec le nom machine de ton thème.
j'ai essayé cette méthode
Permalien Soumis par nicoolegrenie le 18 Février, 2016 - 14:28
j'ai essayé cette méthode mais apparemment elle ne fonctionne pas sur ce fichier car aucun changement ne s'est produit.
Étrange...
Permalien Soumis par Qazema le 19 Février, 2016 - 09:03
Étrange...
Cependant, tu peux toujours utiliser Views pour lister les users en ligne et personnaliser ainsi l'affichage (ainsi que les champs à afficher). Tu peux aussi montrer tout simplement le nombre de user en ligne (ce qui nécessite peut-être View calc).
regarde ici https://api
Permalien Soumis par ced_sdml le 2 Mars, 2016 - 11:23
regarde ici https://api.drupal.org/api/drupal/modules!block!block.api.php/function/h...