Adding custom attribute to customer registration form
To allow to publish an attribute in the register form and some others form page, you have to set that the attribute(s) is/are available to those forms.
To do that here is a sample code to put in your sql setup below. You can find the rest of the code I used for my Magento Username module on my github account.
/* @var $installer Diglin_Username_Model_Entity_Setup */
$installer = $this;
/* @var $eavConfig Mage_Eav_Model_Config */
$eavConfig = Mage::getSingleton('eav/config');
$store = Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$attributes = $installer->getAdditionalAttributes();
foreach ($attributes as $attributeCode => $data) {
$installer->addAttribute('customer', $attributeCode, $data);
$attribute = $eavConfig->getAttribute('customer', $attributeCode);
$attribute->setWebsite( (($store->getWebsite()) ? $store->getWebsite() : 0));
if (false === ($attribute->getIsSystem() == 1 && $attribute->getIsVisible() == 0)) {
$usedInForms = array(
'customer_account_create',
'customer_account_edit',
'checkout_register',
);
if (!empty($data['adminhtml_only'])) {
$usedInForms = array('adminhtml_customer');
} else {
$usedInForms[] = 'adminhtml_customer';
}
if (!empty($data['adminhtml_checkout'])) {
$usedInForms[] = 'adminhtml_checkout';
}
$attribute->setData('used_in_forms', $usedInForms);
}
$attribute->save();
}