Johan van de Pol

IT related news, fotography, fun and webdevelopment

Archive for the ‘Internet’ Category

Vaak is het gewenst om extra velden toe te voegen aan de klant-registratie (Customer_Block_Form_Register). Hier zijn een aantal stappen voor nodig:

Definiëren extra velden bij klant registratie

1.) Installeer de ‘Attributes manager’: Magento Connect – Attributes manager – Overview – eCommerce Software for Growth

2.) Fix de URL’s van deze extensie in de BackOffice.
Ga hiervoor naar: “app/design/adminhtml/{template}/template/attributemanager/index.phtml”

En fix de a href’s met de volgende code:

<div align="center">
        <h3 class="icon-head"><u>< ?php echo Mage::helper('attributemanager')->__('Choose attributes to manage') ?></u></h3>
        <br /><br />
        <h3 class="icon-head">
        <a href="<?php echo $this->getUrl('*/*/category');?>">< ?php echo Mage::helper('attributemanager')->__('Categories attributes') ?></a>
        <br />
        <a href="<?php echo $this->getUrl('*/*/customer');?>">< ?php echo Mage::helper('attributemanager')->__('Customers attributes') ?></a>
        <br />
        <a href="<?php echo $this->getUrl('*/*/address');?>">< ?php echo Mage::helper('attributemanager')->__('Customers address attributes') ?></a></h3>
    </div> 

3.) Maak je custom attribute (extra invoer veld). Bijvoorbeeld extra veld bij de klant registratie (customer registration).
Dit kunt u hier doen: admin/Systeem/Manager/Manage attributes
De attribute manager zorgt ervoor dat het custom attribute in de tabel eav_attribute wordt geplaatst.

4.) We moeten de core klasse Mage_Customer_Block_Form_Register uitbreiden met wat functionaliteit.
Aangezien we bij een update ook operationeel willen blijven, moeten we magento hier uitbreiden, we attenderen Magento op onze extra functionaliteit. Let op De stap is alleen nodig bij het dynamisch ophalen van drop-down lijsten, voor een simpel invoer veld is deze functie niet nodig

Maak een file {BedrijfsNaam}_Customer.xml in: app/etc/modules/ en voeg hier de volgende XML code aan toe.

< ?xml version="1.0"?>
<config>
	<modules>
        <bedrijfsnaam_customer>
           <active>true</active>
           <codepool>local</codepool>
           <version>>0.1.0< /span></version>
       </bedrijfsnaam_customer>
	</modules>
</config>

Nu weet Magento dat hij eerst bij de door jou zelf gedefineerde module moet kijken.
Maar nu moeten we deze klasse nog wel even maken uiteraard.
Maak dit bestand aan:
app/code/local/{BedrijfsNaam}/Customer/Block/Form/Register.php

Let op
Extra zelf gedefineerde code, moet je altijd in de map app/code/local/ plaatsen, deze code wordt bij een update van Magento niet overschreven.

Hier de klasse zelf (de Register.php):

< ?php
/**
 * Customer register form block
 *
 * @author      Johan van de Pol
 */
class BedrijfsNaam_Customer_Block_Form_Register extends Mage_Customer_Block_Form_Register
{
    /**
     * Get CustomField options
     *
     * @param String $custom_field            Name of custom_field.
     * @param Integer $attribute_id            Attribute_ID of custom field.
     * @return Array                         With attribute options.
     */
    public function getCustomFieldOption ($custom_field, $attribute_id)
    { 
        $attribute = Mage::getModel('customer/customer')->getAttribute($custom_field, $attribute_id);
        return $attribute->getSource()->getAllOptions(true, true);
    }
} 

Voor de afhandeling moet magento er ook op worden geattendeerd dat er een extra attribute bij gekomen is (voor de afhandeling en het opslaan). En hij moet weten dat de klasse van jou module eerst moet worden aangeroepen.

Maak hiervoor het volgende bestand aan:
app/code/local/{BedrijfsNaam}/Customer/etc/config.xml

< ?xml version="1.0"?>
<config>
	<global>
		<blocks>
			<customer>
				<rewrite>
					<form_register>BedrijfsNaam_Customer_Block_Form_Register</form_register>
				</rewrite>
			</customer>
		</blocks>
		<fieldsets>
      			<customer_account>
      				<extra_veld><create>>1< /span></create></extra_veld>
	      		</customer_account>
		</fieldsets>
	</global>
</config>

5.) Nu is het tijd voor de weergave van het drop-down attribute zelf.
Zet hiervoor onderstaande code in app/design/frontend/{template}template/customer/form/register.phtml

<div class="input-box">
                    <label for="UW_EXTRA_VELD">< ?php echo $this->__('UW_EXTRA_VELD') ?><span class="required">*</span></label><br />
                    <select id="UW_EXTRA_VELD" name="UW_EXTRA_VELD" class="select">
                         < ?php foreach ($this->getCustomFieldOption('UW_EXTRA_VELD', 'attribute_id') as $option): ?>
                         <option value="<?php echo $option['value'] ?>">< ?php echo $option['label'] ?></option>
                         < ?php endforeach; ?>
                    </select>
                </div>

