如何结账页面? -- theming 领域 和 commerce 领域 drupal 相关 的问题

How do I theme checkout pages?


15
vote

问题

中文

如何主题推车和结帐页面在Drupal Commerce中?我有设置内容,帐户,账单和付款部件。有没有 - 。tpl.php文件创建?

英文原文

how do I theme the cart and checkout pages in Drupal commerce? I have set content, account, billing, and payment parts. Is there any --.tpl.php file to create?

     
   
   

回答列表

13
 
vote

主题购物车页面在主题的模板目录中添加 page--cart.tpl.php

为主题检查页面添加 page--checkout.tpl.php 在主题的模板目录中。如果您只想在Checkout Review页面上添加 page--checkout--review.tpl.php 在模板目录中。

添加tpl文件后不要忘记清除缓存。

如果您想了解更多钩子,请执行 dpm($variables) YOURTHEMENAME_preprocess_page YOURTHEMENAME_preprocess_page 功能并查看 99887666 数组。

有关详细信息,请阅读此评论 http://drupal.org/node/1142800#comment-5365466 < / p>

 

For theming cart page add page--cart.tpl.php in your theme's templates directory.

For theming checkout page add page--checkout.tpl.php in your theme's templates directory. If you want to theme only the checkout review page add page--checkout--review.tpl.php in templates directory.

After adding tpl files do not forget to clear cache.

If you want to know about more hooks do a dpm($variables) inside YOURTHEMENAME_preprocess_page function and look into the theme_hook_suggestions array.

For details read this comment http://drupal.org/node/1142800#comment-5365466

 
 
 
 
7
 
vote

与结账模块相关的商务中的唯一模板文件是Commerce-checkout-errors-message.tpl.php和commerce-checkout-help.tpl.php。这些位于Modules / Checkout / Theme下的Commerce Module目录中。

唯一与购物车模块相关的模板文件是Commerce-Cart-Block.tpl.php,它位于模块/购物车/主题下的Commerce Module目录中。

 

The only template files in Commerce related to the checkout module are commerce-checkout-errors-message.tpl.php and commerce-checkout-help.tpl.php. These are located in the Commerce module directory under modules/checkout/theme.

The only template file related to the Cart module is commerce-cart-block.tpl.php, which is located in the Commerce module directory under modules/cart/theme.

 
 
4
 
vote
实际上我认为使用 hook_form_form_id_alter()更改结帐表单。如果您所需要的只是更改结帐表格中的零件。

当我看到的时候,大部分的结账和amp;结帐查看页面内容在表单中。首先是' commerce_checkout_form_checkout ',第二是' commerce_checkout_form_review '。如果您知道如何使用表单API&amp;如何使用hook_form_form_id_Alter()更改表单。这将非常容易改变表单内容。喜欢重新排序它们或插入/删除元素。

