theme_uc_vat_cart_review_table aus dem Ubercart VAT Modul in Theme einbinden klappt nicht
am 17.08.2009 - 21:28 Uhr in
Hallo,
ich habe Drupal erst vor kurzem für mich entdeckt, kenne mich noch nicht gut aus, möchte aber jetzt meine erste Seite umsetzten.
Angedacht ist eine Shop Lösung mit Ubercart.
Dabei bin ich auf folgendes Problem gestossen (nicht das einizige Problem, aber im Moment das einzige bei dem ich nicht mehr weiter komme):
Nötig für einen Shop in der EU ist das VAT Modul mit dessen Hilfe die Mehrwertsteuer korrekt usgewiesen wird (na ja, fast korrekt, es gibt noch ein paar Kleinigkeiten, da kümmern sich aber ein paar schlaue Köpfe drum).
Mein Problem des Abends ist diese Theme Funktion am Ende des Moduls:
function theme_uc_vat_cart_review_table($show_subtotal = TRUE) {
$subtotal = 0;
// Set up table header.
$header = array(
array('data' => t('Qty'), 'class' => 'qty'),
array('data' => t('Products'), 'class' => 'products'),
array('data' => t('Price excl. VAT'), 'class' => 'price', 'style' => 'white-space: nowrap;'),
array('data' => t('VAT'), 'class' => 'price'),
array('data' => t('Price'), 'class' => 'price'),
);
$context = array(
'location' => 'cart-checkout-item',
);
// Set up table rows.
foreach (uc_cart_get_contents() as $item) {
$node = node_load($item->nid);
$price_info = array(
'price' => $item->price,
'qty' => $item->qty,
);
$context['subject'] = array(
'cart_item' => $item,
'node' => $node,
);
$context['revision'] = 'altered';
$price = uc_price($price_info, $context);
$tax_total = 0;
foreach (uc_taxes_rate_load() as $tax) {
if (in_array($node->type, $tax->taxed_product_types) && ($tax->shippable == 0 || $node->shippable == 1)) {
$tax_total += $price * $tax->rate;
}
}
$total = $price + $tax_total;
$subtotal += $total;
$description = check_plain($item->title);
foreach (module_implements('cart_item_description') as $module) {
$description .= module_invoke($module, 'cart_item_description', $item);
}
// Remove node from context to prevent the price from being altered.
unset($context['subject']);
$context['revision'] = 'themed-original';
$rows[] = array(
array('data' => t('@qty×', array('@qty' => $item->qty)), 'class' => 'qty'),
array('data' => $description, 'class' => 'products'),
array('data' => uc_price($price, $context), 'class' => 'price'),
array('data' => uc_price($tax_total, $context), 'class' => 'price'),
array('data' => uc_price($total, $context), 'class' => 'price'),
);
}
// Add the subtotal as the final row.
if ($show_subtotal) {
$context = array(
'revision' => 'themed-original',
'location' => 'cart-checkout-subtotal',
);
$rows[] = array(
'data' => array(array('data' => '<span id="subtotal-title">' . t('Subtotal:') . '</span> ' . uc_price($subtotal, $context), 'colspan' => 6, 'class' => 'subtotal')),
'class' => 'subtotal',
);
}
return theme('table', $header, $rows, array('class' => 'cart-review'));
}
Wenn ich diese Funktion in meine Template.php einfüge und theme gegen den Themen Namen ersetzte dann müsste diese Funktion doch von dort aufgerufen werden, oder?
Das will aber irgendwie nicht klappen, bei keinem Theme (ich habe es mit diversen ausprobiert)
Muss ich eigentlich den Begriff Theme am Anfang und Ende der Funktion ersetzten? (ich vermute schon, habe aber alle möglichen Varianten ausprobiert).
Ach ja den Theme Cache und so habe ich zwischen den Tests geleert.....
Ich stehe gerade echt auf dem Schlauch, kann mir da jemand helfen?
Falls ich einfach nicht fähig bin im Forum richtig zu suchen und die Lösung schon wo anders beschrieben ist biete ich um Verzeihung, genauso auch falls dieses Thema eher zu den Anfänger Fragen gehören sollte und im Theming Forum nicht richtig aufgehoben ist.
Vielen Dank für eure Hilfe schon im Voraus,
Malenka
- Anmelden oder Registrieren um Kommentare zu schreiben
function
am 18.08.2009 - 08:18 Uhr
function themename_uc_vat_cart_review_table($show_subtotal = TRUE) wäre eigentlich richtig. z.Bsp für Garland:
function garland_uc_vat_cart_review_table($show_subtotal = TRUE) in der template.php im Garland-Ordner.
Bei mir hats zumindest immer so nach Cache leeren funktioniert. Wie hast du denn getestet obs funktioniert? ich hab immer testweise ne drupal-message irgendwo eingebaut, zum Beispiel
<?php
function themename_uc_vat_cart_review_table($show_subtotal = TRUE)
{
drupal_set_message("Ich bin in der Funktion");
[...]
return theme('table', $header, $rows, array('class' => 'cart-review'));
}
?>
Leider nicht die Lösung....
am 18.08.2009 - 07:29 Uhr
Vielen Dank Stebeg für Deine Antwort!
Den Themename hatte ich schon eingefügt nur in dem Code Schnippsel vergessen, sorry.
In Deinem Beispiel steht unten bei theme(....) nicht themename, dort ist es dann auch nicht einzufügen, nehme ich an?
Ich habe um es die Funktion zu prüfen ähnlich gemacht, allerdings jetzt auch mit drupal set message versucht (ist eine schöne Lösung, eleganter als meine, Danke sehr!). Kein positives Ergebnis.
Einen Konflikt mit anderen Funktion schliesse ich aus, hab mal Probehalber alle anderen gelöscht. Kein positives Ergebnis.
In andere Themen Einfügen um zu schauen ob es am Theme liegt habe ich auch. Kein positives Ergebnis.
Nur wenn ich im Modul direkt die Funktion verändere tut sich was, aber es wäre doch eine schlechte Lösung im Modul rumzumachen.
Zu einer Reaktion konnte ich bis jetzt die Funktion im Template allerdings bringen: Eine Klammer oder sonst was raus nehmen und es zeigt Fehlermeldungen an, das ist doch schon mal etwas.....
Ich bin nach wie vor offen für Lösungsvorschläge und freue mich auf jede Antwort!
Lg Malenka
Hast du auch direkt nach
am 18.08.2009 - 08:22 Uhr
Hast du auch direkt nach Ändern der template.php den Cache geleert? Wenn ja, dann muss ich sagen, dass ich kein Plan hab worans liegen könnte.
Edit: Was genau möchtest du denn ändern? eventuell gibts noch ne andere Möglichkeit.
Den Cache habe ich geleert,
am 18.08.2009 - 09:44 Uhr
Den Cache habe ich geleert, daran liegt es leider nicht.
In der Übersicht des Checkouts will ich eine weitere Spalte mit der MwSt Art (7 bzw. 19%) anlegen, ausserdem brauche ich die Spalten die den Netto- und MwStbetrag für jedes Produkt einzeln auflisten nicht. Das kann ich nur mit dieser Funktion ändern.
Wenn ich diese Funktion direkt im Modul ändere funktioniert es ja auch, allerdings ins Theme eingebaut läuft diese Funktion gar nicht, auch nicht wenn ich sie im Orginal belasse nur mit dem Themename umgeändert....
hmmm schon merkwürdig,
am 18.08.2009 - 12:54 Uhr
hmmm schon merkwürdig, bleibt dir wohl nichts anderes übrig als das Modul an sich zu ändern, sollte sich nich zufällig noch jemand melden, der eine Idee hat.
Edit: habs grad fix selbst ausprobiert. Auch bei mir funktionierts nicht. Wird vermutlich ein bug im Modul sein.
Danke sehr! Das hilft mir
am 18.08.2009 - 13:23 Uhr
Danke sehr! Das hilft mir weiter und mein Tag ist gerettet!
Ich dachte schon es läge an mir, aber wenn es bei anderen auch nicht funktioniert dann werde ich es als Bug im Modul melden.
Nur der Vollständigkeit
am 04.09.2010 - 20:24 Uhr
Nur der Vollständigkeit halber, falls später jemand über diesen Beitrag stolpert:
Das Problem schient behoben, wenn ich diesen Eintrag richtig verstehe
http://drupal.org/node/722066
Ich habe es aber nicht getestet.