Joomla! Template Override:

Benutzer mit Vorname + Nachname


Name aus Vorname und Nachname automatisch zusammensetzen

Zur Anlage eines neuen Benutzers gibt es in Joomla die Pflichtfelder Name, Benutzername und Passwort. Während der Benutzername und das Passwort für die Anmeldung verwendet wird, ist das Feld Name dafür gedacht, dass man hier den vollen Namen eintragen soll.

Manchmal möchte man hierfür aber 2 Felder benutzen (Vorname und Nachname), welche man mittels der Custom-Fields anlegen. Damit man nun aber nicht alle 3 Felder (Name, Vorname und Nachname) pflegen muss, kommt hier dieses kleine Override ins Spiel. Dabei wird der "Name" automatisch aus den Feldern "Vorname" und "Nachname" automatisch zusammengesetzt.

  1. Die 2 Custom-Fields "Vorname" und "Nachname" anlegen und merkt Euch jeweils den Namen der Felder. (Bild custom_fields.jpg)
  2. Erstellt jeweils ein Override von "com_users > user" im Frontend und im Backend, damit der Override in beiden funktioniert.
  3. Fügt jeweils in den Dateien "edit.php" ein kleines JavaScript hinzu (Bild javascript.jpg). Beachtet hierbei, dass Ihr die Zeilen (im Bild) 55, 59 und 62 noch jeweils an die Namen Eurer Custom-Fields anpasst.

Die Zeile "$('input#jform_name').parent().parent().hide();" habe ich nur im Frontend und im Backend auskommentiert. Diese sorgt dafür, dass das Feld "Name" ausgeblendet wird. Es muss weiterhin vorhanden sein, da es ein Pflichtfeld von Joomla ist. Im Backend kann es jedoch angezeigt werden, da hier keine Fehleingaben zu erwarten sind. Ansonsten kann man es bei Bedarf auch ausblenden lassen.

Nachtrag: Für eine "saubere" Lösung im Backend kann man das javascript auch mittels "addScriptDeclaration" hinzufügen.

