[erledigt] Drupal + Ubercart Magic: Wert aus $node->content wird innerhalb von hook_nodeapi(); nicht ersetzt
Eingetragen von Peter Majmesku (656)
am 08.03.2011 - 02:41 Uhr in
am 08.03.2011 - 02:41 Uhr in
Hallo,
ich habe es, wie bereits im Titel erwähnt, wiedermal mit der »Magic« von Drupal zutun. Ich möchte ein einziges Wort in dem Warenkorb-Formularfeld Output von Ubercart ändern. Allerdings bekomme ich immer den alten Output. Mein Code:
<?php
function alter_product_output_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
if($op == 'view'){
$node->content['add_to_cart']['#value'] = str_replace('Anz', 'St', $node->content['add_to_cart']['#value']);
}
}
?>
Der Wert von $node->content['add_to_cart']['#value'] bleibt der alte. Wenn ich nun aber
<?php
function alter_product_output_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
if($op == 'view'){
$node->content['add_to_cart']['#value'] = "Foobar";
}
}
?>
definiere, wird auch "Foobar" (ohne Anführungszeichen) ausgegeben. Versteht das jemand? o_O
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast Du dir in der
am 08.03.2011 - 09:28 Uhr
Hast Du Dir in der nodeapi-Funktion mal den Wert von
$node->content['add_to_cart']['#value']
ausgeben lassen? Ich vermute, da steht "Anz" gar nicht drin, sondern nur eine Zahl. "Anz" kommt für mich aus der Beschriftung des entsprechenden Widgets und da kommst Du so nicht heran.Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Übersetzung ist Dein Freund
am 08.03.2011 - 09:55 Uhr
Hi Jepster,
wie Werner schrieb, wird der Text aus der Lokalisierung geholt. Das heisst es ist für Dich sehr einfach zu erreichen.
Gehe einfach über Strukturierung/Oberfläche übersetzen/Tab Suche
Dann gib ein "Anz." (ohne Anführungszeichen)
Du kannst die deutsche Übersetzung verändern. Das geht übrigens mit vielen Texten, so dass ein Search/Replace selten notwendig ist.
Tom
Übersetzung hatte ich schon versucht
am 08.03.2011 - 12:25 Uhr
Hallo,
@Werner:
$node->content['add_to_cart']['#value']
hatte ich mir schon ausgeben lassen. Da wird ja auch "Anzahl" sauber durch "Stück" ersetzt. Aber eben nicht innerhalb des betreffenden Nodes ausgegeben, auf welchem ich mittels Devel die Ausgabe geben lasse.@Tom:
Die Übersetzung hatte ich schon versucht. Wobei ich auch den Doppelpunkt neben "Anzahl" ersetzen will. Und die Zeichenkette Anzahl: finde ich in den Übersetzungen absolut nicht. Anzahl ist mehrmals in der Übersetzung vorhanden, ich habe auch "Anz." mehrmals vergeblich testweise geändert - hilft alles nichts.
Was für mich auch noch einen bedeutenden Teil der Drupal Magic ausmacht ist, dass ich in der
page.tpl.php
mitstr_replace();
"Anzahl:" innerhalb der $content-Variable ersetzen wollte (wo "Anzahl:" zwangsläufig enthalten ist) und dies ebenso nicht funktioniert. o_O- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn
Fehler gefunden
am 08.03.2011 - 12:52 Uhr
Hallo,
habe das Modul Ajax Attribute Calculations deaktiviert. Das schrieb mittels JavaScript Stück: neben dem Warenkorb um. Jetzt kann ich die Zeichenkette über die page.tpl.php und hook_nodeapi(); mit str_replace(); ersetzen. Wollte das ursprünglich über die Funktion phptemplate_preprocess_page(); in der template.php mit
<?php
$vars['node']->content['add_to_cart']['#value'] = str_replace('Anzahl', 'Stück', $vars['node']->content['add_to_cart']['#value']);
?>
machen, weil das ja angeblich mehr "Drupal Way" ist, aber so ging das nicht. Hauptsache es ich habe diese Zeichenkette endlich ersetzt. Egal wie.
- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn