特定のビューの一部のフィールド設定を変更したいビュー で作成プログラムで。
たとえば、 "Formatter"と "Image style "画像フィールドの設定。このビューをエクスポートすると、このフィールドの設定は次のようになります。
_/* Field: Taxonomy term: Natural images */
$handler->display->display_options['fields']['field_gallery_natural_images']['id'] = 'field_gallery_natural_images';
$handler->display->display_options['fields']['field_gallery_natural_images']['table'] = 'field_data_field_gallery_natural_images';
$handler->display->display_options['fields']['field_gallery_natural_images']['field'] = 'field_gallery_natural_images';
$handler->display->display_options['fields']['field_gallery_natural_images']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['field_gallery_natural_images']['type'] = 'colorbox';
$handler->display->display_options['fields']['field_gallery_natural_images']['settings'] = array(
'colorbox_node_style' => '',
'colorbox_image_style' => '',
'colorbox_gallery' => 'post',
'colorbox_gallery_custom' => '',
'colorbox_caption' => 'auto',
'colorbox_caption_custom' => '',
'display_empty' => '',
'custom_text' => '',
'empty_callback' => 'mymodule_empty_fields_no_data',
);
_
Colorboxフォーマッターの「画像スタイル」を次のように変更したいと思います。
_$handler->display->display_options['fields']['field_gallery_natural_images']['settings']['colorbox_node_style'] = 'thumbnail';
_
それを保存します。どうすればよいですか?
ここのように:
多分私はviews_save_view()
を使うべきです:
http://api.drupal.org/api/views/views.module/function/views_save_view/7
ビューを保存します。ビュー全体をクエリして変更し、この関数を使用する必要があるかもしれません。しかし、正確には?
_views/includes/admin.inc
_で、指定されたビューが$form_state['view']->save();
のviews_ui_edit_view_form_submit()
のように保存されることがわかりました。
私はすでに知っています ギアをクリックした後の「表示の管理」タブのように)特定のビューモードで画像フィールドの「画像スタイル」をプログラムで変更する方法 、しかし今、私はできれば幸いです指定されたビューで同様のことを行います。
[〜#〜]更新[〜#〜]:
このコードスニペットを使用して、_views_alter
_なしでビューを変更できます。
_$view = views_get_view($view_name, TRUE);
$view->display['default']->display_options['fields']['field_gallery_natural_images']['settings']['colorbox_node_style'] = 'thumbnail';
views_save_view($view);
_
デフォルト以外のディスプレイを使用する場合は、default
ディスプレイIDを変更します。
hook_views_default_views()
またはFeaturesモジュールを使用してビューをコードにエクスポートした場合、ビューをプログラムで変更するフックがあります。
_/**
* Alter default views defined by other modules.
*
* This hook is called right before all default views are cached to the
* database. It takes a keyed array of views by reference.
*
* Example usage to add a field to a view:
* @code
* $handler =& $view->display['DISPLAY_ID']->handler;
* // Add the user name field to the view.
* $handler->display->display_options['fields']['name']['id'] = 'name';
* $handler->display->display_options['fields']['name']['table'] = 'users';
* $handler->display->display_options['fields']['name']['field'] = 'name';
* $handler->display->display_options['fields']['name']['label'] = 'Author';
* $handler->display->display_options['fields']['name']['link_to_user'] = 1;
* @endcode
*/
function hook_views_default_views_alter(&$views) {
if (isset($views['taxonomy_term'])) {
$views['taxonomy_term']->display['default']->display_options['title'] = 'Categories';
}
}
_
例えば:
_/**
* Implements hook_views_default_views_alter()
*/
function MYMODULE_views_default_views_alter(&$views) {
if (isset($views['VIEW_NAME'])) {
$views['VIEW_NAME']->display['default']->display_options['fields']['field_gallery_natural_images']['settings']['colorbox_node_style'] = 'thumbnail';
}
}
_
キャッシュをクリアし、ビューを元に戻して変更を適用することを忘れないでください。