W hook_node_update () mogę łatwo określić „status” węzła (czy jest opublikowany czy nie) po jego aktualizacji.
Czy istnieje jednak prosty sposób sprawdzenia, czy zaktualizowany węzeł został opublikowany, ale teraz nie jest? (Lub odwrotnie)?
Myślę, że Reguły mogą mieć pewien warunek dla „wartość węzła uległa zmianie” lub coś w tym stylu, ale chciałbym to zrobić programowo.
Znalazłem ten problem autorstwa fago (twórcy reguł) na drupal.org, który wydaje się sobie z tym radzić w Drupal 7, ale mile widziane wyjaśnienie byłoby mile widziane.
$entity->original->getTranslation($lng)->status->value == 0 && $entity->getTranslation($lng)->status->value == 1
node_save()
zawiera następujący kod.entity_load_unchanged()
ładuje byt (w tym przypadku węzeł) z bazy danych; zwraca obiekt encji przed wszelkimi zmianami wprowadzonymi z działających modułów.Kod jest wykonywany przed jakimkolwiek zapisem wstępnym i aktualizacją przechwytuje.
W tych zaczepach można zobaczyć właściwości węzła przed każdą zmianą
$node->original
, na przykład za pomocą$node->original->status
.źródło