Veuillez laisser l’URL là même si elle est bloquée. Vous pouvez discuter si cela a du sens ou non pour vos cas d’utilisation de forum, mais même si le crawl est bloqué, cela peut aider à la désambiguïsation.
Ce n’est toujours qu’une demande polie, et même Google ne la respecte pas toujours. Par exemple, les liens dans Gmail y amènent Googlebot immédiatement et suffisamment de visites entraînent l’indexation et les résultats de recherche.
De plus… nous/vous ne savez pas comment les situations changeront à l’avenir. Si c’est résolu maintenant, il n’y a pas besoin de s’en soucier par la suite. Bien sûr, cela demande du temps de travail, mais il en va de même pour l’investissement et la discussion à ce sujet ![]()
Maintenant, l’attribut datePublished pour DiscussionForumPosting sur la première page diverge de datePublished sur la page=2+ !
première page:
2015-07-05T22:02:58Zpage=2+:
2015-07-05T22:02:57Z
Je ne pense pas que Google fasse confiance aux données divergentes et pourrait donc décider que ces deux URL contiennent des DiscussionForumPosting différents qui ne peuvent pas être combinés.
Mieux vaut utiliser la même source de données sur la première page et la page=2+.
Par exemple, toujours utiliser le datePublished du sujet et jamais du premier message ?
search.google.com/test/rich-results pour la première page
datePublished: 2015-07-05T22:02:58Z
search.google.com/test/rich-results pour la page=2
datePublished: 2015-07-05T22:02:57Z
PR :
Toujours utiliser
datePublisheddu sujet et jamais defirst_post. Cela garantit quedatePublishedest cohérent sur lapremière pageet lapage=2+.
Pas besoin de répétertextsur lapage=2+. Surtout ne pas définirtextsur lapage=2+si ce n’est qu’un résumé et donc pas 100% cohérent avectextsur lapremière page.
Résultats inattendus dans la Google Search Console : conserver l’attributtextsur les pages suivantespage=2+.
Masquer le message « Fermé il y a x jours » de la vue du robot d’exploration
Si un sujet est fermé, un message spécial y est ajouté :
Par exemple, voir Google structured data for forums and profile pages - #15
Bien sûr, ce message a aucun un attribut text vide. Voir validator.schema.org pour …/t/-/286762 –\u003e dernier commentaire :
Rapport dans la Google Search Console
Conclusion
Ainsi, ce type spécial de messages système/d’annonce devrait être exclu de la vue du robot d’exploration.
PR
\u003e Les messages système/d’annonce de type spécial sont exclus de la vue du robot d’exploration car ils n’ont aucun contenu.
\u003e
\u003e Un contenu vide déclenche un problème non critique « Champ "text" manquant (dans "comment") » dans la Google Search Console.
Serait-il plus judicieux de définir les métadonnées du nom d’auteur sur le champ de profil du nom complet lorsqu’il est disponible ? Au moins sur les forums où prioritize username in ux est désactivé (mais je dirais que de toute façon, le champ URL désambiguïse).
Y a-t-il quelque chose qui puisse être fait pour résoudre ce problème ou l’équipe de Discourse doit-elle mettre à jour le cœur du logiciel ?
@rrlevering Concernant cette « pas besoin d’attribut text sur les pages suivantes » / vérification IsExternalContent() :
J’ai ce cas de test sur un domaine live :
Discourse implémente DiscussionForumPosting sur…
première page- URL de la page : https://example.org/t/-/12345- attribut
url:https://example.org/t/-/12345 - attribut
text: – défini – - attribut
author: – défini –
- attribut
page=2- URL de la page : https://example.org/t/-/12345?page=2- attribut
url:https://example.org/t/-/12345 - attribut
text: – pas défini du tout – - attribut
author: – défini –
- attribut
Résultat : Google Search Console (Test live)
première page:
DiscussionForumPostingvalidepage=2:
DiscussionForumPostinginvalide1 problème critique–Il faut spécifier \"text\", \"image\", ou \"video\"
Il n’y a donc soit aucune vérification sur IsExternalContent() ici, soit la vérification suppose que URL de la page est égal à l’attribut url pour
- URL de la page :
https://example.org/t/-/12345?page=2 - attribut
url:
https://example.org/t/-/12345
Donc pour l’instant, nous devons répéter l’attribut text sur les pages suivantes pour obtenir un DiscussionForumPosting valide sur Google Search Console.
Balisage de schéma invalide pour DiscussionForumPosting - uniquement les URL spécifiques de sujet/publication
Sujets concernés : sujets avec plus de 20 publications au total
URL concernées : …/t/-/NNN/7 à …/t/-/NNN/20
Rapport dans ‘Google Rich Result Test’
URL …/t/-/NNN/11 : sujets différents avec des nombres de publications totaux différents (cliquez pour ouvrir)
- Sujet avec 18 publications au total : résultat pour …/t/-/283678/11 valide
- Sujet avec 19 publications au total : résultat pour …/t/-/235984/11 valide
- Sujet avec 20 publications au total : résultat pour …/t/-/264899/11 invalide
- Sujet avec 21 publications au total : résultat pour …/t/-/282382/11 invalide
– Tous les sujets exemples sont ‘fermés’ pour garantir que le nombre total de publications ne change pas. Le bug lui-même affecte également les sujets ‘ouverts’ ! –
URL …/t/-/16968/1 à …/t/-/16968/38 : un sujet avec actuellement 38 publications (cliquez pour ouvrir)
Balisage de schéma valide :
– DiscussionForumPosting lui-même a toujours un attribut inutile position: 1. –
- résultat pour …/t/-/16968 :
Comment-positions 2 à 20 - résultat pour …/t/-/16968/1 :
Comment-positions 2 à 20 - …
- résultat pour …/t/-/16968/6
Comment-positions 2 à 20.
Balisage de schéma invalide : author/datePublished manquant
- résultat pour …/t/-/16968/7
Comment-positions 2 à 21. - résultat pour …/t/-/16968/8
Comment-positions 3 à 22. - …
- résultat pour …/t/-/16968/20
Comment-positions 15 à 34.
Balisage de schéma à nouveau valide : (ici : @page > 1 est true) :
-
résultat pour …/t/-/16968/21 :
Comment-positions 16 à 35 -
résultat pour …/t/-/16968/22 :
Comment-positions 17 à 36 -
…
-
résultat pour …/t/-/16968/24 :
Comment-positions 19 à 38 -
résultat pour …/t/-/16968/25 : inclut actuellement
Comment-positions 19 à 38 -
…
-
résultat pour …/t/-/16968/38 – dernière publication actuelle : inclut actuellement
Comment-positions 19 à 38 -
…
-
résultat pour …/t/-/16968/999 – publication inexistante élevée : inclut actuellement
Comment-positions 19 à 38
Considérations techniques
1. `@topic_view.prev_page` n'est peut-être pas la meilleure solution pour décider d'afficher ou non `author`/`datePublished`.
app/views/topics/show.html.erb#L53-L60
<% if @topic_view.prev_page %>
<meta itemprop='datePublished' content='<%= @topic_view.topic.created_at.to_formatted_s(:iso8601) %>'>
<span itemprop='author' itemscope itemtype="http://schema.org/Person">
<meta itemprop='name' content='<%= @topic_view.topic.user.username %>'>
<link itemprop='url' href='<%= Discourse.base_url %>/u/<%= @topic_view.topic.user.username %>'>
</span>
<meta itemprop='text' content='<%= @topic_view.topic.excerpt %>'>
<% end %>
2. L'implémentation de `@topic_view.prev_page` pourrait être buggée en soi.
lib/topic_view.rb#L113-L115
lib/topic_view.rb#L128-L130
lib/topic_view.rb#L193-L195
@post_number = [@post_number.to_i, 1].max
# ---
@page = @page.to_i > 1 ? @page.to_i : calculate_page
# ---
def prev_page
@page > 1 && posts.size > 0 ? @page - 1 : nil
end
Y a-t-il un bug ici ?
lib/topic_view.rb#L751-L755
def calculate_page
posts_count =
is_mega_topic? ? @post_number : unfiltered_posts.where("post_number <= ?", @post_number).count
((posts_count - 1) / @limit) + 1
end
calculate_pagepeut-il donner des résultats inattendus car il utilise le@post_numberactuel et échoue d’une manière ou d’une autre pour les valeurs 7 à 20 ?((posts_count - 1) / @limit) + 1donne quelque chose comme :
((7 - 1) / 20) + 1 = 1.3 = 1- Quel est le numéro de page attendu ? Peut-être calculer avec des valeurs non entières, puis arrondir le nombre comme prévu via
floor/ceilet convertir en entier :
(((posts_count - 1.0) / (@limit + 0.0)) + 1.0).floor.to_i - Peut-être vérifier
unfiltered_posts.where("post_number <= ?", @post_number)car@topic.postspourrait ne pas contenir toutes les publications à partir de post_1 comme prévu.
lib/topic_view.rb#L53-L55
lib/topic_view.rb#L119-L127
lib/topic_view.rb#L835-L841
def self.chunk_size
20
end
# ---
@chunk_size =
case
when @print
TopicView.print_chunk_size
else
TopicView.chunk_size
end
@limit ||= @chunk_size
# ---
def unfiltered_posts
result = filter_post_types(@topic.posts)
result = result.with_deleted if @guardian.can_see_deleted_posts?(@topic.category)
result = result.where("user_id IS NOT NULL") if @exclude_deleted_users
result = result.where(hidden: false) if @exclude_hidden
result
end
Conclusion
Dans ce cas particulier…
- sujets avec plus de 20 publications au total
…/t/-/NNN/7à…/t/-/NNN/20
… la première publication ne faisait pas partie de la vue actuelle et @topic_view.prev_page ne s’est pas déclenché car la vue était toujours sur la première page.
Ainsi, tous les attributs du schéma de microdonnées DiscussionForumPosting qui n’étaient rendus que dans le contexte de la première publication ou lorsque @topic_view.prev_page == true étaient manquants.
PR
Certains attributs du schéma de microdonnées
DiscussionForumPostingsont rendus dans le contexte de la première publication. Assurez-vous que ces attributs sont également définis si la première publication ne fait pas partie de la vue actuelle.
Hmm… C’est inattendu. Je suis désolé pour le désagrément, je pense que cette vérification de comparaison d’URL supprime les paramètres de requête lors de la comparaison. Je vais déployer un correctif.
Une mise à jour concernant cette correction ?
Je pense que le correctif déployé cette semaine prend en compte les paramètres de requête dans la vérification « s’agit-il d’une URL externe ». Ainsi, les forums qui font référence aux OP à partir d’une URL différente par paramètre de requête (foo vs. foo?page=2) n’auront pas d’erreurs signalées dans GSC.
Croyez que le correctif déployé cette semaine pour prendre en compte les paramètres de requête dans la vérification « s’agit-il d’une URL externe »
@rrlevering sur une autre plateforme de forum, vous recommandez l’imbrication dans le schéma comment - Schema.org Property pour chaque publication dans un fil de discussion. Il ne semble pas que Discourse fasse cela. Le recommandez-vous toujours ?
Discourse imbrique le schéma Comment pour chaque publication dans le fil. Consultez Schema Markup Validator et ouvrez l’objet DiscussionForumPosting pour voir les commentaires imbriqués.
Merci ! Je l’avais manqué imbriqué dans le DiscussionForumPosting.




