0

したがって、複数の値を持つことができるノード参照フィールドがあり、phpコードを作成しようとしています。このコードは、そのフィールドのすべての値で必要な特定の値をチェックし、見つかった場合はテキストを出力します。私はviewsphpフィールドでそれをやりたいのですが、これは私がこれまでに思いついたコードです:

<?php
$node = node_load($data->nid);
print $data->nid . '<br>';
if(in_array('Yog [nid:1315]', $node->field_ref_oznajomenieni)) {
print 'yoog';
}
else {
print 'niemanic';
}
?>

私はPHPがやや苦手ですが、次のnode_load()ように動作します。正常に動作$data->nidし、ビューのすべての行のノードIDを返します。これはによって確認されますprint $data->nid . '|';

ここで、if関数が必要な処理を実行することになっている場合は、値の配列でノード参照フィールド内の何かを検索し、何かを出力します。参照されているノードのnid、そのタイトル、またはコードにどのように配置するかを検索する必要があるかどうかはわかりませんprint 'niemanic';else{}

どうすれば正確にできますか?

4

1 に答える 1

0

明確にするために:コードは、ノード参照フィールドで値を検索し、見つかった場合にのみ何かを出力することです。

一方通行:

// less RAM usage
$node = node_load($data->nid);
$napis = '';
foreach ($node->field_ref_oznajomenieni as $value) {
if ($value[nid] == '1315') {
$napis = 'Yog';
}
// if (!($napis)) $napis = 'niemanic'; // for testing purpose
}
print $napis;

別の方法: (テストされていないため、一部のブラケットが欠けている可能性があります)

// flattened matrix way
$plaskatablica = array();
foreach ($node->field_ref_oznajomenieni as $value) {
$plaskatablica[] = $value[nid];

if(in_array('1315', $plaskatablica)) {
print 'Yog';
}
}

これが私が自分で考え出したものです:

$node = node_load($data->nid);
$ii = 0;
foreach ($node->field_ref_oznajomenieni as $value) {
if(in_array('1315', array_values($node->field_ref_oznajomenieni[$ii]))) {
print 'Yog';
}
++$ii;
}

これはprint_r($node->field_ref_oznajomenieni);、サンプル フィールドの出力です。

Array ( 
[0] => Array ( [nid] => 1320 ) 
[1] => Array ( [nid] => 1315 ) 
[2] => Array ( [nid] => 1518 ) 
[3] => Array ( [nid] => 1519 ) 
[4] => Array ( [nid] => 1525 ) 
)
于 2013-03-09T17:05:03.057 に答える