In meiner Ruby on Rails App zeige ich mehrere paginierte Elemente auf einer einzigen Seite. Für die Paginierung einzelner Elemente kann ich die Paginierung und die Attribute rel='prev'
und 'next'
Attribute und kanonisch verwenden. Aber in meinem Fall kann es mehrere Permutationen und Kombinationen einer Seite geben, und das verwirrt mich. Aus der Sicht eines Anwenders wird er/sie glücklich sein, verschiedene Arten von Informationen zu einem Objekt auf einer einzelnen Seite und Paginierungen zu sehen. Aber aus der Sicht der Suchmaschinen ist es nicht so freundlich und kann teilweise doppelte Inhalte verursachen. Meine Absicht ist es, für die Indexseite und google, um den Inhalt aus dem Index und paginierten Seiten zu finden. Einige dieser Elemente sind auch von anderen Seiten in verschiedenen Auflistungen auf der separaten Seite zugänglich. Außerdem möchte ich eine sitemap.xml-Datei erstellen.Kaminari: Mehrere Paginierungen auf einer Seite, Indexierung und kanonische
So habe ich folgende Optionen:
nur Indexseite im Index behalten und der Rest der paginierte Seiten in Noindex machen mit Roboter Meta-Tag.
Verwenden Sie kanonische URLs aus der Anforderungs-URL und verwenden Sie nicht rel = 'prev' und 'next', da sonst 10x10 = 100 Variationen der Seite verursacht werden, wenn jedes Element 10 Seiten enthält.
- Verwenden Sie kanonische URLs und rel = 'next' und 'prev' für eines der paginierten Elemente und ignorieren Sie den Rest der URLs oder verwenden Sie das noindex-Meta-Tag für den Rest der URLs. Ich lehne diese Lösung an. So wird es effektiv eine Seitenumbruch auf meiner Seite und Rest der URLs nicht stören.
- Oder ich sollte nur einen einzigen
page
Parameter verwenden und diesen verwenden, um alle anderen paginierten Modelle sowie zu paginieren. Und wenn eines der Elemente keine weiteren Seiten mehr enthält, sollte ich den Inhalt der letzten Seite für dieses Element anzeigen und andere Elemente paginieren. Aber ich weiß nicht, wie kann ich das mit Kaminari machen? Ab sofort verwende ich drei verschiedene page_param, um diese Modelle zu paginieren. Ich denke, es wird die bevorzugte und bessere Lösung sein.
Hier ist mein aktueller Code:
def show
@state = State.published.friendly.find(params[:id])
@cities = @state.cities.published.sorted.page(params[:page]).per(10)
@events = @state.events.published.sorted.page(params[:cities_page]).includes(:cities).per(10)
@articles = @state.articles.published.sorted.includes(:user).page(params[:articles_page]).per(10)
add_breadcrumb 'States', states_url
add_breadcrumb @state.name, @state
end
und Städte Seite hat zwei paginierte Artikel, Veranstaltungen und Nachrichten aus dieser Stadt. Ich zeige diese drei paginierten Elemente mit Tabs.