这是一个简单的例子,用于在结账页面上添加通知:

  function my_module_form_commerce_checkout_form_alter(&$form, &$form_state, $form_id) {    //If you have Devel module, uncomment to see what is the original form data   //kpr($form);    //uncomment to see current form_id   //echo $form_id;    //check form id   if($form_id == 'commerce_checkout_form'){     $form['my_test_notice'] = array(       '#markup' => '<h1>Hello, this is a checkout test!</h1>',       '#weight' => -1,     );   }   elseif($form_id == 'commerce_checkout_form_review'){     $form['my_test_notice'] = array(       '#markup' => '<h1>Hello, this is a checkout review test!</h1>',       '#weight' => -1,     );   }   //You can add more ...  }   
 

Actually the easiest way I think is using hook_form_FORM_ID_alter() to alter the checkout form. If all you need is only change the part inside the checkout form.

As I see, most of the checkout & checkout review page content is inside the form. First is 'commerce_checkout_form_checkout', and second is 'commerce_checkout_form_review'. If you know how to use form API & how to alter the form by using hook_form_FORM_ID_alter(). That will be very easy to alter the form content. Like reorder them or insert/remove elements.

Here is a simple example for add a notice into the checkout page:

function my_module_form_commerce_checkout_form_alter(&$form, &$form_state, $form_id) {    //If you have Devel module, uncomment to see what is the original form data   //kpr($form);    //uncomment to see current form_id   //echo $form_id;    //check form id   if($form_id == 'commerce_checkout_form'){     $form['my_test_notice'] = array(       '#markup' => '<h1>Hello, this is a checkout test!</h1>',       '#weight' => -1,     );   }   elseif($form_id == 'commerce_checkout_form_review'){     $form['my_test_notice'] = array(       '#markup' => '<h1>Hello, this is a checkout review test!</h1>',       '#weight' => -1,     );   }   //You can add more ...  } 
 
 
2
 
vote

您还可以使用身体类(取决于您使用的基本主题,这些通常可用)。例如,您可以将特定值与类别提供给身体的子项。例如.Checkout。这可能足以夹具布局一点点。

 

You can also use the body classes (depending on what base theme you use, these are often available). This allows you to give specific values to child items of the body with class .checkout, for example. This might be enough to jig the layout a little bit.

 
 
1
 
vote

您是否尝试过主题develper 模块,它为您提供有关哪些主题挂钩的信息以及哪些主板文件采用。

 

Have you tried Theme Develper module which gives you info about which theme hooks to implements and which themplate files to adopt.

 
 
1
 
vote

购物车页只是一个视图,所以风格它是任何其他视图:

  1. 在作为admin身份登录时转到页面,查找并单击"编辑视图" 链接。

  2. 视图编辑页面打开"高级" 查看设置,然后单击"主题信息"

  3. 在那里,您可以看到您应该如何命名模板(即视图 - 查看 - Commerce-Cartume-summary - default.tpl.php),并且如果您在行开头的模板名称(即首先是"显示输出" ,您可以看到默认模板,复制它,使用主题模板DIR中的其他名称保存并根据您的样品进行修改)。

  4. 或者,您可以自己构建这些页面(视图)。 http://www.drupalcommerce.org/user-guide/modify - 购物购物车使用 - 观点

 

Cart page is just a view, so style it as any other view:

  1. Go to page when you are logged in as admin, find and click "Edit view" link.

  2. On view edit page open "Advanced" view settings and click "Theming information"

  3. There you can see how you should name your templates (i.e. views-view--commerce-cart-summary--default.tpl.php) and also if you at template name at beginning of the row (i.e. first is "Display output" you can see default template, copy it, save with other name in your theme's template dir and modify it as you like).

  4. Or, you can build those pages (views) on your own. http://www.drupalcommerce.org/user-guide/modifying-shopping-cart-using-views

 
 
1
 
vote

您可以制作自己的.tpl文件,并用hook_theme函数调用它们:

  function yourtheme_theme(&$existing, $type, $theme, $path) {   return array(     'commerce_cart_add_to_cart_form'=> array(     'render element' => 'form',     'template' => 'path/to/template/commerce_cart_add_to_cart_form',   ),     'commerce_checkout_form_review'=> array(     'render element' => 'form',     'template' => 'path/to/template/commerce_checkout_form_review',   ),   ...   ...(more templates) }   

因为这些形式,你可以隐藏表单,找到所需的表格,并在模板中使用自己的标记。

  <?php   hide($form);   dpm($form); ?>  <div>   print render($form[...]); </div>   

或者,您可以将其留下并在其周围做的事情。

 

You can make your own .tpl files, and call them with a hook_theme function:

function yourtheme_theme(&$existing, $type, $theme, $path) {   return array(     'commerce_cart_add_to_cart_form'=> array(     'render element' => 'form',     'template' => 'path/to/template/commerce_cart_add_to_cart_form',   ),     'commerce_checkout_form_review'=> array(     'render element' => 'form',     'template' => 'path/to/template/commerce_checkout_form_review',   ),   ...   ...(more templates) } 

as these are forms, you then can hide the form, find what you need, and use your own markup in your template.

<?php   hide($form);   dpm($form); ?>  <div>   print render($form[...]); </div> 

Or, you can leave it as it is and do stuff around it.

 
 

相关问题

2  模板文件未加载块视图  ( Template file not loading for block view ) 
我在标题中有一个块视图。建议的TPL文件是Block__Mens_Header(Block - Mens-Header.TPL)以及节点 - Mens-Header.TPL,出于某种原因,更常见的TPL文件正在工作,但我需要在此处获得特定。是否有一个预处理功能,我需要在这些之前看到? ...

1  在SQL查询中添加“组逐个”时,寻呼机消失  ( Pager disappears when adding group by in the sql query ) 
Drupal Pager在添加 GROUP BY 到查询时消失。 此代码有效。 $countSql = "SELECT COUNT(*) FROM journal "; $sql = "SELECT * FROM journal"; $result = pager_query($sql, 1, 0...

1  在Drupal 7中使用hook_init()或template.php基于路径切换到管理主题  ( Switch to admin theme based on path using hook init or template php in drupal ) 
我正在运行一个使用单独的管理主题的网站。我想包括一些使用admin样式表的附加页面。如何选择性地将主题应用于这些页面。我宁愿在hook_init()或template.php中执行此操作。我不想此时向网站添加任何更多的Contract模块。谢谢你的任何照明。 ...

0  渲染节点$内容但不是所有$内容在那里  ( Rendering node content but not all content is there ) 
节点 $content 变量不包含所有节点元素 在我的本地测试站点上, $content 变量包含大约10个元素,我用于构建我的自定义节点模板。 但现在在实时站点上,我只有2个元素 $content 数组。 我无法弄清楚为什么和看起来无处不在,但找不到 hook_init0 是设置的,或者为什么我的节点的其他'元素'...

1  无法识别Drupal模板文件  ( Drupal template files are not recognized ) 
站点/全部/模块/ dc_wiwo function dc_wiwo_theme($existing, $type, $theme, $path) { return array( 'dc_wiwo_page' => array( 'variables' => array('tweets'...

1  如何根据URL将参数化变量条件添加到我的主题中?  ( How can i conditionally add a parameterized variable to my themes based on url ) 
我想做以下的事情: 如果用户进入 node/15 ,我的 node.tpl.php 文件是正常的,以生成HTML。 如果用户进入 node/15/animal/7 ,那么我的 node.tpl.php 仍然如预期使用,但它在名为 $animal 的范围内具有变量,设置为我从装载动物的价值。 所以,URL架构看起来像...

1  用Drupal 7翻译节点中的字段.TPL.php文件  ( Translating fields in node tpl php file with drupal 7 ) 
我有一个drupal英语/法国网站。我有一个称为"广告" 的自定义内容类型,具有各种字段。我在我的主题目录中创建了文件'node - ad.tpl.php'以自定义"广告" 内容的显示。我使用Pixture重新加载主题和Drupal 7。 在Node - ad.tpl.php字段中显示使用此代码: 打印渲...

1  模板建议被忽略  ( Template suggestion being ignored ) 
我有一个父主题作为多路安装的基础。现在,我正在研究一个有些自定义模板的子主题。这是我的孩子主题中的预处理功能: $orig = $vars['theme_hook_suggestions']; $manual = array('page__node', 'page__node__%', 'page__node__...

16  给定文件ID(FID)如何获得代表该FID的HTML?  ( Given a file id fid how can i get the html that represents that fid ) 
我想做这样的事情 $fid = 15; $file = (array)file_load($fid); $content = drupal_render($file); echo $content; file_load() drupal_render() 具体而言,此FID来自7.x-2.x...

2  如何使用OMEGA子主题/ D7将字段移动到不同的区域?  ( How to move a field to a different region using omega sub theme d7 ) 
我曾经在主题的笨拙网站上相当擅长,但自D7以来我没有做得很多。我为我的基本内容类型添加了一个自定义字段,我希望如果存在,则希望将其放入侧栏中。完成此问题的最佳方式是什么? ...

1  查看模板的问题  ( Trouble with a view template ) 
我创建了一个块视图,我无法控制掉的放置。主题开发人员告诉我候选模板文件是视图 - ViewS-Fields.TPL.php该文件看起来不像我工作的任何其他文件。我发现了唯一的控件我在输出上通过视图设置本身。为什么我不能像任何其他块或页面一样格式化输出? ...

1  在某种类型的节点上自定义作者信息显示的最佳方法是什么?  ( What is the best method to customize the display of author information on a node ) 
要求:对于某种类型(博客)的节点,我需要使用特定图像样式,用户名,用户配置文件描述和另一个自定义用户字段显示作者图像的作者信息。 我当前使用的方法是实现主题_preprocess_node()来创建一个变量以传递给我的节点 - 博客.tpl.php文件,其中包含我需要主题的元素。这意味着我在我的主题_preproce...

24  在我的主题中使用内置jQuery UI  ( Using built in jquery ui in my theme ) 
我的主题的每个页面都需要使用jQuery UI。我知道它包含在Drupal 7中,但我无法真正破译Drupal的方式 - 过于技术的文档。它看起来像是使用template.php文件的唯一方法。但由于我不明白该文件,我正试图避免这样做。 是另一种方式,还是应该尝试template.php文件? ...

1  我有一个块,我需要在两个地区展示。  ( I have a block that i need to show in two regions ) 
如何显示两次相同的块?我有一个使用视图创建的多个博客站点。一半是男士其他是女性。我创建了仅在特定的性别 - Page.tpl文件上显示的特定区域。我刚才意识到我不能两次显示同一块。我将如何才能工作。我也发现该街区也可能是另一个视图。 ...

3  随着Drupal 7的改变主题表格  ( Theming forms on alter with drupal 7 ) 
我正在使用hook_theme为特定形式自定义单选按钮的问题。以下是我在我的模块上的代码;请参阅我的评论详细说明我遇到的问题: // Implementation of hook_form_alter(). function mymodule_form_alter(&$form, $form_state, $fo...

1  处理从Drupal 7 WebForm发送的数据  ( Processing data sent from drupal 7 webform ) 
我已在节点的模板中插入了WebForm: <?php print render($content['webform']); ?> 并在该页面的管理面板中创建了WebForm。表格显示出很好,我已经正确地体现了它。我现在想知道从表格中获取数据的笨拙方式。最有可能从我研究的内容中发挥着先驱的职责。 表单非常简单...

0  定义模板文件的变量  ( Define variables for template files ) 
我正在尝试将包括PHP Logo调用的第一块代码,以及BackCrumbs进入标题区域。我已经创建了块,并使其能够读取PHP。我理解我需要在template.php中编写一个预处理函数,但我不确定这是如何完成的。我正在努力在Drupal 7。 任何人都可以向我展示一个例子,并解释这是如何运作的,或指向正确的方向? ...

1  指定单个节点以在[复制]上加载样式表  ( Specify a single node to load a stylesheet on ) 
这个问题已经在这里有答案: 关闭 8年前。 可能的重复: 为单个页面添加css的任何方式/节点? 如何使其使其使其在特定节点加载(具有路径/某些/页面的页面)时,它还加载特定样式表? ...

2  预处理自定义CCK字段和TPL文件中的打印图像URL  ( Preprocess custom cck fields and print image url in tpl file ) 
我想预处理图像字段,然后在我的RSS.TPL文件中打印它,我当前使用Drupal 6。 这是我在template.php文件中尝试的以下代码,但没有运气:( $vars['image'] = $field_uppdrag_logo; &amp; /*$vars['image']=$node->fie...

5  从评论表单中删除输入格式选项和说明  ( Removing input formatting options and description from comment form ) 
如何从评论表单中删除输入格式选项和描述? 我对基于CSS和/或jQuery的解决方案不感兴趣,我也不感兴趣地使用更好的格式模块,因为我使用Drupal 7,它专门说明它还没有准备好生产网站(除了安装模块的事实似乎是矫枉过正的事实)。我希望通过电线发送的HTML根本没有"输入格式" 相关文本。 drupal有时会驱动...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.