0

次のようなコンテンツをレンダリングするdrupalテンプレートがあります。

<?php $field_collection_state_info = reset($content['field_state_information']['0']['entity']['field_collection_item']);  ?>  
<?php print render($field_collection_state_info['field_state_name']); ?>

ucfirst()しかし、すべてのレンダリングされたコンテンツが最初の文字を利用するようにphpを実行したいと思います。

私はこれを試しました:

<?php print ucfirst(render($field_collection_state_info['field_state_name'])); ?>

しかし、それはうまくいきませんでした。

これをどのように達成する必要がありますか?

どんなアドバイスも大歓迎です。

C

4

1 に答える 1

0

を呼び出す前に、レンダー配列の内容を変更する必要があると思いますrender():

// the 'und' part is depending on the translation of the node
$field_collection_state_info['field_state_name']['und'][0]['value'] =
ucfirst($field_collection_state_info['field_state_name']['und'][0]['value']);
// render
print render($field_collection_state_info['field_state_name']);

// or you could try to modify the safe_value part of the array depending on your
// filter settings for the field
$field_collection_state_info['field_state_name']['und'][0]['safe_value'] =
ucfirst($field_collection_state_info['field_state_name']['und'][0]['safe_value']);
// render
print render($field_collection_state_info['field_state_name']); 

EDITこれをあなたに追加してみてください。次template.phpを使用してcollection_fieldの値を変更しますhook_preprocess_node()

function YOURTHEME_preprocess_node(&$vars) {
  if($vars['type'] == 'YOUR-CONTENT-TYPE') {    
     // you might need to replace the field_content_block with the name of your field <field_state_information>
     $data = reset($vars['content']['field_content_block'][0]['entity']['field_collection_item']);
     // turn the first character to uppercase
     $data['field_text']['#object']->field_text['und'][0]['value'] = ucwords($data['field_text']['#object']->field_text['und'][0]['value']);
    // set the data in the array, like I said above your might need to change the `field_collection_block` to `field_state_information`
    $vars['content']['field_content_block'][0]['entity']['field_collection_item'] = $data;
  } 
}
于 2012-09-11T21:04:36.113 に答える