:: Communautaire :: Support :: Résolu
wombat: remplacer images par texte + déplacer les champs de profil
Invité
coucou kim
je viens t'embêter pour deux petits soucis concernant la visionneuse de profil.
1) ça concerne les boutons de contact. malgré la p'tite ligne d'info que tu as ajoutée sur le JS et que j'ai bien suivi, ça ne semble pas marcher
visiblement l'id direct c'est aussi i_icon_pm qui est déjà présent dans le JS, sinon j'ai aussi tenté avec field_id qui semble être la div id contenant les boutons de contact mais sans succès...
ça s'affiche vraiment comme ça:
2) j'aimerais déplacer plusieurs champs à plusieurs endroits différents aussi dans la visionneuse, par exemple l'image aes du profil qu'elle s'affiche dans la visionneuse à un endroit spécifique (j'ai réussi à le faire dans les messages, mais pas du tout dans le profil... j'ai vu ta réponse dans ce sujet vu que c'était la même chose, mais je n'ai pas compris ce que tu voulais dire par simple fonction en JQuery (qu'on colle directement dans le template du coup?), j'ai tout de même essayé mais sans succès malheureusement, et vu comme tu n'as pas eu de retour, je me suis dit que j'allais redemander quand même!
voici le template du profile_view_body si jamais, je n'ai pas changé grand chose.
et le css correspondant à cette partie là, si jamais:
merci infiniment pour ton aide, ta disponibilité et toutes les ressources que tu mets en libre service, le blank theme a changé ma manière de coder et j'ai appris énormément avec toi. hâte que tu ajoutes d'autres choses au shop de ton kofi hihi j'irai quand même faire un tour.
du love <3
je viens t'embêter pour deux petits soucis concernant la visionneuse de profil.
1) ça concerne les boutons de contact. malgré la p'tite ligne d'info que tu as ajoutée sur le JS et que j'ai bien suivi, ça ne semble pas marcher
- Code:
// Pour les boutons de contact affichée dans le profil seul, utilisez l'inspecteur d'élément pour trouver l'ID correspondant au bouton // $('#field_idxxx img').replaceWith("Autre")
visiblement l'id direct c'est aussi i_icon_pm qui est déjà présent dans le JS, sinon j'ai aussi tenté avec field_id qui semble être la div id contenant les boutons de contact mais sans succès...
ça s'affiche vraiment comme ça:
- Spoiler:
2) j'aimerais déplacer plusieurs champs à plusieurs endroits différents aussi dans la visionneuse, par exemple l'image aes du profil qu'elle s'affiche dans la visionneuse à un endroit spécifique (j'ai réussi à le faire dans les messages, mais pas du tout dans le profil... j'ai vu ta réponse dans ce sujet vu que c'était la même chose, mais je n'ai pas compris ce que tu voulais dire par simple fonction en JQuery (qu'on colle directement dans le template du coup?), j'ai tout de même essayé mais sans succès malheureusement, et vu comme tu n'as pas eu de retour, je me suis dit que j'allais redemander quand même!
voici le template du profile_view_body si jamais, je n'ai pas changé grand chose.
- profile_view_body:
- Code:
<!-- IMPORTANT!!-->
<!-- ACTIVATE SIMPLE PROFILE: Users & Groups › Profiles › General options › Activate advanced profile: no -->
<br/>
<div class="container" id="wombat">
<!-- Username -->
<h1 class="page-title">Invité</h1>
<!-- Rank-->
<div class="profile_rank">between wind and water</div>
<!-- Profile contents -->
<div class="user_profile">
<!-- Avatar -->
<div class="profile_avatar" id="user_avatar"> {AVATAR_IMG}</div>
<!-- Profile info -->
<div class="profile_infos">
<div class="profile_contact">
<!-- Contact image link -->
<form action="{S_PROFILE_ACTION}" method="post" name="post">
<!-- BEGIN contact_field -->
<div id="field_id{contact_field.ID}">{contact_field.CONTENT}</div>
<!-- END contact_field -->
</form>
</div>
<!-- Status: online -->
<!-- BEGIN switch_show_status -->
{USER_ONLINE}
<!-- END switch_show_status -->
<br/>
<!-- PROFILE FIELDS -->
<div class="profile_content">
<!-- "Last visited" field -->
<div class="profile_field">
<label>{L_LAST_VISITED} :</label>
<field>{LAST_VISIT_TIME}</field>
</div>
<!-- "Private messages" field -->
<!-- BEGIN switch_dhow_mp -->
<div class="profile_field">
<label>{L_PRIVATE_MSG} :</label>
<field>{PRIVATE_MSG}</field>
</div>
<!-- END switch_dhow_mp -->
<!-- Other fields -->
<!-- BEGIN profile_field -->
<div class="profile_field" id="field_id{profile_field.ID}">
<label>{profile_field.LABEL}</label>
<field>{profile_field.CONTENT}
<!-- "Message" field contents -->
<!-- BEGIN profil_type_user_posts -->
<a rel="nofollow" href="/st/{PUSERNAME}" id="opentopics">{L_SEARCH_USER_POSTS} :</a><!-- topics opened by -->
<br />
<a rel="nofollow" href="/sta/{PUSERNAME}" id="alltopics">{L_TOPICS}</a> <!-- all topics -->
-
<a rel="nofollow" href="/spa/{PUSERNAME}" id="allposts">{L_POSTS}</a> <!-- all posts -->
<!-- END profil_type_user_posts -->
</field>
</div>
<!-- END profile_field -->
<!-- Character sheet -->
<!-- BEGIN switch_rpg -->
<!-- BEGIN rpg_fields -->
<div class="profile_field">
<label>{switch_rpg.rpg_fields.F_NAME} :</label>
<field>{switch_rpg.rpg_fields.F_VALUE_NEW}</field>
</div>
<!-- END rpg_fields -->
<fieldset class="submit-buttons">{U_ADMIN_RPG_NEW}</fieldset>
<!-- END switch_rpg -->
</div>
<!-- End of profile fields -->
</div>
</div>
<!-- Liens de modération -->
<div class="profile_admin">
<!-- Bouton "suivre le membre" -->
<!-- BEGIN switch_follow_member -->
<button onclick="doFollowAction(this);" data-id="{CUR_USER_ID}" class="followBtn {C_CLASS} ion-android-notifications{C_ICLASS}">
{CUR_FOLLOW_TEXT}
</button>
<!-- END switch_follow_member -->
<!-- Bouton d'administration du membre -->
<!-- BEGIN switch_auth_user -->
{ADMINISTRATE_USER}{BAN_USER}
<!-- END switch_auth_user -->
</div>
</div>
<script src="{JQUERY_ROOT}json/jquery.json-1.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('[id^=field_id]').each(function() {
if ($(this).find('.field_editable').is('span, div')) {
$(this).hover(function() {
if ($(this).find('.field_editable.invisible').is('span, div')) {
$(this).find('.field_editable').prev().addClass('ajax-profil_hover').parent().addClass('ajax-profil_parent').append('<div class="ajax-profil_edit"><img src="{AJAX_EDIT_IMG}" /></div>');
$(this).find('.ajax-profil_edit').attr({
alt: "{L_FIELD_EDIT_VALUE}",
title: "{L_FIELD_EDIT_VALUE}"
}).click(function() {
$(this).prev().prev().removeClass('ajax-profil_hover').addClass('invisible').next().removeClass('invisible').append('<img src="{AJAX_VALID_IMG}" class="ajax-profil_valid" />').find('input,select');
$(this).prev().find('.ajax-profil_valid').attr({
alt: "{L_VALIDATE}",
title: "{L_VALIDATE}"
}).click(function() {
var content = new Array();
$(this).parent().find('[name]').each(function() {
var type_special = $(this).is('input[type=radio],input[type=checkbox]');
if ((type_special && $(this).is(':checked')) || !type_special) {
content.push(new Array($(this).attr('name'), $(this).attr('value')));
}
});
var id_name = $(this).parents('[id^=field_id]').attr('id');
var id = id_name.substring(8, id_name.length);
$.post(
"{U_AJAX_PROFILE}", {
id: id,
user: "{CUR_USER_ID}",
active: "{CUR_USER_ACTIVE}",
content: $.toJSON(content),
tid: "{TID}"
},
function(data) {
$.each(data, function(i, item) {
$('[id=field_id' + i + ']').find('.field_uneditable').html(item).end().find('.ajax-profil_valid').remove().end().find('.field_editable').addClass('invisible').end().find('.field_uneditable').removeClass('invisible');
});
},
"json"
);
});
$(this).remove();
});
}
}, function() {
if ($(this).find('.field_editable.invisible').is('span, div')) {
$(this).find('.field_editable').prev().removeClass('ajax-profil_hover');
$(this).find('.ajax-profil_edit').remove();
}
});
}
});
});
//]]>
</script>
et le css correspondant à cette partie là, si jamais:
- css:
- Code:
/*AFFICHAGE PROFIL*/
/*** PAGE DE PROFIL ---------------- ***/
.user_profile {
display: flex;
padding: 30px;
align-items: center;
}
.profile_avatar img {
height: 350px!important;
max-width: 219px!important;
padding: 5px;
box-shadow: 0 0 3px var(--likes);
background: var(--nav);}
.profile_infos {}
.profile_contact a{
background-color: transparent;
border: none;
display: inline-block;
border-radius: 20px;
text-transform: uppercase;
border: var(--border);
padding: 2px 6px;
font-size: 12px;
line-height: 14px;}
.profile_contact form {
display: flex;
}
.profile_contact form > div {
margin-left: 5px;
}
/* Suppression des cases vides de contact qui affichent " - "
* nth-child(n+4) supprime toutes les cases après la quatrième */
.profile_contact form div:nth-child(n+4) { display:none;}
.profile_rank{text-align:center;}
.profile_content {text-align: justify;padding: 0 15px;}
.profile_field {
margin: 10px 0;
display: grid;
grid-template-columns: 135px auto;
grid-gap: 10px;
}
.profile_field label,
.profile_field label > span {
font-weight: 600;
color: var(--colover4);
font-size: 11px;
text-transform: uppercase;
}
.field_label {
color: var(--colover3);
font-family: 'Source Sans Pro',sans-serif;
line-height: normal;
font-size: 9px!important;
font-weight: 700;
text-transform: uppercase;
}
.field-aes img {
width: 198px!important;
max-height: 120px;
filter: brightness(0.7);
object-fit: cover;
object-position: center;}
.profile_field field {
position: relative;
}
.profile_admin {
text-transform: lowercase;
font-family: playfair display;
font-style: italic;
}
merci infiniment pour ton aide, ta disponibilité et toutes les ressources que tu mets en libre service, le blank theme a changé ma manière de coder et j'ai appris énormément avec toi. hâte que tu ajoutes d'autres choses au shop de ton kofi hihi j'irai quand même faire un tour.
du love <3
Pronoun(s) : Elle/she
Messages : 159
Hey !!
De ce que je comprends, des deux problèmes, ton JS pour déplacer les éléments ne fonctionnent pas sur la visionneuse de profil c'est ça ? Est-ce que ça fonctionne sur la page normale du profile ?
Car je ne sais pas si tu as vu mais dans la partie option de la documentation du plugin il y a un point sur "afterLoad" qui permet d'ajouter du JS Donc il faudrait ajouter ton JS une deuxième fois comme montrer dans l'exemple
Pour le code que tu as vu sur l'autre sujet, c'est un script à mettre dans la page de gestion de script ! La première variable à renseigner c'est l'emplacement de l'élément et la deuxième variable c'est l'identifiant de l'élément que tu veux déplacer.
Dis moi ce qu'il en est !
De ce que je comprends, des deux problèmes, ton JS pour déplacer les éléments ne fonctionnent pas sur la visionneuse de profil c'est ça ? Est-ce que ça fonctionne sur la page normale du profile ?
Car je ne sais pas si tu as vu mais dans la partie option de la documentation du plugin il y a un point sur "afterLoad" qui permet d'ajouter du JS Donc il faudrait ajouter ton JS une deuxième fois comme montrer dans l'exemple
Pour le code que tu as vu sur l'autre sujet, c'est un script à mettre dans la page de gestion de script ! La première variable à renseigner c'est l'emplacement de l'élément et la deuxième variable c'est l'identifiant de l'élément que tu veux déplacer.
Dis moi ce qu'il en est !
Invité
coucou!
merci pour ta réponse express olala
alors du coup j'ai bien ajouté l'initialisation du script dans le template overall_footer_end et j'ai regardé pour l'afterload!
du coup oui, tout fonctionne très bien dans les posts, j'ai pu déplacer les champs de profil tranquille où je voulais, mais en effet ça ne marche pas dans le wombat snif
si je comprends bien alors, c'est censé ressembler à ça?
et ensuite je dois remplacer le "var color = aside.querySelector('#rang').style.color;
aside.querySelector('.rank-header').style.backgroundColor = color;" par
c'est bien ça? enfin, j'ai essayé mais ça ne marche pas donc j'crois que j'suis totalement à côté de la plaque pour qqch, j'suis vraiment désolée moi et le JS ça fait 239872... comme dit, ça marche pourtant très bien dans les posts pour tout ce qui est bouton d'édition et de contact donc je comprends pas trop le souci ici
pour ma deuxième question, j'ai donc bien créé un nouveau JS que j'ai activé sur toutes les pages avec ce code:
sans succès le champ spécifique ne veut pas se déplacer dans mon cadre profile_bottom...
merci encore pour ton aide si précieuse
merci pour ta réponse express olala
alors du coup j'ai bien ajouté l'initialisation du script dans le template overall_footer_end et j'ai regardé pour l'afterload!
du coup oui, tout fonctionne très bien dans les posts, j'ai pu déplacer les champs de profil tranquille où je voulais, mais en effet ça ne marche pas dans le wombat snif
si je comprends bien alors, c'est censé ressembler à ça?
- Code:
<!-- Wombat.js -->
<script src="https://cdn.jsdelivr.net/gh/caezd/wombat/dist/wombat.min.js"></script>
<!-- Script qui permet d'initialiser le plugin -->
<script>
(function() {
new Wombat({
afterLoad: function(aside, overlay) {
var color = aside.querySelector('#rang').style.color;
aside.querySelector('.rank-header').style.backgroundColor = color;
}
});
</script>
et ensuite je dois remplacer le "var color = aside.querySelector('#rang').style.color;
aside.querySelector('.rank-header').style.backgroundColor = color;" par
- Code:
// Pour les boutons de contact affichée dans le profil seul, utilisez l'inspecteur d'élément pour trouver l'ID correspondant au bouton // $('#field_idxxx img').replaceWith("Autre")
c'est bien ça? enfin, j'ai essayé mais ça ne marche pas donc j'crois que j'suis totalement à côté de la plaque pour qqch, j'suis vraiment désolée moi et le JS ça fait 239872... comme dit, ça marche pourtant très bien dans les posts pour tout ce qui est bouton d'édition et de contact donc je comprends pas trop le souci ici
pour ma deuxième question, j'ai donc bien créé un nouveau JS que j'ai activé sur toutes les pages avec ce code:
- Code:
$(function() {
$(function() {
$('[.profile_bottom]').prepend( $('[#field_id-11') );
})
});
sans succès le champ spécifique ne veut pas se déplacer dans mon cadre profile_bottom...
merci encore pour ton aide si précieuse
Pronoun(s) : Elle/she
Messages : 159
Alors pour le deuxième point normalement on y est presque ! Il faut retirer les crochets dans chaque variable du code (ma faute, sa portait à confusion!) et ça devrait marcher.
Pour l'autre point je te propose qu'on voit ça sur discord car ça serait plus simple d'échanger etc
Edit : ça a été corrigé !
Voici le code que j'ai fourni à Elysium :
(retirez les commentaires// avant le c/c dans le template)
Pour l'autre point je te propose qu'on voit ça sur discord car ça serait plus simple d'échanger etc
Edit : ça a été corrigé !
Voici le code que j'ai fourni à Elysium :
- Code:
(function () {
new Wombat({
afterLoad: function (aside, overlay) {
// Dupliquer pour chaque changement de texte voulu
aside.querySelectorAll("#field_id:first-of-type a").forEach((item) => {
item.innerHTML = "MP";
});
//
const fields = [
// Dupliquer pour chaque élément à déplacer
{
info: aside.querySelector("#field_id-11"), // l'élément à déplacer
placement: aside.querySelector(".profile_bottom"), // l'emplacement
},
//
];
fields.forEach(({ info, placement }) => {
placement.appendChild(info);
});
},
allowGuests: true,
});
})();
(retirez les commentaires