Slate: <h2>rubriques portant le même nom sous différentes<h1>les titres renvoient au mauvais endroit.</h1></h2>

Créé le 5 févr. 2018  ·  6Commentaires  ·  Source: slatedocs/slate

Système d'exploitation : Windows 10
Dernière validation en amont : 2245e95e485f9a2e583890a118aadc1bab964eac
Version(s) du navigateur : version bêta de Google Chrome 64.0.3282.140 (version officielle) (64 bits)
Version Ruby (exécuter ruby -v ) : ruby ​​2.3.3p222 (2016-11-21 révision 56859) [x64-mingw32]
Remarque : J'ai également essayé cela sur mon Ubuntu sous Windows avec les éléments suivants
Version Ruby (exécuter ruby -v ) : ruby ​​2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

et produit le même bogue.

Chaque en-tête H2 se voit attribuer une ancre, mais comme mon API permet des opérations similaires à différents niveaux, elles finissent par avoir le même nom (ce qui entraîne des problèmes évidents). Par example:

Chaton

  • Créer
  • Mettre à jour
  • Supprimer

Chiot

  • Créer
  • Mettre à jour
  • Supprimer

Cliquer sur Créer, Mettre à jour ou Supprimer pour les chiots redirigerait l'utilisateur vers les sections portant le même nom dans Chaton (puisque l'ancre apparaît d'abord dans la section sous Chaton).

Peut-être qu'une solution plus robuste consisterait à attribuer des ancres au format <heading1>-<heading2> pour éviter les ancres portant le même nom ? Si c'est encore possible.

Merci!

Commentaire le plus utile

J'espère que cela vous aidera, c'est quelque chose que j'ai trouvé quelque part, mais je ne me souviens pas où. Si vous modifiez unique_head.rb
Remplacez le '@' par '$' et placez le $head_count = {} en dehors de la classe UniqueHeadCounter

Pour moi ça ressemble à ça :

# Unique header generation 
require 'middleman-core/renderers/redcarpet' 

$head_count = {} 

class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML 
  def initialize 
    super 
  end 
  def header(text, header_level) 
    friendly_text = text.parameterize 
    $head_count[friendly_text] ||= 0 
    $head_count[friendly_text] += 1 
    if $head_count[friendly_text] > 1 
      friendly_text += "-#{$head_count[friendly_text]}" 
    end 
    return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>" 
  end 
end

Pour moi, cela a corrigé le bogue d'en-tête multiple avec le même nom.

Tous les 6 commentaires

J'espère que cela vous aidera, c'est quelque chose que j'ai trouvé quelque part, mais je ne me souviens pas où. Si vous modifiez unique_head.rb
Remplacez le '@' par '$' et placez le $head_count = {} en dehors de la classe UniqueHeadCounter

Pour moi ça ressemble à ça :

# Unique header generation 
require 'middleman-core/renderers/redcarpet' 

$head_count = {} 

class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML 
  def initialize 
    super 
  end 
  def header(text, header_level) 
    friendly_text = text.parameterize 
    $head_count[friendly_text] ||= 0 
    $head_count[friendly_text] += 1 
    if $head_count[friendly_text] > 1 
      friendly_text += "-#{$head_count[friendly_text]}" 
    end 
    return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>" 
  end 
end

Pour moi, cela a corrigé le bogue d'en-tête multiple avec le même nom.

Ce serait bien d'avoir une sorte de solution pour cela dans l'ardoise, car je soupçonne que c'est assez courant. Nous l'avons rencontré. Pas sûr que l'ajout d'un décompte soit utile car cela rend très difficile le maintien des liens d'une partie de la documentation à une autre.

Si vous avez :

Chaton

  • Créer
  • Lire
  • Mettre à jour
  • Supprimer

etc, ce serait bien que les ancres soient:

  • chaton
  • chaton-créer
  • chaton-lu
  • chaton-mise à jour
  • chaton-supprimer

Pour que vous puissiez ensuite écrire des liens vers eux dans d'autres parties de la doc.

Je ne suis pas un développeur Ruby, donc je ne sais pas si ce qui précède est réellement implémentable dans la configuration actuelle, alors jetez ceci ici pour discussion.

Tu peux le faire! Voir https://github.com/lord/slate/pull/875#issuecomment -360910127. Il pourrait être bon de créer un article wiki le mentionnant si quelqu'un a le temps.

Tu peux le faire! Voir #875 (commentaire) . Il pourrait être bon de créer un article wiki le mentionnant si quelqu'un a le temps.

Fait!

Merci beaucoup!

Une autre solution possible si vous voulez juste des liens d'en-tête personnalisés est d'utiliser
<span style="display: none"></span> dans l'en-tête.

Par example:
## Non Unique Header

## <span style="display: none">New-</span>Non Unique Header

Ces en-têtes apparaîtront de la même manière, mais les liens seront #non-unique-header et #new-non-unique-header

Cette page vous a été utile?
0 / 5 - 0 notes