Préfixe de titre selon les catégories
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
Préfixe de titre selon les catégories
Détails techniques
Version du forum : ModernBBPoste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome, Autre
Personnes concernées par le problème : Tous les utilisateurs
Problème apparu depuis : toujours
Lien du forum : https://arknights-rpg.forumsrpg.com/
Description du problème
Bien le bonsoir le FdF !Je reviens avec une petite question sur un script pour lequel je suis bloquée, j'espère que vous saurez m'aider .
Je suis administratrice fondatrice de mon forum RPG, la version est ModernBB.
Je cherche actuellement à ajouter un préfixe (dans un choix à menu déroulant) pour les sujets, et j'ai trouvé ce tuto suivant (https://www.milouze14.com/t26211p35-toutes-versions-ajouter-des-prefixes-devant-les-titres-des-sujets) qui répond à mes attentes... Ou presque !
En fait c'est exactement ce que je voudrais, mais j'aimerais que les préfixes soient différents selon le sous-forum choisi (ou au moins selon la catégorie). Sauf que... Je suis une bille en JS.
J'imagine que la résolution de mon problème se trouve dans le coin de :
- Code:
if (!/^\/post$/g.test(location.pathname) && $input) {
return false;
}
Merci d'avance pour le temps que vous prendrez à analyser ma demande, et à très bientôt ! <3
Invité- Invité
Re: Préfixe de titre selon les catégories
Bonjour Amaglibr,
Pour réaliser ce que vous souhaitez, nous avons besoin, dans un premier temps, d'ajouter de quoi nous permettre d'identifier le forum / sous-forum dans lequel on se trouve au moment de la création du nouveau sujet. Pour cela nous aurons besoin de modifier le template posting_body (dans Poster & Messages privés), d'une part pour ajouter la variable du nom de la catégorie et du forum (non présente par défaut sur ModernBB) ici récupérée d'un forum phpbb2, d'autre part pour indiquer un id sur la variable et ainsi pouvoir agir dessus plus facilement.
Ainsi, juste après la variable {POST_PREVIEW_BOX}, vous pouvez coller ceci :
Une fois cela fait, et n'oubliez pas de publier votre template à la suite.
Maintenant, passons aux modifications à apporter au code JavaScript présent dans le tutoriel.
Voici la version du JavaScript adaptée à vos besoins, et qui permet donc de sélectionner une série de préfixes différents en fonction du forum où l'on se trouve :
Décortiquons les points à modifier ensemble.
Vous pouvez, ainsi, ajouter autant de sets que vous voulez, pour autant de forums que vous voulez, il suffira de créer d'autres variables à la suite, au même endroit, et d'ajouter des cas en conséquence (voir plus bas).
Il n'y a évidemment rien qui vous oblige à établir des préfixes par défaut, c'est juste pour vous montrer qu'il est possible de le faire et comment.
On agit sur l'id "prefx_forum" placée sur la variable contenant le nom de la catégorie et le nom du forum. On va chercher le contenu HTML du premier sous-élément du dernier sous-élément de la variable, un chemin qui nous mène vers le nom du forum.
On évoque ensuite des cas :
- si le nom du forum = "Nom du forum 1" ou "Nom du forum 3", mettre les préfixes de la variable "prefixes1"
- si le nom du forum = "Nom du forum 2", mettre les préfixes de la variable "prefixes2"
- situation par défaut, mettre les préfixes de la variable "prefixes0"
Vous devez donc remplacer les "Nom du forum 1" etc par le nom des forums où vous voulez spécifier un set de préfixes, et penser à modifier le JavaScript si vous modifiez le nom du forum concerné un jour.
Le premier cas est là juste pour montrer comment écrire le code si vous voulez établir un set de préfixes pour plusieurs forums (ici forum 1 et forum 3).
Pour finir, j'ai ajouté autour du code une condition if (window.location.href.indexOf('post?f=') > -1) { car le template posting_body gère à la fois la page de création d'un nouveau sujet, et la page de réponse à un sujet. Je suis partie du principe que la page de réponse à un sujet n'est pas concernée par les préfixes, du coup j'ai ciblé le script sur la page de création d'un sujet spécifiquement.
N'hésitez pas si vous avez des questions.
Pour réaliser ce que vous souhaitez, nous avons besoin, dans un premier temps, d'ajouter de quoi nous permettre d'identifier le forum / sous-forum dans lequel on se trouve au moment de la création du nouveau sujet. Pour cela nous aurons besoin de modifier le template posting_body (dans Poster & Messages privés), d'une part pour ajouter la variable du nom de la catégorie et du forum (non présente par défaut sur ModernBB) ici récupérée d'un forum phpbb2, d'autre part pour indiquer un id sur la variable et ainsi pouvoir agir dessus plus facilement.
Ainsi, juste après la variable {POST_PREVIEW_BOX}, vous pouvez coller ceci :
- Code:
<span class="nav"><a class="nav" href="{U_INDEX}">{L_INDEX}</a> <!-- BEGIN switch_not_privmsg --><span id="prefx_forum">{NAV_CAT_DESC}</span><!-- END switch_not_privmsg --></span>
- Code:
<span class="nav" style="display:none;"><a class="nav" href="{U_INDEX}">{L_INDEX}</a> <!-- BEGIN switch_not_privmsg --><span id="prefx_forum">{NAV_CAT_DESC}</span><!-- END switch_not_privmsg --></span>
Une fois cela fait, et n'oubliez pas de publier votre template à la suite.
Maintenant, passons aux modifications à apporter au code JavaScript présent dans le tutoriel.
Voici la version du JavaScript adaptée à vos besoins, et qui permet donc de sélectionner une série de préfixes différents en fonction du forum où l'on se trouve :
- Code:
if (window.location.href.indexOf('post?f=') > -1) {
/*globals jQuery*/
/**
* @name Sistema de Prefixos.
* @version 1.0
* @author Luiz
* @see {@link http://ajuda.forumeiros.com/}
* @licence MIT
*/
(function ($) {
'use strict';
var config = {
prefixes0: [
'DEFAUT 1', 'DEFAUT 2', 'DEFAUT 3', 'DEFAUT 4'
],
prefixes1: [
'TITRE 1', 'TITRE 2', 'TITRE 3', 'TITRE 4'
],
prefixes2: [
'TITRE 5', 'TITRE 6', 'TITRE 7', 'TITRE 8'
],
lang: {
all: 'Faites votre choix'
},
engine: {
/**
* @name Inicializador.
* @desc Usado para iniciar o script.
* @param {object} input - Corresponde ao seletor do input-alvo do script.
*/
init: function (input) {
var self = this;
var $input = $(input);
var $dummy = $('<option>', {
'class': 'fa-prefix-item'
});
if (!/^\/post$/g.test(location.pathname) && $input) {
return false;
}
var $select = $('<select>', {
'class': 'fa-prefix-select',
'title': 'PHPBB2 - PHPBB3 - PUNBB - INVISION - MODERNBB - AWESOMEBB - EDGE - TOUTES VERSIONS '
});
$dummy
.clone()
.text(config.lang.all)
.attr('value', '')
.attr('selected', true)
.appendTo($select);
var pref;
switch (document.getElementById("prefx_forum").lastChild.firstChild.innerHTML) {
case "Nom du forum 1":
case "Nom du forum 3":
pref = config.prefixes1;
break;
case "Nom du forum 2":
pref = config.prefixes2;
break;
default:
pref = config.prefixes0;
}
$.each(pref, function (index, prefix) {
$dummy
.clone()
.text('[' + prefix + ']')
.attr('value', '[' + prefix + ']')
.attr('id', 'fa-prefix-item-' + index)
.appendTo($select);
});
$select
.insertBefore($input)
.on('change', function () {
var $this = $(this);
var value = $this.val();
self.prefix(value, $this.next());
});
},
/**
* @name Prefixador.
* @desc Usada para colocar o prefixo no input.
* @param {string} value - Corresponde ao prefixo que será colocado.
* @param {object} input - Corresponde ao seletor do input que será prefixado.
*/
prefix: function (value, input) {
var $input = $(input);
if (/^\[.*\]/g.test($input.val())) {
$input.val($.trim($input.val().replace(/^\[.*\]/, '')));
}
$input.val($.trim(value + ' ' + $input.val()));
}
}
};
$(function () {
var $input = $('input[name="subject"]');
config.engine.init($input);
});
}(jQuery));
}
Décortiquons les points à modifier ensemble.
- Code:
var config = {
prefixes0: [
'DEFAUT 1', 'DEFAUT 2', 'DEFAUT 3', 'DEFAUT 4'
],
prefixes1: [
'TITRE 1', 'TITRE 2', 'TITRE 3', 'TITRE 4'
],
prefixes2: [
'TITRE 5', 'TITRE 6', 'TITRE 7', 'TITRE 8'
],
Vous pouvez, ainsi, ajouter autant de sets que vous voulez, pour autant de forums que vous voulez, il suffira de créer d'autres variables à la suite, au même endroit, et d'ajouter des cas en conséquence (voir plus bas).
Il n'y a évidemment rien qui vous oblige à établir des préfixes par défaut, c'est juste pour vous montrer qu'il est possible de le faire et comment.
- Code:
var pref;
switch (document.getElementById("prefx_forum").lastChild.firstChild.innerHTML) {
case "Nom du forum 1":
case "Nom du forum 3":
pref = config.prefixes1;
break;
case "Nom du forum 2":
pref = config.prefixes2;
break;
default:
pref = config.prefixes0;
}
On agit sur l'id "prefx_forum" placée sur la variable contenant le nom de la catégorie et le nom du forum. On va chercher le contenu HTML du premier sous-élément du dernier sous-élément de la variable, un chemin qui nous mène vers le nom du forum.
On évoque ensuite des cas :
- si le nom du forum = "Nom du forum 1" ou "Nom du forum 3", mettre les préfixes de la variable "prefixes1"
- si le nom du forum = "Nom du forum 2", mettre les préfixes de la variable "prefixes2"
- situation par défaut, mettre les préfixes de la variable "prefixes0"
Vous devez donc remplacer les "Nom du forum 1" etc par le nom des forums où vous voulez spécifier un set de préfixes, et penser à modifier le JavaScript si vous modifiez le nom du forum concerné un jour.
Le premier cas est là juste pour montrer comment écrire le code si vous voulez établir un set de préfixes pour plusieurs forums (ici forum 1 et forum 3).
Pour finir, j'ai ajouté autour du code une condition if (window.location.href.indexOf('post?f=') > -1) { car le template posting_body gère à la fois la page de création d'un nouveau sujet, et la page de réponse à un sujet. Je suis partie du principe que la page de réponse à un sujet n'est pas concernée par les préfixes, du coup j'ai ciblé le script sur la page de création d'un sujet spécifiquement.
N'hésitez pas si vous avez des questions.
Re: Préfixe de titre selon les catégories
Bonsoir Oka.Mi !
Tout d'abord merci beaucoup pour cette rapidité de réponse et pour le temps que vous avez pris à me répondre ! Egalement, je tiens à vous remercier pour toutes ces explications et ces petits détails, qui m'ont permis de bien comprendre le système de ce script alors même que je ne maîtrise pas parfaitement le langage JS !
Je viens de tester à l'instant votre méthode, et franchement c'est absolument parfait !!! <3
Mille mercis vraiment !
Je note le sujet résolu de ce pas, passez une très bonne soirée ! ~
Tout d'abord merci beaucoup pour cette rapidité de réponse et pour le temps que vous avez pris à me répondre ! Egalement, je tiens à vous remercier pour toutes ces explications et ces petits détails, qui m'ont permis de bien comprendre le système de ce script alors même que je ne maîtrise pas parfaitement le langage JS !
Je viens de tester à l'instant votre méthode, et franchement c'est absolument parfait !!! <3
Mille mercis vraiment !
Je note le sujet résolu de ce pas, passez une très bonne soirée ! ~
Invité- Invité
Sujets similaires
» rajout de prefixe dans le titre d un nouveau post
» Cherche un script pour pré-remplir le champs "titre" et le contenu du message selon le forum
» colonne trop petite
» Titre invisible selon la hiérarchie du forum choisie
» Decalage des catégories selon resolution d'écran
» Cherche un script pour pré-remplir le champs "titre" et le contenu du message selon le forum
» colonne trop petite
» Titre invisible selon la hiérarchie du forum choisie
» Decalage des catégories selon resolution d'écran
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