node_load()
次に、プロパティとしてフィールドにアクセスするのが適切な方法ですが、ロケールのハードコーディングを避けるために少し異なる方法でアクセスします。
$lang = LANGUAGE_NONE;
$node = node_load($nid);
$url = $node->url[$lang][0]['value'];
nidを取得するために使用している方法は、それを導出するための特に厄介な方法です。私はそれをリファクタリングすることに焦点を当て、代わりにentity_load()EntityFieldQuery
を使用します:
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('type', $node_type)
->propertyCondition('title', $title)
->execute();
// $result['node'] contains a list of nids where the title matches
if (!empty($result['node']) {
// You could use node_load_multiple() instead of entity_load() for nodes
$nodes = entity_load('node', $result['node']);
}
タイトルは一意のプロパティではなく、フィールドがノード以外のエンティティに表示される場合は特に、これを行う必要があります。その場合は、を削除しentityCondition()
ます。