Hi,
zunächst ein kleines Vorwort.
Ich bin keine fortgeschrittener PHPler und bitte daher zu entschuldigen, das ich in diesem Forum poste und das meine Frage evtl. nicht ganz fachmänische gestellt ist.
Nur erwarte ich mir, hier am ehesten Hilfe zu finden, da mir selbst im speziellen Forum für die Shopsoftware bisher nicht geholfen werden konnte.
Nun aber zum Thema,
es handelt sich um einen Shop auf Basis von OScommerce, der nun um einige Kundendaten erweitert werden soll.
Da es keine passende Erweiterung (bei OSC Contribution genannt) gibt, ich aber eine Anleitung zum hinzufügen eins zusätzlichen Adressfeldes gefunden habe, wollte ich auf dieser Basis die benötigten Daten-Felder realisieren, in dem ich die Erweiterung vervielfache und die entspechenden Variablen ändere.
Soweit so gut, nur bei einer Änderung reicht mein PHP-Wissen nicht aus.
Folgenden Code müsste ich so umändern, das er für mehrere nicht Adressdaten, sprich Haarfarbe, Religion oder was auch immer, verwendbar ist,
und nicht nur über diese eine, für meine Anforderungen evtl. sogar an der falschen Stelle angesetzten Änderung verfügt.
...
$statecomma = '';
$streets = $street;
// Second Address Field mod:
if ($street_2 != '') $streets = $street . $cr . $street_2;
// :Second Address Field mod
if ($suburb != '') $streets = $street . $cr . $suburb;
if ($country == '') $country = tep_output_string_protected($address['country']);
if ($state != '') $statecomma = $state . ', ';
...[/b]
Hier mal den, meine Frage betreffenden Teil der Anleitung...
PHP-Code:
<?php
---------------------------------------
in catalog/admin/includes/functions/general.php:
---------------------------------------
FIND (at or around line 341, the entire function):
function tep_address_format($address_format_id, $address, $html, $boln, $eoln) {
$address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . (int)$address_format_id . "'");
$address_format = tep_db_fetch_array($address_format_query);
$company = tep_output_string_protected($address['company']);
if (isset($address['firstname']) && tep_not_null($address['firstname'])) {
$firstname = tep_output_string_protected($address['firstname']);
$lastname = tep_output_string_protected($address['lastname']);
} elseif (isset($address['name']) && tep_not_null($address['name'])) {
$firstname = tep_output_string_protected($address['name']);
$lastname = '';
} else {
$firstname = '';
$lastname = '';
}
$street = tep_output_string_protected($address['street_address']);
$suburb = tep_output_string_protected($address['suburb']);
$city = tep_output_string_protected($address['city']);
$state = tep_output_string_protected($address['state']);
if (isset($address['country_id']) && tep_not_null($address['country_id'])) {
$country = tep_get_country_name($address['country_id']);
if (isset($address['zone_id']) && tep_not_null($address['zone_id'])) {
$state = tep_get_zone_code($address['country_id'], $address['zone_id'], $state);
}
} elseif (isset($address['country']) && tep_not_null($address['country'])) {
$country = tep_output_string_protected($address['country']);
} else {
$country = '';
}
$postcode = tep_output_string_protected($address['postcode']);
$zip = $postcode;
if ($html) {
// HTML Mode
$HR = '<hr>';
$hr = '<hr>';
if ( ($boln == '') && ($eoln == "\n") ) { // Values not specified, use rational defaults
$CR = '
';
$cr = '
';
$eoln = $cr;
} else { // Use values supplied
$CR = $eoln . $boln;
$cr = $CR;
}
} else {
// Text Mode
$CR = $eoln;
$cr = $CR;
$HR = '----------------------------------------';
$hr = '----------------------------------------';
}
$statecomma = '';
$streets = $street;
if ($suburb != '') $streets = $street . $cr . $suburb;
if ($country == '') $country = tep_output_string_protected($address['country']);
if ($state != '') $statecomma = $state . ', ';
$fmt = $address_format['format'];
eval("\$address = \"$fmt\";");
if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) {
$address = $company . $cr . $address;
}
return $address;
}
REPLACE ENTIRE FUNCTION WITH:
function tep_address_format($address_format_id, $address, $html, $boln, $eoln) {
$address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . (int)$address_format_id . "'");
$address_format = tep_db_fetch_array($address_format_query);
$company = tep_output_string_protected($address['company']);
if (isset($address['firstname']) && tep_not_null($address['firstname'])) {
$firstname = tep_output_string_protected($address['firstname']);
$lastname = tep_output_string_protected($address['lastname']);
} elseif (isset($address['name']) && tep_not_null($address['name'])) {
$firstname = tep_output_string_protected($address['name']);
$lastname = '';
} else {
$firstname = '';
$lastname = '';
}
$street = tep_output_string_protected($address['street_address']);
// Second Address Field mod:
$street_2 = tep_output_string_protected($address['street_address_2']);
// :Second Address Field mod
$suburb = tep_output_string_protected($address['suburb']);
$city = tep_output_string_protected($address['city']);
$state = tep_output_string_protected($address['state']);
if (isset($address['country_id']) && tep_not_null($address['country_id'])) {
$country = tep_get_country_name($address['country_id']);
if (isset($address['zone_id']) && tep_not_null($address['zone_id'])) {
$state = tep_get_zone_code($address['country_id'], $address['zone_id'], $state);
}
} elseif (isset($address['country']) && tep_not_null($address['country'])) {
$country = tep_output_string_protected($address['country']);
} else {
$country = '';
}
$postcode = tep_output_string_protected($address['postcode']);
$zip = $postcode;
if ($html) {
// HTML Mode
$HR = '<hr>';
$hr = '<hr>';
if ( ($boln == '') && ($eoln == "\n") ) { // Values not specified, use rational defaults
$CR = '
';
$cr = '
';
$eoln = $cr;
} else { // Use values supplied
$CR = $eoln . $boln;
$cr = $CR;
}
} else {
// Text Mode
$CR = $eoln;
$cr = $CR;
$HR = '----------------------------------------';
$hr = '----------------------------------------';
}
$statecomma = '';
$streets = $street;
// Second Address Field mod:
if ($street_2 != '') $streets = $street . $cr . $street_2;
// :Second Address Field mod
if ($suburb != '') $streets = $street . $cr . $suburb;
if ($country == '') $country = tep_output_string_protected($address['country']);
if ($state != '') $statecomma = $state . ', ';
$fmt = $address_format['format'];
eval("\$address = \"$fmt\";");
if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) {
$address = $company . $cr . $address;
}
return $address;
}
?>
Wenn ich das halbwegs richtig verstanden habe, bedeutet
if ($street_2 != '') $streets = $street . $cr . $street_2; doch, das wenn die Variable $street_2 gesetzt ist, die Var. $streets sozusagen aus $street Zeilenumbruch (je nach ausgabe
oder \n ) und $street_2 zusammengestzt wird, oder?
Müsste dann aber nicht
$streets = $street; statt über der if-Abfrage innerhalb dieser sein ??? Also:
PHP-Code:
<?php
if ($street_2 != '') $streets = $street . $cr . $street_2;
else $streets = $street;
?>
Ich hoffe, ihr könnt halbwegs verstehen was ich meine
und hoffe jetzt auf reichlich Hilfe :wink:
Wenn´s hilft poste ich auch gerne die komplette general.php,
hab aber erst mal, auf Grund ihres Umfangs, darauf verzichtet.
Viele Grüße
Andreas