You are here

Επανάληψη άρθρων ανά ημερομηνία

8 posts / 0 new
Τελευταία δημοσίευση
Επανάληψη άρθρων ανά ημερομηνία

Γεια σας. Θα ήθελα να ρωτήσω πως θα μπορούσα να κάνω μια επανάληψη άρθρων σε blog με βάση την ημερομηνία. Δηλαδή μια στήλη "σαν σήμερα" που τραβάει από ένα view άρθρα από προηγούμενα χρόνια με βάση την σημερινή ημερομηνία. Οπότε σήμερα 13 Μαίου 2017 θα τραβάει άρθρα από το 13 Μαίου 2016,2015,2014 κτλ.

Στο view επιλέγω το Post date = (is equal to) και βγάζει 2 επιλογές:

  1. A date in any machine readable format. CCYY-MM-DD HH:MM:SS is preferred.
  2. An offset from the current time such as "+1 day" or "-2 hours -30 minutes"

Τι επιλέγω και τι βάζω σαν τιμή;

Ευχαριστώ,

ΣυνημμένοΜέγεθος
Image icon Add or34.39 KB
Image icon Create new filter group24.1 KB
Image icon Or operator16.89 KB
tags: 
Drupal version: 
module: 
Edited by: kostask on 24 Μάιος 2017 - 3:22μμ

Αυτό?
https://www.drupal.org/project/onthisday

---

Αν θέλεις κάτι πιο custom:

Θα πρότεινα στη view σου να βάλεις στη δεύτερη επιλογή "-1 year". Αυτό θα προσθέσει ένα WHERE condition στο query σου.
Μετά υλοποίησε το hook_views_query_alter σε ένα custom module, και σε ένα loop πρόσθεσε όσα ακόμα OR conditions θέλεις, δηλαδή ένα για κάθε χρόνο. Για παράδειγμα, βρες το date του παλιότερου άρθρου σου και κάνε ένα loop από το τρέχον έτος μέχρι εκείνο.

Με το dpq του devel module θα μπορέσεις να δεις πώς είναι δομημένο το query σου για να καταλάβεις πού και πώς να προσθέσεις τα καινούργια OR.

hook_views_query_alter:
https://api.drupal.org/api/views/views.api.php/function/hook_views_query...
https://api.drupal.org/api/drupal/core!modules!views!views.api.php/funct...

Παραδείγματα για προσθήκη WHERE:
https://drupal.stackexchange.com/questions/76651/how-to-use-hook-views-q...
https://www.drupal.org/node/2788577

dpq:
https://api.drupal.org/api/devel/devel.module/function/dpq/7.x-1.x
https://www.webwash.net/how-to-print-sql-string-using-devel-module/

Ευχαριστώ για τις πληροφορίες. Έχω αρκετό διάβασμα από ότι κατάλαβα για να το κάνω αυτό.
Νόμιζα ότι θα ήταν πιο απλό για να βάλω ένα ακόμα φίλτρο στα views.

Στην λογική που περιγράφει ο efpapado "Θα πρότεινα στη view σου να βάλεις στη δεύτερη επιλογή "-1 year". Αυτό θα προσθέσει ένα WHERE condition στο query σου." και χωρίς κώδικα πρόσθεσε και ακόμα ένα φλίτρο για -2 year, -3 year, -4 year & -5 year. Έπειτα βάλε όλα αυτά τα φίλτα σε OR group. Έτσι θα έχεις τα άρθρα σαν σήμερα μέχρι 5 χρόνια πίσω. Δεν είναι τέλειο, αλλά δε θέλει κώδικα.

Ευχαριστώ Κώστα. Είναι μια πιο άμεση λύση μέχρι να δουλέψω λίγο σε κώδικα για καλύτερα αποτελέσματα.

Πρόσθεσα στο issue 3 screenshots που δείχνουν το πώς το κάνεις:

1. Filter criteria: And/Or, Reaarange
2. Create new filter group
3. Operator OR

Έβαλα αυτά για να δοκιμάσω
views
αλλά δεν επιστρέφει κάτι όταν δίνω ημερομηνία. Το exposed φίλτρο θα αφαιρεθεί μόλις βγει live αλλά τώρα ήθελα να δοκιμάσω πως φαίνεται.

Στο φίλτρο σου πρέπει να βάλεις "Date", απ' τις ρυθμίσεις του οποίου θα επιλέξεις ποιο field θα χρησιμοποιηθεί (το created), και θα του δώσεις granularity: day.

Αν χρησιμοποιήσεις ως φίλτρο απ'ευθείας το "created" και βάλεις τιμή 1 χρόνο πριν, θα ψάξει για nodes που δημιουργήθηκαν ακριβώς το συγκεκριμένο δευτερόλεπτο 1 χρόνο πριν (δλδ current timestamp μείον 31.536.000 δευτερόλεπτα)

Το views date field/filter/sort σου επιτρέπει να ορίσεις granularity. Έτσι μπορείς να δώσεις στην τιμή σου περιθώριο ώρας, ημέρας, μήνα κλπ.
Αν λοιπόν βάλεις granularity: day, και δώσεις timestamp που αντιστοιχεί σε "2017-12-31 11:25:36" για ένα χρόνο πριν, δεν θα ψάξει για την τιμή 2016-12-31 11:25:36 αλλά για οτιδήποτε βρίσκεται στο διάστιμα 2017-12-31 00:00:00 μέχρι 2017-12-31 23:59:59