Opmerking
Zonder attribute_id werkt hij blijkbaar ook, maar het attribute ID vind je in de database en wel in de volgende tabel ‘eav_attribute’.
De volgende Query levert u het juiste attributeID op:

SELECT attribute_id FROM `eav_attribute` WHERE `attribute_code` = 'UW_EXTRA_VELD'

Het extra attribute (input field or dropdown list) is nu zichtbaar en wordt ook netjes opgeslagen.

Deze tutorial is geschreven op het moment dat Magento 1.3.2.3 de meest recente versie was.

De bug in firebug 1.4 ook zo zat? installeer de meest recente versie (firebug-1.5X.0a18) op http://getfirebug.com/releases/firebug/1.5X/

De bug in versie 1.4 zorgt er voor dat ongeveer 3 op de 10 ajax requests (xmlhttprequest) falen, dit is natuurlijk erg irritant.

De foutmelding die getoond wordt is overigens:

onreadystatechange FAILS Error: Permission denied for <http://localhost> to create wrapper for object of class UnnamedClass Error: Permission denied for <http://localhost> to create wrapper for object of class UnnamedClass readystatechange

Uitfasering IE 6.0

Waar veel webontwikkelaars al mee bezig waren, gaan de grote bedrijven nu ook mee beginnen. We hebben het dan over het niet meer ondersteunen van Internet Explorer 6.0.

Aangezien dat deze browser zich erg slecht hield aan de W3C standaard, was het altijd een ware plaag voor de webdeveloper.

YouTube
Met het grote bedrijf doel ik op Google, die de ondersteuning van IE 6.0 niet meer biedt bij haar project Youtube. Zoals te lezen is op Nu.nl zegt YouTube IE 6.0 voorgoed vaarwel.

Gebruik
Toch wordt IE 6.0 nog opmerkelijk veel gebruikt, dit komt vooral door het achterblijven van sommige bedrijven. Privé wordt IE 6.0 nog maar op hele kleine schaal gebruikt. Zie ook:

Browser Statistics Month by Month

2009 IE7 IE6 IE8 Firefox Chrome Safari Opera
June 18.7% 14.9% 7.1% 47.3% 6.0% 3.1% 2.1%
May 21.3% 14.5% 5.2% 47.7% 5.5% 3.0% 2.2%
April 23.2% 15.4% 3.5% 47.1% 4.9% 3.0% 2.2%
March 24.9% 17.0% 1.4% 46.5% 4.2% 3.1% 2.3%
February 25.4% 17.4% 0.8% 46.4% 4.0% 3.0% 2.2%
January 25.7% 18.5% 0.6% 45.5% 3.9% 3.0% 2.3%

Bron: w3schools

Wanneer spelen we vanavond?

Met Google Analytics kan je de bezoekers van je site analyseren. De meeste internet bedrijven gebruiken deze tool dan ook veelvuldig. Zelf gebruik ik Google Analytics ook voor de meeste projecten, zo ook voor devrijetrappers.nl.

Illustratie van bezoekers per dag

Illustratie van bezoekers per dag

Devrijetrappers.nl is een site van een zaalvoetbalvereniging, de kern van de activiteiten van de bezoekers ligt natuurlijk op het kijken hoe laat er gespeeld moet worden. Nu is het zo dat Google Analytics dit erg mooi illustreert. (zie afbeelding).

De bezoekers van deze website zijn natuurlijk maar in 1 ding echt geïnteresseerd en dat is hoe laat moeten we spelen? Wanneer deze interesse gewekt wordt, is natuurlijk ook duidelijk aangezien woensdagavond de enige speelavond is. Op de afbeelding zie je precies dat elke woensdag een piek moment is in de bezoekersaantallen.

Calorie Experience

Op site van Calorie Experience is het sinds afgelopen zaterdag mogelijk de Calorie Checker te bestellen. De Calorie Checker kan je na betaling meteen downloaden. Tijdens de installatie van de Calorie Checker krijg je een validatie-sleutel. Deze kan je op de site invoeren en vervolgens wordt je dan een registratie-sleutel opgestuurd.

ideal_gif

De betaling is overigens gerealiseerd d.m.v. IDEAL, de laatste zaken m.b.t. de implementatie zijn zaterdag afgerond.

  • 0 Comments
  • Filed under: Internet, Werk
  • Google Latitude

    Sinds deze week heeft Google een extra feature toegevoegd aan Google maps. Deze nieuwe feature heet Google Latitude. Dit is een dienst waarmee het mogelijk is vrienden te traceren. Vrienden kan je uitnodigen en pas als deze uitnodiging is geaccepteerd kan je elkaar zien.

    Als je dan een aantal vrienden hebt uitgenodigd en je hebt elkaar geaccepteerd, kan je elkaar dus live volgen. Mocht je dit een keer of helemaal niet meer willen, is dat configurabel bij de privacy instellingen.

    Heb je GPS op je telefoon dan kan je het werkelijk live zien op een paar meter nauwkeurig, de overige toestellen moeten het doen met de GSM signalen, dit is op een paar honderd meter nauwkeurig.

    Zelf heb ik Google Latitude getest op mijn mobiele telefoon, de HTC TyTn II.

    Google Latitude

    Google Latitude


  • 0 Comments
  • Filed under: Internet, Techniek