로드 된 노드에 대한 정보를 저장하기 위해 hook_node_load()를 사용하고로드 된 nid를 배열 (어쩌면 전역)에 추가하지 않는 이유는 무엇입니까?
나중에 node_load_multiple ([로드 된 nids의 배열])을 사용하면 캐시에서 모든 노드를 가져옵니다!
는 여기있다 :이 코드를 작동하지만, 신속하게 프로토 타입
/**
* Nid array set function
*/
function mymodule_push_nid_array($nid) {
global $nid_array;
if (!isset($nid_array)) {
$nid_array = array();
}
// Only push, if nid isn't already set
if(!in_array($nid, $nid_array)) {
array_push($nid_array, $nid);
}
}
/**
* Nid array get function
*/
function mymodule_get_nid_array() {
global $nid_array;
if(!isset($nid_array)) {
return array();
}
else {
return $nid_array;
}
}
/**
* Implements hook_node_load();
*/
function mymodule_node_load($nodes, $types) {
foreach ($nodes as $node) {
mymodule_push_nid_array($node->nid);
}
}
/**
* Returns already loaded nodes
*/
function mymodule_get_all_loaded_nodes() {
return node_load_multiple(mymodule_get_nid_array());
}
/**
* Demo function (shows only up on next page request!)
* Don't use THIS HOOK IN PRODUCTION
*/
function mymodule_exit() {
$nodes = mymodule_get_all_loaded_nodes();
debug($nodes);
}
. 언제든지 수정할 수 있습니다.
예제를 제공해 주시겠습니까? 설명서를 읽었지만이 함수를 사용하는 방법을 이해하지 못했습니다. – Shaokan
좋아요, 코드를 작성했습니다. 희망을 당신이 그것을 처리 할 수 있고 후크 및 모듈 시스템을 이해해야합니다. – larrydahooster