Récupération d'informations d'un membre précis dans le profil simple
2 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1 • Partagez
Récupération d'informations d'un membre précis dans le profil simple
Détails techniques
Version du forum : ModernBBPoste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : (lien masqué, vous devez poster pour le voir)
Description du problème
Bonjour, bonjourJe souhaite modifier l'apparence du profil simple des membres en récupérant des informations contenues dans des champs (par exemple : la date d'anniversaire) afin de les mettre moi-même en forme à ma convenance via le template profile_view_body et le CSS.
Pour cela, je pensais réutiliser le même fonctionnement déjà implanté sur mon forum. En effet, actuellement, via le JS, certaines informations du profil sont récupérées et s'affichent en page d'accueil de mon forum. Voici le script utilisé :
- Code:
$(function () {
if (_userdata.user_id > -1) {
$("body").append("<div id='loadProfil'></div>");
// Infos du profil
$("#loadProfil").load("/u" + _userdata.user_id + " #profile-advanced-details", function () {
localStorage.setItem('header2', $("#loadProfil #field_id1 .field_uneditable").html());
localStorage.setItem('element1', $("#loadProfil #field_id6 .field_uneditable").html());
localStorage.setItem('element2', $("#loadProfil #field_id2 .field_uneditable").html());
localStorage.setItem('element3', $("#loadProfil #field_id3 .field_uneditable").html());
$("div#loadProfil").remove();
setDataProfil();
});
// Notif MP
$.get('/privmsg?folder=inbox', function (data) {
var MP = $(data).find('dl.icon[style*="https://2img.net/i/fa/modernbb/topic_unread.png"]').length;
localStorage.setItem('nb_mp', MP);
setNbMpNotif();
});
// Notif remove ()
init_replace_notif_unread();
};
});
function setDataProfil() {
$(".header2").html(localStorage.getItem('header2'));
$(".element1").html(localStorage.getItem('element1'));
$(".element2").html(localStorage.getItem('element2'));
$(".element3").html(localStorage.getItem('element3'));
$('.nav-user').html(_userdata.avatar);
$('.banner-name').html(_userdata.username);
}
function setNbMpNotif() {
var MP = localStorage.getItem('nb_mp');
if (MP) {
$('.nav-right').find('a[href="/privmsg?folder=inbox"]').append('<div class="mp">' + MP + '</div>');
}
}
function init_replace_notif_unread() {
var n = '#notif_unread';
if ($(n).length > 0) {
replace_notif_unread($(n));
localStorage.setItem('nb_notif', $(n).text());
$("body").on('DOMSubtreeModified', n, function () {
localStorage.setItem('nb_notif', $(this).text());
replace_notif_unread($(this));
});
} else {
window.setTimeout(init_replace_notif_unread, 10);
}
}
function replace_notif_unread(o) { o.html(o.html().replace(/[\(\)]/g, "")); }
function setNbNotif() {
var nbNotif = localStorage.getItem('nb_notif');
$("#notif_unread").html(nbNotif);
if(parseInt(nbNotif) > 0 && ! $('#fa_notifications').hasClass('unread')) {
$('#fa_notifications').addClass('unread');
}
}
Et le template overall_header :
- Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{S_CONTENT_DIRECTION}" id="min-width" lang="{L_LANG_HTML}" xml:lang="{L_LANG_HTML}" {NAMESPACE_FB_LIKE} {NAMESPACE_FB} {NAMESPACE_BBCODE}>
<head>
<link href="https://fonts.googleapis.com/css?family=Poppins|Lora" rel="stylesheet">
<title>{SITENAME_TITLE}{PAGE_TITLE}</title>
<meta http-equiv="content-type" content="text/html; charset={S_CONTENT_ENCODING}" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<!-- BEGIN switch_compat_meta -->
<meta http-equiv="X-UA-Compatible" content="IE={switch_compat_meta.VERSION}" />
<!-- END switch_compat_meta -->
<!-- BEGIN switch_canonical_url -->
<link rel="canonical" href="{switch_canonical_url.CANONICAL_URL}" />
<!-- END switch_canonical_url -->
{META_FAVICO} {META} {META_FB_LIKE}
<meta name="title" content="{SITENAME_TITLE}{PAGE_TITLE}" /> {T_HEAD_STYLESHEET} {CSS}
<link rel="search" type="application/opensearchdescription+xml" href="/improvedsearch.xml" title="{SITENAME}" />
<link rel="search" type="application/opensearchdescription+xml" href="{URL_BOARD_DIRECTORY}/search/improvedsearch.xml" title="{SEARCH_FORUMS}" />
<script src="{JQUERY_PATH}" type="text/javascript"></script>
<!-- BEGIN switch_recent_jquery -->
<script src="{JS_DIR}jquery1.9/jquery-migrate-1.4.1.js" type="text/javascript"></script>
<script src="{JQUERY_DIR}browser/v1.0/jquery.browser.min.js" type="text/javascript"></script>
<script src="{JQUERY_DIR}support/jquery.support.js" type="text/javascript"></script>
<!-- END switch_recent_jquery -->
<script src="{JS_DIR}{L_LANG}.js" type="text/javascript"></script>
{RICH_SNIPPET_GOOGLE}
<!-- BEGIN switch_fb_login -->
<script src="https://connect.facebook.net/{switch_fb_login.FB_LOCAL}/all.js" type="text/javascript"></script>
<script src="{switch_fb_login.JS_FB_LOGIN}" type="text/javascript"></script>
<!-- END switch_fb_login -->
<!-- BEGIN switch_ticker -->
<link type="text/css" rel="stylesheet" href="{JQUERY_DIR}ticker/ticker.css" />
<script src="{JQUERY_DIR}ticker/ticker.js" type="text/javascript"></script>
<!-- END switch_ticker -->
<!-- BEGIN switch_ticker_new -->
<script src="{JQUERY_DIR}jcarousel/jquery.jcarousel.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
/* Definir le sens de direction en fonction du panneau admin */
var tickerDirParam = "{switch_ticker.DIRECTION}";
var slid_vert = false;
var auto_dir = 'next';
var h_perso = parseInt({
switch_ticker.HEIGHT
});
switch (tickerDirParam) {
case 'top':
slid_vert = true;
break;
case 'left':
break;
case 'bottom':
slid_vert = true;
auto_dir = 'prev';
break;
case 'right':
auto_dir = 'prev';
break;
default:
slid_vert = true;
}
$(document).ready(function() {
$('#fa_ticker_content').css('display', 'block');
var width_max = $('ul#fa_ticker_content').width();
var width_item = Math.floor(width_max / {
switch_ticker.SIZE
});
if (width_max > 0) {
$('ul#fa_ticker_content li').css('float', 'left').css('list-style', 'none').width(width_item).find('img').each(function() {
if ($(this).width() > width_item) {
var ratio = $(this).width() / width_item;
var new_height = Math.round($(this).height() / ratio);
$(this).height(new_height).width(width_item);
}
});
if (slid_vert) {
var height_max = h_perso;
$('ul#fa_ticker_content li').each(function() {
if ($(this).height() > height_max) {
height_max = $(this).height();
}
});
$('ul#fa_ticker_content').width(width_item).height(height_max).css('marginLeft', 'auto').css('marginRight', 'auto');
$('ul#fa_ticker_content li').height(height_max);
}
$('#fa_ticker_content').jcarousel({
vertical: slid_vert,
wrap: 'circular',
auto: {
switch_ticker.STOP_TIME
},
auto_direction: auto_dir,
scroll: 1,
size: {
switch_ticker.SIZE
},
height_max: height_max,
animation: {
switch_ticker.SPEED
}
});
} else {
$('ul#fa_ticker_content li:not(:first)').css('display', 'none');
$('ul#fa_ticker_content li:first').css('list-style', 'none').css('text-align', 'center');
}
});
//]]>
</script>
<!-- END switch_ticker_new -->
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
<!-- BEGIN switch_report_popup -->
report = window.open('{switch_report_popup.U_REPORT_POPUP}', '_phpbbreport', 'HEIGHT={switch_report_popup.S_HEIGHT},resizable=yes,scrollbars=no,WIDTH={switch_report_popup.S_WIDTH}');
if (report != null) {
report.focus();
}
<!-- END switch_report_popup -->
<!-- BEGIN switch_ticker -->
$(document).ready(function() {
Ticker.start({
height: {
switch_ticker.HEIGHT
},
spacing: {
switch_ticker.SPACING
},
speed: {
switch_ticker.SPEED
},
direction: '{switch_ticker.DIRECTION}',
pause: {
switch_ticker.STOP_TIME
}
});
});
<!-- END switch_ticker -->
});
<!-- BEGIN switch_login_popup -->
var logInPopUpLeft, logInPopUpTop, logInPopUpWidth = {
LOGIN_POPUP_WIDTH
},
logInPopUpHeight = {
LOGIN_POPUP_HEIGHT
},
logInBackgroundResize = true,
logInBackgroundClass = false;
$(document).ready(function() {
$(window).resize(function() {
var windowWidth = document.documentElement.clientWidth;
var popupWidth = $("#login_popup").width();
var mypopup = $("#login_popup");
$("#login_popup").css({
"left": windowWidth / 2 - popupWidth / 2
});
});
});
<!-- END switch_login_popup -->
//]]>
</script>
{GREETING_POPUP}
<style type="text/css">
#page-footer,
div.navbar,
div.navbar ul.linklist {
display: block !important;
}
ul.linklist li.rightside,
ul.linklist li.rightside a.copyright {
display: inline !important;
}
< !-- BEGIN switch_ticker_new -->.jcarousel-skin-tango .jcarousel-item {
text-align: center;
width: 10px;
}
.jcarousel-skin-tango .jcarousel-item-horizontal {
margin-right: {
switch_ticker.SPACING
}
px;
}
.jcarousel-skin-tango .jcarousel-item-vertical {
margin-bottom: {
switch_ticker.SPACING
}
px;
}
< !-- END switch_ticker_new -->
</style>
{HOSTING_JS}
<!-- BEGIN google_analytics_code -->
<script type="text/javascript">
//<![CDATA[
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', '{G_ANALYTICS_ID}', 'auto');
<!-- BEGIN google_analytics_code_bis -->
ga('create', '{G_ANALYTICS_ID_BIS}', 'auto', 'bis');
<!-- END google_analytics_code_bis -->
ga('send', 'pageview');
<!-- BEGIN google_analytics_code_bis -->
ga('bis.send', 'pageview');
<!-- END google_analytics_code_bis -->
//]]>
</script>
<!-- END google_analytics_code -->
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,500,700,700i&subset=cyrillic,cyrillic-ext,greek,greek-ext,latin-ext,vietnamese" rel="stylesheet" />
<link href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" />
<link href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" rel="stylesheet" >
<script src="https://cdnjs.cloudflare.com/ajax/libs/smoothscroll/1.4.6/SmoothScroll.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js"></script>
<script>
new WOW().init();
</script>
</head>
<body>
{JAVASCRIPT}
<div style="display:none">{GENERATED_NAV_BAR}</div>
<div id="topbar">
<div class="equinies"><i class="fas fa-leaf" style="margin-right:5px;"></i> <a href="http://equinies.forumactif.com/">Equinies</a>
<div class="sub-header-path">{NAV_CAT_DESC}</div>
</div>
<div class="nav-center"><a href="http://equinies.forumactif.com/">Index</a> <a href="http://equinies.forumactif.com/c1-categorie-1">Catégories</a></div>
<!-- BEGIN switch_user_logged_in -->
<div class="nav-right">
<a href="/search"><i class="fas fa-search"></i></a>
<a href="/"><i class="fas fa-bell"></i></a>
<a href="/privmsg?folder=inbox"><i class="fas fa-envelope"></i></a>
<button class="nav-button"><i class="fas fa-bars"></i></button>
<div class="nav-button-content"><a href="{U_SEARCH_NEW}">Voir les derniers messages</a>
<a href="{U_SEARCH_SELF}">Voir ses messages</a>
<a href="{U_MARK_READ}">Marquer tous les forums comme lus</a></div>
<script>
document.querySelector(".nav-button").onclick = function() {
document.querySelector(".nav-button-content").style.display=(window.getComputedStyle(document.querySelector('.nav-button-content')).display=='none') ? "block" : "none";
};
setNbMpNotif();
setNbNotif();
</script>
</div>
<div class="dropdown">
<div class="nav-user"><script>document.write(_userdata.avatar)</script></div>
<div class="dropdown-content1">
<div class="dropdown-content2 bounceIn">
<a id="lien"><i class="fas fa-user"></i>
<script>$("#lien").attr("href", "/u" + _userdata.user_id); </script></a>
<a href="/profile?mode=editprofile"><i class="fas fa-cog"></i></a>
<a href="/login?logout=1"><i class="fas fa-sign-out-alt"></i></a></div>
</div>
</div>
<!-- END switch_user_logged_in -->
<!-- BEGIN switch_user_logged_out -->
<div class="nav-right">
<a href="/search"><i class="fas fa-search"></i></a>
<a href="/login"><i class="fas fa-sign-in-alt"></i></a>
</div>
<!-- END switch_user_logged_out -->
</div>
<header>
<div class="header2">
<script>document.write(localStorage.getItem('header2'))</script>
</div>
<h1>Equinies</h1>
</header>
<div id="container">
<!-- BEGIN switch_user_logged_in -->
<div class="banner">
<div class="banner-name"><script>document.write(_userdata.username)</script></div>
<div class="banner-links">
</div>
<div class="banner-stats">
<div class="banner-element masterTooltip" title="Compte"><i class="fas fa-coins"></i>
<div class="element1"><script>document.write(localStorage.getItem('element1'))</script></div><span>€</span></div>
<div class="banner-element masterTooltip" title="Expérience"><i class="fas fa-certificate"></i>
<div class="element2"><script>document.write(localStorage.getItem('element2'))</script></div><span>XP</span></div>
<div class="banner-element masterTooltip" title="Crédit(s) de création"><i class="fas fa-plus-circle"></i>
<div class="element3"><script>document.write(localStorage.getItem('element3'))</script></div><span>CC</span></div>
</div>
</div>
<!-- END switch_user_logged_in -->
<!-- BEGIN switch_user_logged_out -->
<div class="banner" style="background-color:#fff;">
<div class="banner-name">Invité</div>
<div class="banner-links"></div>
<div class="banner-stats"></div>
</div>
<!-- END switch_user_logged_out -->
<div id="wrapper">
Ces informations correspondent à celle de l'utilisateur connecté or, je souhaite pouvoir récupérer les informations correspondant maintenant à celles de l'utilisateur "regardé" étant donné, évidemment, que chaque utilisateur à un profil différent.
Je sais qu'on peut déjà "cacher" les champs de profil du template de base et pouvoir les réutiliser grâce à un "display;none" :
- Code:
<dl id="field_id{contact_field.ID}" class="left-box details" style="width: 80%; display:none;">
Ensuite, dans le JS, on peut récupérer l'ID de chaque champs pour en "prendre" son contenu et le placer où on le souhaite. Par exemple :
- Code:
localStorage.setItem('profile-header', $("#loadProfil #field_id1 .field_uneditable").html());
Voilà ce que je comptais avoir comme genre de choses... si toutefois cela est possible :
Je ne suis pas calée en JS mais je pense que tout se joue à ce niveau-là (pour, à mon avis, cibler le profil simple du membre "regardé") :
- Code:
$(function () {
if (_userdata.user_id > -1) {
$("body").append("<div id='loadProfil'></div>");
// Infos du profil
$("#loadProfil").load("/u" + _userdata.user_id + " #wrapper", function () {
Voilà, j'espère que c'est assez clair... N'hésitez pas à me demander plus de précisions si jamais ça ne l'est pas pour vous
Bonne journée !
Re: Récupération d'informations d'un membre précis dans le profil simple
Bonjour,
Si il faut des informations de plusieurs onglets, il vaut peut-être mieux désactiver le profil avancé, dans Index > Panneau d'administration > Utilisateurs & Groupes > Utilisateurs | Profils > Options générales.
Et sinon j'imagine que oui, on peut cacher le contenu du profil en ajoutant <... style="display: none" ...> à l'élément souhaité, et l'équivalent du script en ayant les informations directement disponible sur la page en cours serait:
/^\/u[0-9]+/.test(location.pathname) ne fait que tester qu'on est sur une page /u[chiffre] et le reste du code ne fait que prendre des données à un endroit et les mettre à un autre endroid.
Cordialement.
Si il faut des informations de plusieurs onglets, il vaut peut-être mieux désactiver le profil avancé, dans Index > Panneau d'administration > Utilisateurs & Groupes > Utilisateurs | Profils > Options générales.
Et sinon j'imagine que oui, on peut cacher le contenu du profil en ajoutant <... style="display: none" ...> à l'élément souhaité, et l'équivalent du script en ayant les informations directement disponible sur la page en cours serait:
- Code:
/^\/u[0-9]+/.test(location.pathname) && $(function () {
$(".header2").html($("#field_id1 .field_uneditable").html());
$(".element1").html($("#field_id6 .field_uneditable").html());
$(".element2").html($("#field_id2 .field_uneditable").html());
$(".element3").html($("#field_id3 .field_uneditable").html());
$('.nav-user').html($('#main img[alt="avatar"]').prop('outerHTML')); // avatar
$('.banner-name').text(document.title.split(' - ', 2)[1]); // pseudo
});
/^\/u[0-9]+/.test(location.pathname) ne fait que tester qu'on est sur une page /u[chiffre] et le reste du code ne fait que prendre des données à un endroit et les mettre à un autre endroid.
Cordialement.
Ea- Aidactif
- Messages : 23583
Inscrit(e) le : 04/04/2008
Re: Récupération d'informations d'un membre précis dans le profil simple
Bonjour @Ea et surtout merci énormément pour votre aide ! Je n'aurais pas trouvé toute seule le bout de script qu'il fallait pour cibler la page...
Sujets similaires
» [Résolu] Déplacer un champ à un endroit précis dans le profil
» Changement de la variable PUSERNAME dans le profil simple?
» Récupération de liens rentrés dans le profil personnalisé
» Récupération d'un lien menant a la fiche de présentation dans le profil personnalisé
» Image dans le profil membre.
» Changement de la variable PUSERNAME dans le profil simple?
» Récupération de liens rentrés dans le profil personnalisé
» Récupération d'un lien menant a la fiche de présentation dans le profil personnalisé
» Image dans le profil membre.
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum