Ciao a tutti,
vi espongo il mio piccolo problema. Con views dovrei realizzare (se fattibile) una vista che mi riepiloghi i contenuti inserito da un utente (tramite contextual filters, ovviamente) e anche i nodi flaggati in un certo modo dallo stesso utente.
Quello che sto tendando di ricreare è la funzione retweet di Twetter: al click sul flag il post viene retweettato e su una pagina del profilo dell'utente compare il post retweettato, anche se quel post non è stato creato dall'utente. Con view ci sono arrivato a metà, nel senso che, impostato il contextual filter e la relazione con il flag mi mostra unicamente i nodi creati dall'utente ma non quelli flaggati (perchè dalla query si aspetta che quei nodi siano anche creati dall'utente stesso). Per comprendere meglio vi allego la query che mi fa view:
SELECT flag_content_node.timestamp AS flag_content_node_timestamp, node.created AS node_created, node.nid AS nid
FROM
{node} node
LEFT JOIN {flag_content} flag_content_node ON node.nid = flag_content_node.content_id AND (flag_content_node.fid = '10' AND flag_content_node.uid = '1')
WHERE (( (node.uid = '1' ) )AND(( (node.status = '1') AND (node.type IN ('exibition')) )OR( (flag_content_node.uid IS NOT NULL ) )))
ORDER BY flag_content_node_timestamp DESC, node_created DESC
LIMIT 10 OFFSET 0
C'è un modo per farlo con views (che mi andrebbe meglio, per un fattore gestionale) o semplicemente vado a fare un modulo con la mia query personalizzata?
Grazie a tutti!
EDIT: La query che a me interessa avere è la sequente (provata via riga di comando e funziona):
SELECT node.title AS node_title, node.nid AS nid, users_node.name AS users_node_name, users_node.uid AS users_node_uid, flag_content_node.timestamp AS flag_content_node_timestamp, node.created AS node_created
FROM
main_node node
INNER JOIN main_users users_node ON node.uid = users_node.uid
LEFT JOIN main_flag_content flag_content_node ON node.nid = flag_content_node.content_id AND (flag_content_node.fid = '10' AND flag_content_node.uid = '1')
WHERE (node.type IN ('exibition') AND node.status = '1') AND ((node.uid = '1' ) OR (flag_content_node.uid = '1' ))
ORDER BY flag_content_node_timestamp DESC, node_created DESC
LIMIT 10 OFFSET 0
Il problema, da quello che ho visto, è l'ordine delle condizioni. C'è un modo per cambiarle?
Ciao. secondo me sbagli qualche cosa nella impostazione della query, perché a flag non interessa flaggare i contenuti dell'utente, anche perché: che senso avrebbe ? Se li ho creati io perché dovrei flag-garli ?
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
Yes, appunto!
Pensandoci bene, ho compreso che il funzionamento del retweet necessita per forza di cose di una tabella intermedia. Praticamente, a delle azioni prestabilite (come ad esempio il salvataggio di un nodo o il flag) vado a salvarmi le informazioni che mi servono su questa tabella, in modo da avere le informazioni minime per poi fare quello che mi serve. Vedrò anche di renderla compatibile con views, in modo da lavorare più agevolmente con i dati.
Vi terrò informati, potrebbe essere una funzionalità interessante!
;)