Un sito che frequento ha una personalizzazione sulla scheda utente che include un link a un sito esterno specifico per ogni utente (in pratica un profilo utente). Tuttavia, cliccando su questo link la pagina si apre nella scheda corrente, nonostante io abbia abilitato l’impostazione “Apri tutti i link esterni in una nuova scheda”. Esiste un modo per l’amministratore di fare riferimento all’impostazione “Apri tutti i link esterni in una nuova scheda” di un utente in modo che venga rispettata?
Sai di che tema/componente si tratta? Penso che sarebbe il posto giusto per sollevare la questione, magari può essere aggiornato per tenere conto dell’impostazione del sito. ![]()
Ho presunto che fosse personalizzato, ma posso verificarlo con l’amministratore.
Sembra che l’amministratore abbia un campo utente personalizzato per il link al profilo esterno dell’utente e poi abbia creato un tema personalizzato. Hanno seguito le istruzioni da (Retired) Use an ID in a custom user field to link to a user's external profile. Dovrei semplicemente chiedere lì come utilizzare l’impostazione utente relativa all’apertura in una nuova scheda?
Penso che dipenda se vuoi che utilizzi l’impostazione; la personalizzazione non ne tiene conto, anche se sembra aggiungere il target in modo appropriato:
Includere target='_blank' aprirà in una nuova scheda/finestra indipendentemente dall’impostazione del sito, poiché non interagiscono.
Sul sito in cui i link non si aprono in nuove schede, quando controlli il sorgente, i link contengono quel valore target?
Se volessero controllare le impostazioni del sito, potrebbero fare qualcosa di simile all’interno di quella personalizzazione esistente
// impostare le variabili siteSettings e target:
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""
// modificare l'istruzione if in cui viene creato il link per utilizzare la variabile target:
if (userFields && userFields[userFieldId]) {
const url = "http://myawesomewebsite.com/user/" + userFields[userFieldId];
const link = `<a href="${url}" target="${target}">${url}</a>`;
return Ember.Object.create({ link, name: externalUserIdField.get('name') });
} else {
return null;
}
C’è un modo per controllare comunque le impostazioni dell’utente? La mia comprensione è che l’impostazione del sito sia solo l’impostazione predefinita per i nuovi utenti, ma idealmente questo link dovrebbe rispettare le modifiche che gli utenti hanno apportato alle proprie impostazioni. Un utente potrebbe volerlo aprire nella stessa scheda mentre un altro utente potrebbe volerlo aprire in una nuova scheda.
Ah giusto, ho trascurato la parte “user”
scusa
Non è molto diverso usare l’impostazione utente, dovresti solo cambiare le prime due costanti per fare riferimento all’utente:
// imposta la variabile user e target:
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""
e poi tutto il resto sarebbe lo stesso.
Se questo dovesse funzionare più come il core, controlleremmo se l’utente esiste e, in caso contrario, torneremmo all’impostazione del sito:
// imposta le variabili user, siteSettings e target:
const user = api.getCurrentUser()
const siteSettings = api.container.lookup('site-settings:main');
let target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : "";
if (user) { // se l'utente esiste, imposta il target in base all'opzione utente
target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
}
// modifica l'istruzione if in cui viene creato il link per utilizzare la variabile target:
if (userFields && userFields[userFieldId]) {
const url = "http://myawesomewebsite.com/user/" + userFields[userFieldId];
const link = `<a href="${url}" target="${target}">${url}</a>`;
return Ember.Object.create({ link, name: externalUserIdField.get('name') });
} else {
return null;
}
Ha funzionato perfettamente, grazie!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.