Views-Pager in den node-Content verschieben (Drupal 8)
am 12.04.2016 - 20:21 Uhr in
In Drupal 8 habe ich in einer Ansicht (Views) ungefähr folgendes Strukur:
<div class="view-content">
<div class="views-row">
<article data-history-node-id="52" ...>
<header>
<h2 class="node__title">
</h2>
</header>
<div class="node__content clearfix">
Bild
Textkörper
</div>
</article>
</div>
</div>
<nav class="pager" role="navigation" aria-labelledby="pagination-heading">
...
</nav>
Die Ansicht enthält einen Artikel (Node) mit Bild und Textkörper, darunter befindet sich der Views-Pager um weiter zu blättern.
Ich benötige den Pager aber unbedingt an einer anderen Stelle, nämlich genau zwischen Bild und Textkörper, also genau unter dem Bild, über dem Textkörper.
Nun stellt Drupal 8 keine Möglichkeit zur Verfügungn, den Views-Pager an eine andere Stelle zu verschieben.
Kann ich das dennoch irgendwie erreichen?
Änderungen an den Views-Template führen anscheinend auch nicht zum Ziel.
Eventuell wäre eine Lösung mit JQuery möglich. Das ist aber nicht die feinste Art ( verschieben per JQuery), aber wenn es tatsälich keine andere Lösung gibt, wie bindet man JQuery in Drupal 8 nur für eine Seite (Views) ein und erreich das Verschieben?
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
mit einem position relative
am 12.04.2016 - 20:27 Uhr
und einer negativen Zahl für Top, sollte das gehen.
Dann musst du nur dafür sorgen, dass an dieser Position auch Platz ist.
Grüße
Ronald
nicht praktikabel
am 12.04.2016 - 20:49 Uhr
Ja, das habe ich ja schon längst gemacht, allerdings ist das nicht praktikabel:
Derzeit ist der Pager unter dem Textkörper. Der Textkörper hat von Node zu Node unterschiedliche Länge, dies bedeutet, einmal hat der Textkörper nur eine einzige Zeile, ein andermal 5 Zeilen, ein andermal noch mehr Zeilen.
Damit ist es nicht möglich, mit position:relative, top:-XXpx, nach oben zu schieben, da der Pager dann bei jedem Node in einer anderen Höhe erscheint und oft mitten im Textkörper landet, im unternend Ende des Bildes usw.
Das wäre eine einfache, nette Lösung, an die ich sofort gedacht habe, die aber leider nicht durchführbar ist.
DrupalFan schrieb Änderungen
am 13.04.2016 - 13:25 Uhr
Änderungen an den Views-Template führen anscheinend auch nicht zum Ziel.
.
aber genau da sollte das gehen. vielleicht mal cache leeren. hast du auch das template korrekt benannt?
C.A.W. Webdesign
Views-Template gesucht
am 13.04.2016 - 21:47 Uhr
Ich habe noch nicht den richtigen Views-Template gefunden, bei dem man zwischen die einzelnen Felder den Pager verschieben kann.
Weißt Du, wie dieses Template (in Drupal 8) heißt, wo das möglich ist?
Hallo,je nach Installation
am 14.04.2016 - 14:11 Uhr
Hallo,
je nach Profil Installation schau mal unter:
drupal8/core/profiles/standard/config/install/
Da es sich bei Dir um einen Node Artikel handelt, schätze ich dieses File ist richtig:
core.entity_view_display.node.article.default.yml
oder node.type.article.yml
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
core.entity_view_display.node.article.default.yml
am 26.04.2016 - 17:28 Uhr
Hallo,
je nach Profil Installation schau mal unter:
drupal8/core/profiles/standard/config/install/
Da es sich bei Dir um einen Node Artikel handelt, schätze ich dieses File ist richtig:
core.entity_view_display.node.article.default.yml
oder node.type.article.yml
Gruss
Robert
In der Datei
core.entity_view_display.node.article.default.yml
ist folgendes enthalten:
langcode: en
status: true
dependencies:
config:
- field.field.node.article.body
- field.field.node.article.comment
- field.field.node.article.field_image
- field.field.node.article.field_tags
- image.style.large
- node.type.article
module:
- comment
- image
- text
- user
id: node.article.default
targetEntityType: node
bundle: article
mode: default
content:
body:
type: text_default
weight: 0
settings: { }
third_party_settings: { }
label: hidden
comment:
label: above
type: comment_default
weight: 20
settings:
pager_id: 0
third_party_settings: { }
field_image:
type: image
weight: -1
settings:
image_style: large
image_link: ''
third_party_settings: { }
label: hidden
field_tags:
type: entity_reference_label
weight: 10
label: above
settings:
link: true
third_party_settings: { }
comment:
label: above
type: comment_default
weight: 110
settings:
pager_id: 0
third_party_settings: { }
links:
weight: 100
hidden:
field_image: true
field_tags: true
Wie kann man hier die Position des Views Pagers verschieben? weight verändern? Welches genau?
Wie kommt man zwischen 2 Felder einer View row rein?
am 26.04.2016 - 17:40 Uhr
Änderungen an den Views-Template führen anscheinend auch nicht zum Ziel.
.
aber genau da sollte das gehen. vielleicht mal cache leeren. hast du auch das template korrekt benannt?
In der Datei
views-view.html.twig
kann wird mittels
{{ pager }}
in Twig der Pager ausgegeben. In dieser Datei kann man aber nicht auf die einzelnen View rows zugreifen. Es gibt zwar{{ rows }}
, aber mittels Twig mit Stringfunktionen mitten drinnen den Page einfügen ist wohl nicht so einfach (in PHP könnte man das machen).In der Datei
views-view-unformatted.html.twig steht ja
{% if title %}
<h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
{%
set row_classes = [
default_row_class ? 'views-row',
]
%}
<div{{ row.attributes.addClass(row_classes) }}>
{{ row.content }}
</div>
{% endfor %}
und man könnte eventuell mit Twig eingreifen, allerdings lässt sich hier
{{ pager }}
nicht ausgeben, da diese Variable in diesem Template nicht verfügbar ist.Außerdem:
Der Views-Pager gehört nicht nach Row 1 eingefügt, sondern zwischen zwei Felder von Row 1: Der Pager soll zwischen Bild und Bildbeschreibung (Textfeld) eingefügt/ausgegeben werden, nicht am Ende (siehe Aufgabenstellung oben).
Gibt es noch andere Ideen?
Danke.
JQuery insertBefore() ...
am 01.05.2016 - 11:49 Uhr
Wie könnte man in JQuery in Drupal 8 speziell nur in einem Inhaltstyp einbauen (JQuery soll nicht auf allen Seiten aktiviert werden, sondern nur, wenn es gebraucht wird!) um dann ...
... mit JQuery insertBefore() oder prependTo() bzw. insertAfter() oder appendTo() das div-Element des Pagers an eine andere Stelle (also weiter nach oben zwischen die Views-Felder) zu verschieben?
Danke.
Und ist das eine praktikable Lösung, die immer gut funktioniert?
Mit Twig-include lösbar?
am 01.05.2016 - 12:18 Uhr
Oder geht das vielleicht?
Man kann ja in Drupal 8 mittels include in Twig-Dateien einbinden:
Sprich in dem views-Template views-view.html.twig entferne ich einfach den Pager, also diesen Teil:
{% if pager %}
{{ pager }}
{% endif %}
Jetzt könnte man mit include die pager.html.twig einfach in einer anderen Template-Datei, genau zwischen den richtigen Views-Feldern einfügen, ungefähr so:
{% include 'pager.html.twig' %}
Aber ob dieser include-Aufruf z. Bsp. in der Template-Datei views-view-unformatted.html.twig zum korrekten Ergebnis führt, sprich kennt das Template views-view-unformatted.html.twig an dieser Stelle alle Variablen für pager.html.twig ? Oder wie kann man das verstehen, wie funktioniert so ein twig - include?