Argument an hook übergeben: Wie denn, wo denn?! Grundsatzfrage, glaube ich
am 05.03.2013 - 00:46 Uhr in
Hallo Leute,
ich hab das Gefühl, hier ganz generell etwas überhaupt nicht verstanden zu haben. Also folgendes:
Ich habe eine Commerce Kickstart-Seite mit dem zusätzlich installierten Modul commerce_ogone (Ogone ist so ein Payment Gateway), was soweit alles einwandfrei funktioniert. Nun gibt es die Möglichkeit, im Schritt "Bezahlen" bei der Weiterleitung zum Ogone-Server eine URL zu einem "Dynamic Template" mitzuschicken, das Ogone dann verwendet, um die Bezahlseiten im eigenen Look & Feel darzustellen.
In der readme.txt vom commerce_ogone-Modul findet sich nun im Absatz "Dynamic Templates" als Anleitung nur der folgende Satz: "The absolute URL to this page must be passed as a parameter to
hook_commerce_ogone_data_alter() (see commerce_ogone.api.php)." Ich hab mir die genannte .php-Datei natürlich angeguckt, aber ich steh total auf dem Schlauch.
WIE übergebe ich diesen Parameter?! Wo? Kann ich das in meiner template.php machen...? Irgendwie würde ich erwarten, dass es in den Modul-Settings ein Feld für diesen absoluten Pfad gibt und das Modul baut das dann "irgendwie" ein... ich würde das glatt so umsetzen, wenn ich wüsste wie.
Ich freu mich auch sehr, wenn jetzt jemand von euch schreibt "Du Nase, lies erstmal diesen Grundsatzartikel über Hooks/Module/..." - sehr gerne. Ich weiß nur überhaupt nicht wo anfangen damit.
Vielen Dank schonmal
Anna~
- Anmelden oder Registrieren um Kommentare zu schreiben
such mal wo
am 05.03.2013 - 01:26 Uhr
such mal von wo hook_commerce_ogone_data_alter() genau aufgerufen wird.
Hooks
am 05.03.2013 - 09:30 Uhr
Hallo.
"Du Nase, lies erstmal diesen Grundsatzartikel über Hooks/Module/..." schreibe ich jetzt mal nicht ;)
Allerdings ist es für Dich vermutlich doch sehr hilfreich, zu verstehen, was diese Hooks überhaupt sind. Ein Hook ist quasi eine Möglichkeit, bestehende Funktionen eines Moduls und vom Modul erzeuge Daten zu verändern.
Modul a) definiert beispielsweise den Hook hook_commerce_ogone_data_alter(). Das bedeutet nun, dass Modul a) erst in einer Funktion seine Daten zusammensucht und dann anderen Modulen die Möglichkeit gibt, diese Daten zu verändern oder zu erweitern.
Dazu muss Modul b) (also ein custom Modul von Dir) diesen Hook implementieren:
<?php
function {MODULENAME}_commerce_ogone_data_alter(&$data, $order, $settings) {
$data['TP'] = url('path/to/custom/template', array('absolute' => TRUE));
}
?>
Ganz einfach, oder?
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ja...
am 05.03.2013 - 22:18 Uhr
Ja, klingt fantastisch! Hab ich natürlich gleich ausprobiert, unter Zuhilfenahme des Modul-Selbstbau-Tutorials von drupal.org: http://drupal.org/node/1074362 (ff.)
Nun bin ich bis zur Implementation von hook_help() gekommen und hab's genau so gemacht wie's dasteht... und der Help-Link taucht nicht auf. (Dementsprechend wundert es mich auch nicht, dass Deine paar Zeilen Code von oben auch nichts zu machen scheinen.)
Ich hab schon gegoogelt und eine gefunden, die das gleiche Problem hatte: http://drupal.org/node/1910784
Sie hat auch eine Lösung, aber leider scheint mein Problem woanders zu liegen. So sieht jetzt mein Code aus:
ogone_dt_path.module:
<?php
/**
* @file
* A module that adds the path for the dynamic template to the Ogone payment pages.
*/
/**
* Implements hook_help.
*
* Displays help and module information.
*
* @param path
* Which path of the site we're using to display help
* @param arg
* Array that holds the current path as returned from arg() function
*/
function ogone_dt_path_help($path, $arg) {
switch ($path) {
case "admin/help#ogone_dt_path":
return '<p>' . t("Adds the path for the dynamic template to the Ogone payment pages") . '</p>';
break;
}
}
function ogone_dt_path_commerce_ogone_data_alter(&$data, $order, $settings) {
$data['TP'] = url('https://ssl.webpack.de/domain.name/ogone-template/template.html', array('absolute' => TRUE));
}
Und die ogone_dt_path.info:
name = Ogone Dynamic Template
description = Adds the path to a dynamic template to the Ogone payment pages.
core = 7.x
dependencies[] = commerce_ogone
Freu mich riesig über Input!
Gruß
Anna~
Modul
am 06.03.2013 - 10:51 Uhr
Hm, so auf den ersten Blick sehe ich da nichts, was auf einen Fehler hindeuten könnte.
Aktiviert hast Du Dein Modul (ich frag mal zur Sicherheit nach ...), oder? Und den Cache geleert hast Du auch, ja?
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Bedauerlicherweise...
am 06.03.2013 - 11:29 Uhr
... ja und ja. Hab's zur Sicherheit grad nochmal gemacht, selbes Ergebnis. Kein Hilfe-Knopf, kein dynamic template. :-(