Ubercartのuc_cartモジュールは、テーマ/テンプレートを用意する「カート」ページを提供します。私がしたことは以下のmymodule_theme()
に追加されています:
_ 'uc_cart_view' => array(
'render element' => 'page', // IS THIS CORRECT?
'template' => 'cart', // Located in mymodule/templates/cart.tpl.php
'path' => drupal_get_path('module', 'mymodule') . '/templates',
),
_
しかし運が悪い!
私の質問:
_render element
_キーに他の値を指定しますか?または、variables
エントリを用意しますか? _render element
_エントリの代わりに空の配列を使用してvariables
を試しましたが、うまくいきませんでした。
ここに、Ubercartのuc_cartモジュールに関する詳細情報を示します。これにより、この問題の解決に役立ちます。
あなたの考慮のために
_uc_cart_menu
_からの部分:
_$items['cart'] = array(
'title' => 'Shopping cart',
'description' => 'View/modify the contents of your shopping cart or proceed to checkout.',
'page callback' => 'uc_cart_view',
'access arguments' => array('access content'),
'file' => 'uc_cart.pages.inc',
);
_
したがって、私は_uc_cart_view
_のカスタムテンプレートを使用する必要があると考えました。このuc_cart_view()
は* uc_cart.pages.inc *ページの関数です。便宜上、関数 here を貼り付けました。
私が間違っていることについて何か助けはありますか?
c_cart_view() はフォームビルダーではありません。これはページコールバックです。そのため、theme_uc_cart_view()
はuc_cart_view()
に対して自動的に呼び出されません。必要なテーマ関数を呼び出すか、次のコードなどで参照する必要があるのは、ページコールバックです。
_ if (empty($items)) {
return array(
'#theme' => 'uc_empty_cart',
);
}
_
あなたができることは次のとおりです:
hook_menu_alter() を実装して、 http://example.com/cart に対して呼び出されるページコールバックを変更します。
_function mymodule_menu_alter(&$items) {
if (isset($items['cart'])) {
$items['cart']['page callback'] = 'mymodule_cart_view';
}
}
_
ページコールバックを実装して、コンテンツを希望どおりに出力します。
mymodule_cart_view()
のコードを提案することはできません。 uc_cart_view()
から使用されているコードを見ると、主な部分は次のコードであることがわかります。
_ // Load the array of shopping cart items.
$items = uc_cart_get_contents();
// Display the empty cart page if there are no items in the cart.
if (empty($items)) {
return array(
'#theme' => 'uc_empty_cart',
);
}
$build = array();
// Load through the cart panes...
foreach (uc_cart_cart_pane_list($items) as $id => $pane) {
// If the pane is enabled...
if ($pane['enabled']) {
// Add its output to the cart view.
$build[$id] = $pane['body'];
}
}
_
Drupal 7では、ページコールバックが返すことができるものは次のとおりです。
drupal_render() から受け入れられる配列(以下のような)
_$build = array(
'#theme' => 'node',
'#node' => $node,
'#view_mode' => $view_mode,
'#language' => $langcode,
);
_
_$block = array(
'#markup' => '<em>' . t('There are no rows matching the selected criteria') . '</em>'.
);
_
_$styles = array(
'#type' => 'styles',
'#items' => $css,
);
_
補足として、テーマ定義では、テンプレートのファイル名を「カート」にすることはできません。テンプレートファイルは「uc_cart_view」用であるため、「uc_cart_view」または「uc-cart-view」としてレポートできます。 Drupalからの他のファイル名は受け入れられません。
$items['uc_cart_view_form'] = array(
'template' => 'cart/uc-cart-view-form',
'arguments' => array('form' => NULL),
);
を使用する必要があるという意味uc_cart_view_form