This Joomla 4 override displays in tabs (Bootstrap component), the different parts of the user profile edition's page. This is more compact and the page is shorter.

Joomla 4 frontend rendering

Profile edition in tabs - Joomla 4 override

PhP markup

<?php

/**
 * @package     Joomla.Site
 * @subpackage  com_users
 * @author		web-eau.net
 * @copyright   (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

/** @var Joomla\Component\Users\Site\View\Profile\HtmlView $this */

HTMLHelper::_('bootstrap.tooltip', '.hasTooltip');

// Load user_profile plugin language
$lang = Factory::getLanguage();
$lang->load('plg_user_profile', JPATH_ADMINISTRATOR);

/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('keepalive')
    ->useScript('form.validate');

?>
<div class="com-users-profile__edit profile-edit">
    <?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; ?>
  
    <form id="member-profile" action="<?php echo Route::_('index.php?option=com_users'); ?>" method="post" class="com-users-profile__edit-form form-validate form-horizontal well" enctype="multipart/form-data">

        <?php // Iterate through the form fieldsets and display each one. ?>
      	<?php echo JHtml::_('bootstrap.startTabSet', 'usersprofile', array('active' => 'core')); ?>
        <?php foreach ($this->form->getFieldsets() as $group => $fieldset) : ?>
      		
            <?php $fields = $this->form->getFieldset($group); ?>
            <?php if (count($fields)) : ?>
       			<?php echo JHtml::_('bootstrap.addTab', 'usersprofile', $group, JText::_($fieldset->label)); ?>
                <fieldset>
                    <?php // If the fieldset has a label set, display it as the legend. ?>
                    <?php if (isset($fieldset->label)) : ?>
                        <legend>
                            <?php echo Text::_($fieldset->label); ?>
                        </legend>
                    <?php endif; ?>
                    <?php if (isset($fieldset->description) && trim($fieldset->description)) : ?>
                        <p>
                            <?php echo $this->escape(Text::_($fieldset->description)); ?>
                        </p>
                    <?php endif; ?>
                    <?php // Iterate through the fields in the set and display them. ?>
                    <?php foreach ($fields as $field) : ?>
                        <?php echo $field->renderField(); ?>
                    <?php endforeach; ?>
                </fieldset>
      			<?php echo JHtml::_('bootstrap.endTab'); ?>
            <?php endif; ?>      		
        <?php endforeach; ?>

        <?php if ($this->mfaConfigurationUI) : ?>
      		<?php echo JHtml::_('bootstrap.addTab', 'usersprofile', 'twofactor', JText::_('COM_USERS_PROFILE_TWO_FACTOR_AUTH')); ?>
            <fieldset class="com-users-profile__multifactor">
                <legend><?php echo Text::_('COM_USERS_PROFILE_MULTIFACTOR_AUTH'); ?></legend>
                <?php echo $this->mfaConfigurationUI ?>
            </fieldset>
      		<?php echo JHtml::_('bootstrap.endTab'); ?>
        <?php endif; ?>

      	<?php echo JHtml::_('bootstrap.endTabSet'); ?>
        <div class="com-users-profile__edit-submit control-group">
            <div class="controls">
                <button type="submit" class="btn btn-primary validate" name="task" value="profile.save">
                    <span class="icon-check" aria-hidden="true"></span>
                    <?php echo Text::_('JSAVE'); ?>
                </button>
                <button type="submit" class="btn btn-danger" name="task" value="profile.cancel" formnovalidate>
                    <span class="icon-times" aria-hidden="true"></span>
                    <?php echo Text::_('JCANCEL'); ?>
                </button>
                <input type="hidden" name="option" value="com_users">
            </div>
        </div>
        <?php echo HTMLHelper::_('form.token'); ?>

    </form>
  
</div>

web-eau.net

France - 29800 Landerneau

+33 674 502 799

daniel@web-eau.net

Quick links