Benötigte Override-Dateien


  • <?php
    /**
     * @package     Joomla.Site
     * @subpackage  com_users
     *
     * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    
    defined('_JEXEC') or die;
    
    JHtml::_('behavior.keepalive');
    JHtml::_('behavior.formvalidator');
    JHtml::_('formbehavior.chosen', 'select');
    JHtml::_('bootstrap.tooltip');
    
    
    // Load user_profile plugin language
    $lang = JFactory::getLanguage();
    $lang->load('plg_user_profile', JPATH_ADMINISTRATOR);
    
    ?>
    <div class="profile-edit<?php echo $this->pageclass_sfx; ?>">
    	<?php if ($this->params->get('show_page_heading')) : ?>
    		<div class="page-header">
    			<h1>
    				<?php echo $this->escape($this->params->get('page_heading')); ?>
    			</h1>
    		</div>
    	<?php endif; ?>
    	<script type="text/javascript">
    		Joomla.twoFactorMethodChange = function(e)
    		{
    			var selectedPane = 'com_users_twofactor_' + jQuery('#jform_twofactor_method').val();
    
    			jQuery.each(jQuery('#com_users_twofactor_forms_container>div'), function(i, el)
    			{
    				if (el.id != selectedPane)
    				{
    					jQuery('#' + el.id).hide(0);
    				}
    				else
    				{
    					jQuery('#' + el.id).show(0);
    				}
    			});
    		}
    	</script>
    	<script type="text/javascript">
    	(function ($) {
    		$(document).ready(function() {
    			$('input#jform_name').parent().parent().hide();
    			
    			function new_name(){
    				var usr_name = $('input#jform_com_fields_nachname').val() + ', ' + $('input#jform_com_fields_vorname').val();			
    				$('input#jform_name').val(usr_name);
    			}
    			
    			$('#jform_com_fields_nachname').on('input', function() {
    				new_name();
    			});
    			$('#jform_com_fields_vorname').on('input', function() {
    				new_name();
    			});
    	});
    	
    	})(jQuery);
    	</script>      
    	<form id="member-profile" action="<?php echo JRoute::_('index.php?option=com_users&task=profile.save'); ?>" method="post" class="form-validate form-horizontal well" enctype="multipart/form-data">
    		<?php // Iterate through the form fieldsets and display each one. ?>
    		<?php foreach ($this->form->getFieldsets() as $group => $fieldset) : ?>
    			<?php $fields = $this->form->getFieldset($group); ?>
    			<?php if (count($fields)) : ?>
    				<fieldset>
    					<?php // If the fieldset has a label set, display it as the legend. ?>
    					<?php if (isset($fieldset->label)) : ?>
    						<legend>
    							<?php echo JText::_($fieldset->label); ?>
    						</legend>
    					<?php endif; ?>
    					<?php if (isset($fieldset->description) && trim($fieldset->description)) : ?>
    						<p>
    							<?php echo $this->escape(JText::_($fieldset->description)); ?>
    						</p>
    					<?php endif; ?>
    					<?php // Iterate through the fields in the set and display them. ?>
    					<?php foreach ($fields as $field) : ?>
    						<?php // If the field is hidden, just display the input. ?>
    						<?php if ($field->hidden) : ?>
    							<?php echo $field->input; ?>
    						<?php else : ?>
    							<div class="control-group">
    								<div class="control-label">
    									<?php echo $field->label; ?>
    									<?php if (!$field->required && $field->type !== 'Spacer') : ?>
    										<span class="optional">
    											<?php echo JText::_('COM_USERS_OPTIONAL'); ?>
    										</span>
    									<?php endif; ?>
    								</div>
    								<div class="controls">
    									<?php if ($field->fieldname === 'password1') : ?>
    										<?php // Disables autocomplete ?>
    										<input type="password" style="display:none">
    									<?php endif; ?>
    									<?php echo $field->input; ?>
    								</div>
    							</div>
    						<?php endif; ?>
    					<?php endforeach; ?>
    				</fieldset>
    			<?php endif; ?>
    		<?php endforeach; ?>
    		<?php if (count($this->twofactormethods) > 1) : ?>
    			<fieldset>
    				<legend><?php echo JText::_('COM_USERS_PROFILE_TWO_FACTOR_AUTH'); ?></legend>
    				<div class="control-group">
    					<div class="control-label">
    						<label id="jform_twofactor_method-lbl" for="jform_twofactor_method" class="hasTooltip"
    							title="<?php echo '<strong>' . JText::_('COM_USERS_PROFILE_TWOFACTOR_LABEL') . '</strong><br />' . JText::_('COM_USERS_PROFILE_TWOFACTOR_DESC'); ?>">
    							<?php echo JText::_('COM_USERS_PROFILE_TWOFACTOR_LABEL'); ?>
    						</label>
    					</div>
    					<div class="controls">
    						<?php echo JHtml::_('select.genericlist', $this->twofactormethods, 'jform[twofactor][method]', array('onchange' => 'Joomla.twoFactorMethodChange()'), 'value', 'text', $this->otpConfig->method, 'jform_twofactor_method', false); ?>
    					</div>
    				</div>
    				<div id="com_users_twofactor_forms_container">
    					<?php foreach ($this->twofactorform as $form) : ?>
    						<?php $style = $form['method'] == $this->otpConfig->method ? 'display: block' : 'display: none'; ?>
    						<div id="com_users_twofactor_<?php echo $form['method']; ?>" style="<?php echo $style; ?>">
    							<?php echo $form['form']; ?>
    						</div>
    					<?php endforeach; ?>
    				</div>
    			</fieldset>
    			<fieldset>
    				<legend>
    					<?php echo JText::_('COM_USERS_PROFILE_OTEPS'); ?>
    				</legend>
    				<div class="alert alert-info">
    					<?php echo JText::_('COM_USERS_PROFILE_OTEPS_DESC'); ?>
    				</div>
    				<?php if (empty($this->otpConfig->otep)) : ?>
    					<div class="alert alert-warning">
    						<?php echo JText::_('COM_USERS_PROFILE_OTEPS_WAIT_DESC'); ?>
    					</div>
    				<?php else : ?>
    					<?php foreach ($this->otpConfig->otep as $otep) : ?>
    						<span class="span3">
    							<?php echo substr($otep, 0, 4); ?>-<?php echo substr($otep, 4, 4); ?>-<?php echo substr($otep, 8, 4); ?>-<?php echo substr($otep, 12, 4); ?>
    						</span>
    					<?php endforeach; ?>
    					<div class="clearfix"></div>
    				<?php endif; ?>
    			</fieldset>
    		<?php endif; ?>
    		<div class="control-group">
    			<div class="controls">
    				<button type="submit" class="btn btn-primary validate">
    					<?php echo JText::_('JSUBMIT'); ?>
    				</button>
    				<a class="btn" href="<?php echo JRoute::_('index.php?option=com_users&view=profile'); ?>" title="<?php echo JText::_('JCANCEL'); ?>">
    					<?php echo JText::_('JCANCEL'); ?>
    				</a>
    				<input type="hidden" name="option" value="com_users" />
    				<input type="hidden" name="task" value="profile.save" />
    			</div>
    		</div>
    		<?php echo JHtml::_('form.token'); ?>
    	</form>
    </div>
    
  • <?php
    /**
     * @package     Joomla.Administrator
     * @subpackage  com_users
     *
     * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    
    defined('_JEXEC') or die;
    
    // Include the component HTML helpers.
    JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
    
    JHtml::_('behavior.formvalidator');
    JHtml::_('formbehavior.chosen', 'select');
    
    JFactory::getDocument()->addScriptDeclaration("
    	Joomla.submitbutton = function(task)
    	{
    		if (task == 'user.cancel' || document.formvalidator.isValid(document.getElementById('user-form')))
    		{
    			Joomla.submitform(task, document.getElementById('user-form'));
    		}
    	};
    
    	Joomla.twoFactorMethodChange = function(e)
    	{
    		var selectedPane = 'com_users_twofactor_' + jQuery('#jform_twofactor_method').val();
    
    		jQuery.each(jQuery('#com_users_twofactor_forms_container>div'), function(i, el) {
    			if (el.id != selectedPane)
    			{
    				jQuery('#' + el.id).hide(0);
    			}
    			else
    			{
    				jQuery('#' + el.id).show(0);
    			}
    		});
    	};
    ");
    
    // Get the form fieldsets.
    $fieldsets = $this->form->getFieldsets();
    ?>
    	<script type="text/javascript">
    	(function ($) {
    		$(document).ready(function() {
    			//$('input#jform_name').parent().parent().hide();
    			
    			function new_name(){
    				var usr_name = $('input#jform_com_fields_nachname').val() + ', ' + $('input#jform_com_fields_vorname').val();			
    				$('input#jform_name').val(usr_name);
    			}
    			
    			$('#jform_com_fields_nachname').on('input', function() {
    				new_name();
    			});
    			$('#jform_com_fields_vorname').on('input', function() {
    				new_name();
    			});
    	});
    	
    	})(jQuery);
    	</script>
    <form action="<?php echo JRoute::_('index.php?option=com_users&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="user-form" class="form-validate form-horizontal" enctype="multipart/form-data">
    
    	<?php echo JLayoutHelper::render('joomla.edit.item_title', $this); ?>
    
    	<fieldset>
    		<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?>
    
    			<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_USERS_USER_ACCOUNT_DETAILS')); ?>
    				<?php foreach ($this->form->getFieldset('user_details') as $field) : ?>
    					<div class="control-group">
    						<div class="control-label">
    							<?php echo $field->label; ?>
    						</div>
    						<div class="controls">
    							<?php if ($field->fieldname == 'password') : ?>
    								<?php // Disables autocomplete ?> <input type="password" style="display:none">
    							<?php endif; ?>
    							<?php echo $field->input; ?>
    						</div>
    					</div>
    				<?php endforeach; ?>
    			<?php echo JHtml::_('bootstrap.endTab'); ?>
    
    			<?php if ($this->grouplist) : ?>
    				<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'groups', JText::_('COM_USERS_ASSIGNED_GROUPS')); ?>
    					<?php echo $this->loadTemplate('groups'); ?>
    				<?php echo JHtml::_('bootstrap.endTab'); ?>
    			<?php endif; ?>
    
    			<?php
    			$this->ignore_fieldsets = array('user_details');
    			echo JLayoutHelper::render('joomla.edit.params', $this);
    			?>
    
    		<?php if (!empty($this->tfaform) && $this->item->id) : ?>
    		<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'twofactorauth', JText::_('COM_USERS_USER_TWO_FACTOR_AUTH')); ?>
    		<div class="control-group">
    			<div class="control-label">
    				<label id="jform_twofactor_method-lbl" for="jform_twofactor_method" class="hasTooltip"
    						title="<?php echo '<strong>' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL') . '</strong><br />' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_DESC'); ?>">
    					<?php echo JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL'); ?>
    				</label>
    			</div>
    			<div class="controls">
    				<?php echo JHtml::_('select.genericlist', Usershelper::getTwoFactorMethods(), 'jform[twofactor][method]', array('onchange' => 'Joomla.twoFactorMethodChange()'), 'value', 'text', $this->otpConfig->method, 'jform_twofactor_method', false); ?>
    			</div>
    		</div>
    		<div id="com_users_twofactor_forms_container">
    			<?php foreach ($this->tfaform as $form) : ?>
    			<?php $style = $form['method'] == $this->otpConfig->method ? 'display: block' : 'display: none'; ?>
    			<div id="com_users_twofactor_<?php echo $form['method'] ?>" style="<?php echo $style; ?>">
    				<?php echo $form['form'] ?>
    			</div>
    			<?php endforeach; ?>
    		</div>
    
    		<fieldset>
    			<legend>
    				<?php echo JText::_('COM_USERS_USER_OTEPS'); ?>
    			</legend>
    			<div class="alert alert-info">
    				<?php echo JText::_('COM_USERS_USER_OTEPS_DESC'); ?>
    			</div>
    			<?php if (empty($this->otpConfig->otep)) : ?>
    			<div class="alert alert-warning">
    				<?php echo JText::_('COM_USERS_USER_OTEPS_WAIT_DESC'); ?>
    			</div>
    			<?php else : ?>
    			<?php foreach ($this->otpConfig->otep as $otep) : ?>
    			<span class="span3">
    				<?php echo substr($otep, 0, 4); ?>-<?php echo substr($otep, 4, 4); ?>-<?php echo substr($otep, 8, 4); ?>-<?php echo substr($otep, 12, 4); ?>
    			</span>
    			<?php endforeach; ?>
    			<div class="clearfix"></div>
    			<?php endif; ?>
    		</fieldset>
    
    		<?php echo JHtml::_('bootstrap.endTab'); ?>
    		<?php endif; ?>
    
    		<?php echo JHtml::_('bootstrap.endTabSet'); ?>
    	</fieldset>
    
    	<input type="hidden" name="task" value="" />
    	<?php echo JHtml::_('form.token'); ?>
    </form>
    
  • <script type="text/javascript">
    
    (function ($) {
    
        $(document).ready(function() {
    
            $('input#jform_name').parent().parent().hide();
    
               
    
            function new_name(){
    
                var usr_name = $('input#jform_com_fields_nachname').val() + ', ' + $('input#jform_com_fields_vorname').val();          
    
                $('input#jform_name').val(usr_name);
    
            }
    
                   
    
            $('#jform_com_fields_nachname').on('input', function() {
    
                new_name();
    
            });
    
            $('#jform_com_fields_vorname').on('input', function() {
    
                new_name();
    
            });
    
        });
    
     
    
    })(jQuery);
    
    </script>


Peer Luks




Fehler melden

Bitte beachte unsere Datenschutzerklärung

Alle mit * markierten Felder werden benötigt um eine E-Mail zu senden.