Mam kilka niepublikowanych węzłów, dla których mam ich identyfikatory. Jak mogę je programowo opublikować? Czy poprawne jest osiągnięcie tego w niestandardowym module za pomocą zapytania takiego jak poniżej?
db_query("UPDATE {node} SET status = 1 WHERE nid = %d", $nid)
node_revision
, więc spowoduje niespójność.Odpowiedzi:
Używanie
db_query()
to metoda Drupal 6, która nie jest używana w Drupal 7. Aby osiągnąć cel, sugeruję ten kod (bez ręcznego zapytania).Jeśli masz więcej identyfikatorów węzłów i chcesz opublikować wszystkie te węzły, możesz użyć następującego kodu.
źródło
db_query
jest również metodą Drupal 7. Po prostu bierze różne argumenty.submit
obsługi do swojego, a następnie w niestandardowym module obsługi przesyłania możesz użyć czegoś takiego.gdy używasz node_load (), node_load_multiple () do ładowania (wielu) ładunków, wiele modułów zostanie wywołanych przez moduły, takie jak hook_node_load , hook_node_operations , hook_node_prepare , hook_node_accesse . Ale wykonując zapytanie bezpośrednio na schemacie drupal, te zaczepy zostaną zignorowane i doprowadzą do wielu problemów.
Zapytania to:
Wystarczy użyć powyższego kodu, jeśli node_load () lub node_load_multiple () nie działa z powodu braku dostępnej pamięci.
źródło