如何快速主题化视图?

我已经用 CCK 和 View2模块定义了一个视图。我想快速定义一个特定于此视图的模板。有关于这方面的教程或信息吗?我需要修改哪些文件?


以下是我的发现: (编辑)

事实上,有两种方式来主题化一个观点: “ 场地”的方式和“ 节点”的方式。在「编辑检视」中,你可以选择「 Row style: Node」或「 Row style: Fields」。

  • 使用“ 节点”方式,您可以创建一个 Node-contentname. tpl.php,它将被视图中的每个节点调用。您可以使用 $field _ name [0][‘ value’]访问 cck 字段值。(编辑2)您可以使用 Node-view-viewname. tpl.php,它将只为从这个视图显示的每个节点调用。
  • 使用“ 球场”方法,为每个希望单独主题化的字段添加 views-view-field —— viewname —— field-name-value.tpl.php。

感谢之前的回复,我使用了以下工具:

  • 在“基本设置”区块中,“主题: 信息”可以查看所有可以修改的不同模板。
  • 开发模块的“主题开发人员”快速查找字段变量名。
  • 查看2文档 ,特别是 “运用主题”页面。
91680 次浏览

In fact there are two ways to theme a view : the "field" way and the "node" way. In "edit View", you can choose "Row style: Node", or "Row style: Fields".

  • with the "Node" way, you can create a node-contentname.tpl.php wich will be called for each node in the view. You'll have access to your cck field values with $field_name[0]['value']
  • with the "Field" way, you add a views-view-field--viewname--field-name-value.tpl.php for each field you want to theme individually.

Thanks to previous responses, I've used the following tools :

  • In the 'Basic Settings' block, the 'Theme: Information' to see all the different templates you can modify.
  • The Devel module's "Theme developer" to quickly find the field variable names.
  • View 2 documentation, especially the "Using Theme" page.

A quick way to find the template files you can create and modify for a view in Views 2.0 is to:

  1. Edit the view
  2. Select the style (e.g. page, block, default)
  3. In the 'Basic Settings' block click on 'Theme: Information' to see all the different templates you can modify.

The Devel module's "Theme developer" feature is handy for seeing what template files Drupal is looking for when it goes to theme something. See the screenshot on that page for an example.

My shortcut option.

  1. Go to theme.inc file in YOUR_MODULE_DIR/views/theme/ folder.

  2. In the _views_theme_functions function print the $themes variable or put a breakpoint on the last line of the function to see the content of the variable.

Just convert views_view to views-view and __ to -- and add your template extension to get desired file name.

For example if an element of the $themes array is views_view__test_view__block (where test_view is the name of your view) then the name of the template file would be views-view--test_view--block.tpl.php.

for me block-views-myViewName-myBlockId.tpl.php works

In my opinion the simplest way to decide which template file to use for theming the views is : 1) Click on admin/build/views/edit/ViewName -> Basic Settings -> Theme

Clicking this would list all the possible template files. Highlighted (File names in Bold) files indicate which template file is being used to do theme what part of the view. After incorporating the required changes in the relevant view template file RESCAN .. now you should be able to see the changed template file highlighted .

You should also check out Semantic Views. For simple Views theming, it is really handy.

One tip:

You'll likely have a number of views which require similar formatting. Creating templates for each of these views and copying them creates a nightmare of code branching - if you're asked to change the whole look and feel of the site (implying changing the display of each of these views formatted in this particular way), you have to go back and edit each of these separately.

Instead of using the views interface to select new templates for views, I sometimes simply insert some code branching into a single views file. E.g. for one site in views-view-fields.tpl.php I have:

if($view->name == 'articleList' || $view->name == 'frontList'
|| $view->name == 'archiveList') {
/* field formatting code */
} else {
/* the default code running here */
}

This then modifies the fields in the way I want only for this family of Views = articleList, frontList and archiveList - and for other views using this template runs the code one normally finds in this template. If the client asks, "Hey, could you make those pages showing the archives & that list on the front page to look more like ( ... )", it's simply a matter of my opening & editing this one file, instead of three different files. Maintenance becomes much more quick & friendly.

If you want to do quick Drupal development with a lot of drag-and-drop, the Display Suite module def. is a something you should use: http://drupal.org/project/ds

According to me there are two ways to do it:

Programatic Way:

  1. Go to edit view.
  2. Select page/block style.
  3. Go to 'Basic Settings' and click on 'Theme: Information' to see all the different templates you can modify.
  4. Add the html you want to theme and print the variables of the view wherever needed

Configuration Update: Using the Display suiteThe Display suite provides us an option to place your labels inline or above and add even to hide them. Custom classes to each of the view's elements can be added too. Advanced options include:

  • Exportables
  • Add your own custom fields in the backend or in your code
  • Add custom layouts in your theme (D7 only)
  • Change labels, add styles or override field settings (semantic fields).
  • Full integration with Views and Panels
  • Extend the power of your layouts by installing Field Group
  • Optimal performance with Object cache (D6) or Entity cache (D7) integration