[Risolto] Eliminare nodo dopo "To Date"

7 contenuti / 0 new
Ultimo contenuto
[Risolto] Eliminare nodo dopo "To Date"

Ciao a tutti.
Sto cercando di trovare un modo automatico per eliminare un tipo di contenuto "Evento" dopo un certo numero di giorni/ore oltre il "To date" che è presente in un cck field di tipo Date. Sono quindi costretto a scartare i vari Node Expire, Auto Expire e Scheduler. Questi contenuti vengono creati dagli utenti. L'unica cosa che mi viene in mente è quella di creare una view "amministrativa" e con VBO cancellare a mano ogni giorno. Diciamo che questo è il mio piano di riserva, però mi piacerebbe trovare qualcosa di più automatico.
Avete qualche suggerimento?

Puoi usare Rules + Token.
Mediante la schedulazione puoi pianificare la cancellazione dopo tot giorni da un determinato evento.

Per esempio:
- Crei la Triggered Rules che parte alla creazione o all'aggiornamento di un nodo
- Fai partire una Rule Set "Schedulata" che prende mediante token il Campo CCK con la data + Giorni che voglio fare passare
- Alla data parte la schedulazione che cancella il nodo

menteora wrote:
Follow me on Twitter: @menteora & @Dinamicamente.org
Blog: www.dinamicamente.org

Ok, oggi pomeriggio faccio delle prove e ti faccio sapere!

Bene, tutto risolto.
Ecco la spiegazione passo per passo.

1. Andare in "admin/rules/rule_sets" e cliccare su "Add a new rule set"
2. Riempire la casella label con qualcosa del tipo "Delete content {rule set}"
3. Scegliere "Content" come tipo di argomento e nel machine-readable name scrivere "delete_content_content"
4. Salvare ed entrare nel rule set appena creato ("Delete content {rule set}")
5. Cliccare su "Add new rule"
6. Chiamiamola "Delete action {rule}" e salviamo
7. Cliccare su "Add an action" e selezionare "Node|Publish content" dal menu a tendina
8. Dopo aver cliccato su "Next" lasciare tutto invariato tranne il label, da cambiare in "Delete content {action}" e salvare
9. Andare in "admin/rules/trigger" e cliccare su "Add a new rule"
10. Riempire la casella label con "Deleting rule {triggered rule}" e selezionare "Node|After saving new content"
11. Salvare e cliccare su "Add an action"
12. Selezionare dal menu a tendina "Rule Scheduler|Delete content {rule set}" e cliccare su "Next"
13. Cambiare il label aggiungendo alla fine "{action}"
14. Nella casella "Identifier" scrivere "node [node:nid]" (in modo da avere l'ID del contenuto che sarà cancellato)
15. In "Scheduled evaluation date", utilizzando i Token, scrivere "[node:field_date-to-datetime]" dove "field_date" è il nome del CCK Field.
16. Salvare e tornare in "admin/rules/trigger".
17. Clonare "Deleting rule {triggered rule}" e rinominarla con qualcosa del tipo "Deleting rule {triggered rule} on updating"
18. Cambiare l'event da "After saving new content" a "After updating existent content"
19. Salvare e aggiungere una condizione ("Add a condition") di tipo "Numeric comparison"
20. In "Number 1" digitare "[node:field_date-to-datetime]"
21. Scegliere "Greater than" come "Operation"
22. E scrivere in "Number 2" (deve essere abilitato il PHP Filter): <?php echo time(); ?>

In questo modo il contenuto viene cancellato due ore dopo la scadenza presente nel CCK Field (parte "To Date"). Questo perché Rules Scheduler salva le date in GMT/UTC. A me non interessa, dato che voglio che il contenuto sia cancellato circa un giorno dopo (ora più, ora meno), perciò cambierò il valore di "Scheduled evaluation date" aggiungendo un +1day.

Ciao, scusate se riapro.
Facendo così i tuoi contenuti vengono cancellati o non pubblicati?

Grazie.

Sinceramente non mi ricordo, è passato un po' di tempo :).
Ti consiglio di provare e vedere tu stesso!

my errore non avevo attivato rules scheduler e quindi mi fermavo al punto 13;

tutto questo si puo' fare anche con cron e hook_cron scrivendo codice apposito ?

ci sono invece comunque vantaggi ad usare rules?

per riciamare una funzione una volta al giorno serve per forza usare il cron (credo che comnque rules lo vada ad usare) o vi sono altre soluzioni?