Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Drupal 8 field: Datum und laufende Nummer (pro Monat)

Eingetragen von DrupalFan (1646)
am 10.07.2017 - 10:48 Uhr in
  • Allgemeines zu Drupal

In Drupal 8 gibt es bei einem Inhaltstyp zwei Datumsfelder (jeweils unlimited, also mehrere Werte möglich):

Es soll in diesem Inhaltstyp nun ein drittes Feld geben, welches eine Art monatliche Seriennummer / laufende Nummer darstellt mit folgendem Inhalt:

2017_07_01 .. für den ersten Inhalt mit Datum Juli
2017_07_02 .. für den zweiten Inhalt mit Datum Juli
2017_07_xx .. bei Nodes mit Datum Juli, laufende Nummer xx erhöht sich automatisch, xx startet jedes Monat bei 1
2017_08_01 .. für den ersten Inhalt mit Datum August
2018_01_01 .. für den ersten Inhalt mit Datum Jänner 2018
usw.

Zu beachten ist, dass das Datum (Monat und Jahr) nicht vom Erstellungsdatum der Nodes sondern von den 2 Datumsfeldern abgeleitet wird: Es wird das niedrigste Datum genommen, falls mehrere Werte gesetzt sind. Es wird das 2. Datumsfeld genommen, falls das 1. leer ist.

Das resultierende Feld soll überall verwendet werden können, also auch als Views-Feld.

Wie kann man so eine monatsbasierte und Datumfeld-basierte laufende Nummer in Drupal 8 realisieren? Danke!

‹ Wie kann ich einen Kalender-Block als Filter einsetzen? Einloggen nicht mehr möglich ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hiund warum nimmt nimmst Du

Eingetragen von Hyp1 (1463)
am 10.07.2017 - 11:27 Uhr

Hi

und warum nimmst Du nicht einfach die Node ID des Inhalts als letzte Sequenznummer?
Dann brauchst Du nicht einmal ein drittes Feld!

2017_07_123456
2017_07_123460
....

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann wäre es einfach

Eingetragen von DrupalFan (1646)
am 10.07.2017 - 13:27 Uhr

Ja, das wäre einfach, aber es wird eben gewünscht, dass dies eine laufende Nummer pro Monat ist (sozusagen die Inhalte für jeden Monat hochgezählt werden).

Aber wie schon gesagt, nicht das Erstellungsdatum der Nodes sondern das Datum von den 2 Datumsfeldern werden genutzt, um monatsweise hochzuzählen! (Da wird es ja dann noch schwieriger, wenn man das Datum danach auch noch ändert, aber das lassen wir mal weg um es einfacher zu machen und überhaupt eine Lösung zu finden).

Eventuell könnte das Modul "Computed Field" helfen, weiß aber nicht, wie man hier den Custom Code schreiben könnte:

Ich würde mit dem Custom Code direkt auf die Datenbank zugreifen, die Nodes zählen, welche vom Datumsfeld in das eine Monat fallen, welches das selbe ist, wie bei dem neuen Node, welcher gerade erstellt wird. So zählt man 1 hoch und schon hat man den richtigen Wert für den neuen Inhalt.

Allerdings wie beginnen (Code-Beispiel)?
Wie greift man in Drupal 8 korrekt auf die Datenbank zu? usw ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Na, dann bin ich mal gespannt

Eingetragen von Hyp1 (1463)
am 10.07.2017 - 14:05 Uhr

Na, dann bin ich mal gespannt wie Du diese Sequenzen hochzählst, wenn mehrere Benutzer gleichzeitg einen Node erstellen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Grundsätzliche Lösung gesucht

Eingetragen von DrupalFan (1646)
am 10.07.2017 - 15:37 Uhr

Dass gleichzeitig eine Node erstellt wird, das kommt nicht vor in diesem Fall, oder man kann es ignorieren. In dem Fall würde man einfach den einen Inhalt (wenn das in 20 Jahren einmal vorkommt) noch einmal editieren oder mit Node_clone duplizieren und schon hätte man das gelöst.

Also es geht wirklich darum, wie man das grundsätzlich lösen kann, wie ein Code-Snippet ungefähr aussehen könnte ... Zugriff auf Datenbank-Tabellen unter Drupal 8 Mittels eigenem PHP-Code? Entweder unter Nutzung des Moduls "Computed Field" oder im .theme file oder in einem kleinen D8 Modul oder ganz anders?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ach so, und wenn dann ein

Eingetragen von Hyp1 (1463)
am 10.07.2017 - 23:53 Uhr

Ach so, und wenn dann ein Node gelöscht wird, berechnest Du alle Menü Links, Referenzen und Sequenzen neu?
Viel Spass dabei!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Computed Field

Eingetragen von DrupalFan (1646)
am 11.07.2017 - 09:56 Uhr

Nein, beim Löschen bleibt alles unverändert. Es könnte aber Auswirkungen auf die Programmierung haben, denn man muss es dann so schlau programmieren, dass gelöschte Nodes nicht dazu führen, dass die nächsten Nodes, die angelegt werden, dann doppelte laufende Nummern haben.

