Isotope Adressbuch - Überschriften hinterlegter Adressen
Hallo Community,
Ich finde Isotope ein Shopsystem mit viel potential.
Etwas hat mich jedoch aus Kundensicht gesehen gestört.
Im Adressbuch werden die hinterlegten Adressen aufgelistet,
jedoch kein Bezug angezeigt, ob es sich um eine Liefer-, Rechnungs- oder
Versand- und Rechnungsadresse handelt.
Mit einem Freund zusammen haben wir uns heut Nacht einmal mit dieser Problematik auseinandergesetzt und Folgendes umgesetzt:
Wir haben Änderungen an der ModuleIsotopeAddressBook.php und der mod_iso_addressbook.tpl vorgenommen.
Das ModuleIsotopeAddressBook.php wurde ab Zeile 108 wie folgt geändert:
PHP-Code:
/**
* List all addresses for the current frontend user.
*/
protected function show()
{
global $objPage;
$i = 0;
$arrAddresses = array();
$objAddressLabel = array();
$strUrl = $this->generateFrontendUrl($objPage->row()) . ($GLOBALS['TL_CONFIG']['disableAlias'] ? '&' : '?');
$objAddresses = $this->Database->execute("SELECT * FROM tl_iso_addresses WHERE pid={$this->User->id}");
while( $objAddresses->next() )
{
$arrAddresses[] = array
(
'id' => $objAddresses->id,
'ids' => $objAddresses->isDefaultShipping,
'idb' => $objAddresses->isDefaultBilling,
'class' => (($i%2 ? 'even' : 'odd') . ($i==0 ? ' first' : '')),
'text' => $this->Isotope->generateAddressString($objAddresses->row()),
'edit_url' => ampersand($strUrl . 'act=edit&address=' . $objAddresses->id),
'delete_url' => ampersand($strUrl . 'act=delete&address=' . $objAddresses->id),
);
$i++;
}
if (count($arrAddresses))
{
$arrAddresses[count($arrAddresses)-1]['class'] .= ' last';
}
else
{
$this->Template->mtype = 'empty';
$this->Template->message = $GLOBALS['TL_LANG']['ERR']['noAddressBookEntries'];
}
$this->Template->addressLabel = $GLOBALS['TL_LANG']['MSC']['addressBookLabel'];
$this->Template->addNewAddressLabel= $GLOBALS['TL_LANG']['MSC']['createNewAddressLabel'];
$this->Template->editAddressLabel = $GLOBALS['TL_LANG']['MSC']['editAddressLabel'];
$this->Template->deleteAddressLabel = $GLOBALS['TL_LANG']['MSC']['deleteAddressLabel'];
$this->Template->addresses = $arrAddresses;
$this->Template->addNewAddress = ampersand($strUrl . 'act=create');
}
Es wurden 'ids' für die Liefer- und 'idb' für die Rechnungsadresse
dem $arrAddresses hinzugefügt.
Danach wurde die mod_iso_addressbook.tpl wie folgt geändert:
PHP-Code:
<!-- indexer::stop -->
<div class="<?php echo $this->class; ?>"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<div class="my-account">
<div class="page-title title-buttons">
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>
<a class="button" href="<?php echo $this->addNewAddress; ?>" title="<?php echo $this->addNewAddressLabel; ?>"><?php echo $this->addNewAddressLabel; ?></a> </div>
<ul class="messages">
<li class="success-msg">
<?php if(strlen($this->message)): ?>
<ul>
<li>
<?php { echo $this->message; ?>
<?php } else: { echo "Folgende Adressen wurden eingetragen."; } ?>
</li>
</ul>
<?php endif; ?>
</li>
</ul>
<?php if( count($this-addresses) ): ?>
<div class="adressen">
<?php foreach( $this->addresses as $address ):?>
<div>
<?php $adshipping = $address['ids']; ?>
<?php $adbilling = $address['idb']; ?>
<?php if ($adshipping != 0 && $adbilling != 0 ) { ?>
<div class="box-title">
<h2>Rechnungs- und Lieferadresse </h2>
</div>
<ul>
<li class="<?php echo $address['class']; ?>">
<div class="buttons"> <a class="edit" href="<?php echo $address['edit_url']; ?>" title="<?php echo $this->editAddressLabel; ?>"><?php echo $this->editAddressLabel; ?></a> <a class="delete" href="<?php echo $address['delete_url']; ?>" title="<?php echo $this->deleteAddressLabel; ?>"><?php echo $this->deleteAddressLabel; ?></a> </div>
<?php echo $address['text']; ?> </li>
</ul>
<br />
<?php } ?>
<?php if ($adshipping != 0 && $adbilling != 1 ) { ?>
<div class="box-title">
<h2>Lieferadresse </h2>
</div>
<ul>
<li class="<?php echo $address['class']; ?>">
<div class="buttons"> <a class="edit" href="<?php echo $address['edit_url']; ?>" title="<?php echo $this->editAddressLabel; ?>"><?php echo $this->editAddressLabel; ?></a> <a class="delete" href="<?php echo $address['delete_url']; ?>" title="<?php echo $this->deleteAddressLabel; ?>"><?php echo $this->deleteAddressLabel; ?></a> </div>
<?php echo $address['text']; ?> </li>
</ul>
<br />
<?php } if ($adshipping != 1 && $adbilling != 0 ) { ?>
<div class="box-title">
<h2>Rechnungsadresse </h2>
</div>
<ul>
<li class="<?php echo $address['class']; ?>">
<div class="buttons"> <a class="edit" href="<?php echo $address['edit_url']; ?>" title="<?php echo $this->editAddressLabel; ?>"><?php echo $this->editAddressLabel; ?></a> <a class="delete" href="<?php echo $address['delete_url']; ?>" title="<?php echo $this->deleteAddressLabel; ?>"><?php echo $this->deleteAddressLabel; ?></a> </div>
<?php echo $address['text']; ?> </li>
</ul>
<br />
<?php } ?>
<?php if ($adshipping != 1 && $adbilling !=1 ) { ?>
<div class="box-title"style="color:#999">
<h2>Keine Rechnungs- oder Lieferadresse definiert</h2>
</div>
<ul>
<li class="<?php echo $address['class']; ?>">
<div class="buttons"> <a class="edit" href="<?php echo $address['edit_url']; ?>" title="<?php echo $this->editAddressLabel; ?>"><?php echo $this->editAddressLabel; ?></a> <a class="delete" href="<?php echo $address['delete_url']; ?>" title="<?php echo $this->deleteAddressLabel; ?>"><?php echo $this->deleteAddressLabel; ?></a> </div>
<p style="color:#999"><?php echo $address['text']; ?></p>
</li>
</ul>
<br />
<?php } ?>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
<!-- indexer::continue -->
Jetzt wird bei jeder Adresse angezeigt, ob es eine Liefer-, Rechnungs-,
Liefer- und Rechnungsadresse oder Keine Rechnungs- oder Lieferadresse handelt.
Für jede Verbesserung oder Vorschläge auch im Bezug auf die Mehrsprachigkeit, die wir in diesem Fall ganz außer Acht gelassen haben, würde ich mich freuen.
Ich wünsch Euch allen einen Guten Rutsch! ;)
Gruß
mrx02de
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Andreas,
vielen Dank für das Feedback.
Ich habe Contao erst vor 2 Monaten entdeckt und versuche mich etwas einzuarbeiten.
OK, das gewünschte Foto zur Verdeutlichung im Anhang.
Nun in diesem Fall wird nix Gruppiert, lediglich der jeweiligen Adresse eine passende Überschrift oder Deklaration vergeben. Man kann die Adressen als Rechnungs-, als Liefer- bzw. als Rechnungs- und Lieferadresse oder aber mit garnix deklarieren.
Mit etwas Hilfe könnte man das ganze auch Mehrsprachig umsetzen.
Was mich jedoch auch etwas irritiert ist folgendes:
Die User-Adressen sind für den Shop nich limitiert.
Wenn der Kunde lustig ist... ;) kann er 100 und mehr Adressen angeben.
Eine Limitierungseinstellung über das Backend wäre evtl. noch ein Zusatzfeature und meiner Meinung nach Sinnvoll. Ich denke 1 - 4 Adressen sollten langen.
Viele Grüße
mrx02de