Como alavancar a configuração "Abrir todos os links externos em uma nova guia" nas personalizações do site

Um site que frequento tem uma personalização no cartão do usuário que inclui um link para um site externo específico para cada usuário (basicamente, um perfil de usuário). No entanto, clicar neste link abre a página na aba atual, apesar de eu ter a configuração “Abrir todos os links externos em uma nova aba” habilitada. Existe alguma maneira para o administrador referenciar a configuração “Abrir todos os links externos em uma nova aba” de um usuário para que isso seja respeitado?

1 curtida

Você sabe qual tema/componente é? Acho que seria o lugar para mencioná-lo, talvez ele possa ser atualizado para levar em conta a configuração do site. :slight_smile:

Eu assumi que era apenas feito sob medida, mas posso verificar com o administrador.

Parece que o administrador tem um campo de usuário personalizado para o link do perfil externo do usuário e, em seguida, criou um tema personalizado. Eles seguiram as instruções de (Retired) Use an ID in a custom user field to link to a user's external profile. Devo apenas perguntar lá como utilizar a configuração do usuário sobre abrir em uma nova aba?

Eu acho que depende se você quer que ele use a configuração; a personalização não a leva em consideração, embora pareça que adiciona o target apropriadamente:

Incluir target='_blank' abrirá em uma nova aba/janela, independentemente da configuração do site, já que eles não interagem.

No site onde os links não estão abrindo em novas abas, quando você verifica o código-fonte, os links contêm esse valor target?

2 curtidas

Se eles quisessem verificar as configurações do site, poderiam fazer algo assim dentro dessa personalização existente

// configura as variáveis siteSettings e target:
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""


// modifica a instrução if onde o link é criado para usar a variável 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;
}
1 curtida

Existe uma maneira de verificar a configuração do usuário? Minha compreensão é que a configuração do site é apenas o padrão para novos usuários, mas idealmente este link honraria as alterações que os usuários fizeram em suas próprias configurações. Um usuário pode querer que ele abra na mesma guia, enquanto outro usuário pode querer que ele abra em uma nova guia.

1 curtida

Ah certo, eu negligenciei a parte “usuário” :sweat_smile: desculpe

Não é muito diferente usar a configuração do usuário, você só precisaria alterar as duas primeiras constantes para referenciar o usuário:

// configura a variável de usuário e destino:
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""

e então todo o resto seria o mesmo.

Se isso fosse funcionar mais como o core, verificaríamos se o usuário existe e, se não existir, recorreríamos à configuração do site:

// configura as variáveis de usuário, siteSettings e destino:
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 o usuário existir, defina o destino com base na opção do usuário
 target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
} 

// modifique a instrução if onde o link é criado para usar a variável de destino: 
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;
}
2 curtidas

Funcionou perfeitamente, obrigado!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.