Du hast jetzt die Schwierigkeiten bei dieser Aufgabenstellung aufgezählt in mehreren Postings, das ist schon eine gute Hilfe, denn wenn man beginnt, das zu programmieren, denkt man vielleicht nicht an alles.

Jetzt wäre es aber noch schön, wenn Du ein Code-Beispiel der einen konkreten Lösungsvorschlag wüsstest.

Ich werde es jedenfalls mit "Computed Field" versuchen und den Code dafür selbst schreiben. Vielleicht gibt es ja noch bessere Lösungswege ... Ich finde keinen Beispiel-Code für Drupal 8, darum geht es ja.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sorry,aber wenn die Nummern

Eingetragen von Hyp1 (1463)
am 11.07.2017 - 10:13 Uhr

Sorry,

aber wenn die Nummern in dem Fall ja sowieso nicht fortlaufend sind,
frage ich mich warum Du nicht die Node id nimmst, die eindeutig und j aauch nicht fortlaufend ist?

  • Anmelden oder Registrieren um Kommentare zu schreiben

So programmieren, dass es funktioniert

Eingetragen von DrupalFan (1646)
am 11.07.2017 - 11:42 Uhr

Aber das hast Du ja schon oben geschrieben und das wurde ja schon besprochen.
Warum wiederholst Du dich?

Natürlich wird die fortlaufende Nummer eindeutig sein, dafür muss der Code eben sorgen.

Ich bin es gewohnt, dass man, wenn man ein Problem lösen will, nicht die ganze Zeit an die Probleme denkt, sondern an die Lösung denkt und beim Umsetzen der Lösung eben alle Eventualitäten berücksichtigt - oder anders ausgedrückt: Das nennt man Programmieren!

  • Anmelden oder Registrieren um Kommentare zu schreiben

1.Was für Code möchtest Du

Eingetragen von Hyp1 (1463)
am 11.07.2017 - 12:23 Uhr

1.
Was für Code möchtest Du für etwas, das so nicht funktioniert?
Du schreibst zwar, dass nodes nicht gleichzeitig gespeichert werden,
aber das wiederspricht dem Multithreading!
Du könntest Apache zwar in einem Single Threaded Modus betreiben,
aber das wäre gelinde gesagt "Bullshit"

2.
Hast Du Dir in der Datenbank mal die keys mit auto_increments oder die node ids angesehen!
Sind die fortlaufend?

3.
Sorry, aber das ist nicht Programmieren und ich wünsche Dir bei so einer Lösung viel Spass!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Aufgabenstellung ist halt so wie sie ist

Eingetragen von DrupalFan (1646)
am 11.07.2017 - 13:58 Uhr

Warum glaubst Du mir eigentlich nicht? Wenn Du den Leuten glauben würdest, wäre alles viel einfacher:

1. dieser Inhaltstyp wird nicht für alle sondern nur für Editoren (Benutzerrolle) freigegeben. Und es wird vielleicht nur 1 Editor geben, auch wenn es 2 oder 3 Editoren wären, wird es niemals vorkommen, dass zwei Editoren in der gleichen Zehntelsekunde oder Millisekunde gleichzeitig einen Inhalt von diesem Inhaltstyp erstellen.

Wie schon oben geschrieben, fällt das Problem also weg, und wenn es in 20 Jahren einmal vorkommen würde, merkt das der Editor und löst das Problem mit einem node_clone oder ähnlich. Wieso willst Du auf einem nicht existierenden Problem ewig herumreden? Warum glaubst Du den Leuten nicht? Wenn die Aufgabenstellung so ist, dass es eben nicht vorkommt, dass zwei Nodes glz. erstellt werden, dann ist die Aufgabenstellung! Jeder Programmierer hält sich an die Aufgabenstellung.

2. Natürlich, kenne solche ids mit auto_increments in der Datenbank seit 15 Jahren. Wozu soll ich mir das anschauen, wenn die Aufgabenstellung doch eine andere ist?

3. Für Dich ist es nur deswegen nicht Programmieren, weil Du mit Gewalt die Aufgabenstellung abändern willst. In dem Fall, wo man das mit Gewalt macht, stimmen deine Aussagen doch, aber darum geht es hier doch nicht. Ich werde eine Lösung für die korrekte Aufgabenstellung umsetzen und für die korrekte stimmen deine Annahmen eben nicht.

Aber es wäre doch so einfach für dich, wenn Du einfach schreiben würdest:
"Wenn es tatsächlich stimmt, dass es niemals vorkommt, dass zwei Nodes gleichzeitig erstellt werden, dann ist es einfach und Du kannst folgendermaßen vorgehen .."

Ich klink mich dann hier aus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein Webserver ist halt mal

Eingetragen von Hyp1 (1463)
am 11.07.2017 - 14:12 Uhr

Ein Webserver ist halt mal dafür gedacht auch mehrere Requests gleichzeitig zu empfangen.
Du solltest nochmal die Architektur Deiner Anforderungen überdenken.
Bin gespannt auf die Lösung

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 6 Tagen
  • Hey danke
    vor 2 Wochen 4 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 22 Stunden
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 2 Tagen
  • In der entsprechenden View
    vor 3 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 2 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 4 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 21 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association