Wie füge ich einem Datumsfeld in Ansichten zusätzliche Klassen hinzu?


7

Ich benutze Drupal 7 . Ich habe eine Ansicht erstellt, die ein Datumsfeld verwendet. Ich möchte zusätzliche Klassen zum Datumsfeld für diese bestimmte Ansicht erstellen.

Zum Beispiel,

<div class="field-content">
 <span class="date">10</span>
 <span class="month">June</span>
 <span class="year">2011</span>
 <span class="time"> 8:00 </span>
</div>

Jetzt habe ich einen Code:

<div class="field-content">
 <span class="date-display-single">10 June 2011, 8:00</span>
</div>

Wie kann ich das Schritt für Schritt machen?

Antworten:


3
  1. Sie müssen das Token-Modul (die neueste Beta-Version enthält Feld-Token) und das benutzerdefinierte Formatierungsmodul von http://drupal.org/project/custom_formatters installieren .

  2. Aktivieren Sie es dann auf der Modulseite.

  3. Gehen Sie zu admin-> Struktur-> Formatierer.

  4. Fügen Sie einen neuen Formatierer hinzu und geben Sie ihm einen Namen, den Sie mögen.

  5. Format: HTML + Token

  6. Feldtyp: Datum

  7. Formatierer:

    <span class="day">[node:source:field-datefieldname:custom:j]</span>
    <span class="month">[node:source:field-datefieldname:custom:F]</span>
    <span class="year">[node:source:field-datefieldname:custom:Y]</span>
  8. speichern

Jetzt haben Sie einen benutzerdefinierten Datumsformatierer erstellt, den Sie in Ihrer Ansicht verwenden können!


4

Sie können dies ohne zusätzliche Module tun.

  1. Fügen Sie das Datumsfeld hinzu. Schließen Sie dies von der Anzeige aus. Wählen Sie Benutzerdefiniert und schreiben Sie d in das Feld (wie im PHP-Datum für den Tag). Ändern Sie die 'Stileinstellungen' - Feld HMTL anpassen (auf keine gesetzt) ​​und Feld- und Etiketten-Wrapper-HTML anpassen (auf keine gesetzt).Drupal Datumsfeld
  2. Fügen Sie das Datumsfeld erneut hinzu. Schließen Sie dies auch von der Anzeige aus. Wählen Sie Benutzerdefiniert und schreiben Sie M in das Feld (wie im PHP-Datum für den Monat). Ändern Sie die 'Stileinstellungen' - Feld HMTL anpassen (auf keine gesetzt) ​​und Feld- und Etiketten-Wrapper-HTML anpassen (auf keine gesetzt).
  3. Fügen Sie das Datumsfeld erneut hinzu. Schließen Sie dies auch von der Anzeige aus. Wählen Sie Benutzerdefiniert und schreiben Sie Y in das Feld (wie im PHP-Datum für das Jahr). Ändern Sie die 'Stileinstellungen' - Feld HMTL anpassen (auf keine gesetzt) ​​und Feld- und Etiketten-Wrapper-HTML anpassen (auf keine gesetzt).
  4. Fügen Sie das Datumsfeld erneut hinzu (LETZTES MAL!). Schließen Sie dies nicht von der Anzeige aus. Wählen Sie Benutzerdefiniert und schreiben Sie G: i (wie im PHP-Datum für die Stunden und Minuten). Ändern Sie die 'Stileinstellungen' - Feld HMTL anpassen (auf keine gesetzt) ​​und Feld- und Etiketten-Wrapper-HTML anpassen (auf keine gesetzt).
  5. Schreiben Sie die Ergebnisse dieses endgültigen Datumsfelds neu. Mit den Ersatzmustern können Sie dann Folgendes schreiben:

    <div class="date">
      <span class="day">
        [created]
      </span>
      <span class="month">
        [created_1]
      </span>
      <span class="year">
        [created_2]
      </span>
    </div>

Drupal Rewrite Ergebnisse


1
Dies scheint eine großartige Methode für das Erstellungsdatum zu sein, aber es scheint, dass Sie das "Benutzerdefinierte Format" nicht auswählen können, wenn Sie ein Datumsmodulfeld verwenden, das einem Inhaltstyp hinzugefügt wurde.
Mark

1
@Mark, wenn Sie auf dieses Problem stoßen, können Sie Ihre Datumsformate mit / admin / config / regional / date-time hinzufügen. In den Schritten 1 bis 3 wählen Sie das entsprechende Format aus der Dropdown-Liste anstelle von benutzerdefiniert aus.
Webdrips

3

Eine relativ schnelle (wenn Sie PHP schreiben können), aber leicht hackige Lösung wäre, die Vorlage für dieses Feld zu überschreiben (siehe Themengrundlagen für Ansichten ), den Rohdatumwert mit PHP zu verarbeiten, um die einzelnen Teile herauszunehmen und sie dann mit zusammenzukleben das HTML Ihrer Wahl.

Alternativ könnte man einen benutzerdefinierten Datumsfeldformatierer schreiben ( hier ist jemand, der das für D6 getan hat). Dies wäre eine gute Lösung, wenn Sie den benutzerdefinierten Formatierer in Ihren Knoten wiederverwenden möchten.


1

Dies ist über die Benutzeroberfläche von Ansichten nicht möglich. Sie würden ein ziemlich komplexes Stück Code benötigen, und ich wäre gespannt auf Ihren Anwendungsfall, bevor ich Sie ermutige, dies herauszufinden.

Wenn Sie fragen, wie Sie dem gesamten Feld Klassen hinzufügen können, lautet die Antwort ungefähr so:

  1. Klicken Sie in der Ansichtsoberfläche auf das Feld.

  2. Erweitern Sie das Feldset "Stileinstellungen".

  3. Aktivieren Sie das Kontrollkästchen "Feld-HTML anpassen" und anschließend das Kontrollkästchen "CSS-Klasse erstellen".

  4. Geben Sie Ihre gewünschte Klasse ein.

Vielleicht reicht diese Lösung aus. Ansonsten wünsche ich dir viel Glück.


2
Vielen Dank für die Antwort, aber Ihre Lösung hilft nur dabei, die Klasse für das gesamte Feld zu ändern. Ich kann dann keine separaten Datumsangaben erstellen.

1
Dann ist das Schreiben eines benutzerdefinierten Formatierers wahrscheinlich Ihre einzige echte Option. Wenn das Datum die Themenebene erreicht, wird es vollständig verarbeitet. Informationen zum Abrufen von Rohdaten und gerenderten Felddaten finden Sie unter Hilfsfunktion .
tim.plunkett

1

Das ist wirklich einfach (sobald Sie wissen wie)

Verwenden Sie ein benutzerdefiniertes Feld für die Anzeigesuite

Gehen Sie zu admin / structure / ds / fields

(Im Menü: Struktur -> Suite anzeigen -> Felder)

Klicken Sie auf Codefeld hinzufügen

Für meinen Anwendungsfall habe ich Folgendes eingegeben

Etikette

Etwas

Entitäten

Knoten

Feld begrenzen

Leer gelassen

Feldcode

<div>
  <span class="mf-month">[node:created:custom:M]</span> 
  <span class="mf-day">[node:created:custom:d]</span>
</div>

Zeichen

überprüft

Wenn Sie das Feld erstellt haben, wechseln Sie zur Seite zum Anzeigen der Anzeige für den Inhaltstyp und den Ansichtsmodus, den Sie anpassen, und wählen Sie das neue benutzerdefinierte Feld aus.

Screenshot des obigen Setups

Screenshot der Einstellungsseite

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.