A bejelentkező boxok értékes helyet foglalhatnak el a honlapokon, vagy csak egyszerűen rontják az kinézetet. A probléma megoldásának egy népszerű módja a bejelentkezés modal ablakban történő megjelenítése. Az ötlet, hogy lecseréljük a felhasználónév és jelszó mezőket egy "bejelentkezés" linkkel, amire kattintva egy modal ablak nyílik meg. Mindez megvalósítható az alaprendszerrel, a MooTools keretrendszert és a Joomla! elrendezés felülírásokat használva.
Ebben a leírásban két egyszerű felülírást fogunk használni, egyet a bejelentkezés modulhoz és egyet a felhasználókezelő komponens bejelentkező oldalához. Az első lépés, hogy átmásoljuk az alapértelmezett elrendezéseket az aktív sablon html könyvtárába.
Másoljuk át a
/modules/mod_login/tmpl/default.php
fájlt a
/templates/sablon/html/mod_login/default.php
fájlba, és a
/components/com_user/views/login/tmpl/default_login.php
fájlt a következőbe
/templates/sablon/html/com_user/login/default_login.php
ahol a "sablon" a használt sablon könyvtárának a neve. Ha egynél több sablont használunk menüelemekhez rendelve, akkor a felülírást el kell végezni minden ilyen sablonnál.
Nyissuk meg a modul elrendezését felülíró fájlt (/templates/sablon/html/mod_login/default.php). Cseréljük le a kódját a következőre:
<?php // no direct access
defined('_JEXEC') or die('Restricted access'); ?>
<?php if ($type == 'logout') : ?>
<form action="index.php" method="post" name="login" id="form-login">
<?php if ($params->get('greeting')) : ?>
<div>
<?php if ($params->get('name')) : {
echo JText::sprintf( 'HINAME', $user->get('name') );
} else : {
echo JText::sprintf( 'HINAME', $user->get('username') );
} endif; ?>
</div>
<?php endif; ?>
<div align="center">
<input type="submit" name="Submit" class="button"
value="<?php echo JText::_( 'BUTTON_LOGOUT'); ?>" />
</div>
<input type="hidden" name="option" value="com_user" />
<input type="hidden" name="task" value="logout" />
<input type="hidden" name="return" value="<?php echo $return; ?>" />
</form>
<?php else :
JHtml::_('behavior.modal', 'a.login');
?><script type="text/javascript">
window.addEvent('domready', function() {// Decorate the login windows to use a modal.
$ES('a.login').each(function(a){ a.setProperty('rel', '{size: {x: 175, y: 225}, ajaxOptions: {method: "get"}}'); if (a.getProperty('href').contains('?')) { a.setProperty('href', a.getProperty('href')+'&tmpl=component'); } else { a.setProperty('href', a.getProperty('href')+'?tmpl=component');}
});
});
</script>
<p>
<a href="/<?php echo JRoute::_('index.php?option=com_user&view=login'); ?>"
class="login" title="<?php echo JText::_('LOGIN') ?>">
<?php echo JText::_('LOGIN') ?></a>
<a href="/<?php echo JRoute::_( 'index.php?option=com_user&task=register' ); ?>">
<?php echo JText::_('REGISTER'); ?></a>.
</p>
<?php endif; ?>
A modul elrendezése változatlan bejelentkezett felhasználó esetén. Amikor azonban a felhasználó nincs bejelentkezve, két hivatkozás jelenik meg: bejelentkezés és regisztrálás. A bejelentkezés hivatkozásához hozzárendeltük a "login" stílusosztályt. Egy kis JavaScript került beillesztésre, amely modal ablakban jelenít meg minden "login" stílusosztállyal rendelkező hivatkozást. Ezzel a technikával akkor is működni fog a bejelentkezés, ha a JavaScript le van tiltva, ugyanis a hivatkozásra kattintva a normál bejelentkező ablakhoz irányul át az oldal.
Amikor a bejelentkezés hivatkozásra kattintunk, akkor egy modal ablak jelenik meg benne a bejelentkezés boxszal. A leírás továbbra is megjelenik a felugró ablakban, tehát ezt ki kell vennünk (meghagyva a teljes méretű bejelentkezés oldalon).
Nyissuk meg a felhasználókezelő komponens felülíró fájlját (/html/com_user/login/default_login.php). Helyezzük a leírást tartalmazó részt egy feltétel közé, csak akkor jelenjen meg, ha teljes nézetű bejelentkezésről van szó.
<?php if (JRequest::getVar('tmpl') != 'component') :?>
<div>
<?php echo $this->image; ?>
<?php if ( $this->params->get( 'description_login' ) ) : ?>
<?php echo $this->params->get( 'description_login_text' ); ?>
<br /><br />
<?php endif; ?>
</div>
<?php endif; ?>
A tmpl változó le van foglalva a Joomla! által. Ha ennek a változónak az értéke "component", akkor a sablon komponenst körülvevő része nem kerül megjelenítésre (ez történik a Joomla! számos területén, mint például a nyomtatás nézetnél).
A felülírásokat a joomlacode.org-ról lehet letölteni: popup_login_box_layout_overrides.zip. Letöltés után tömörítsük ki a fájlt a sablon /html/ könyvtárába. Ne felejtsünk el előtte a létező fájlokról biztonsági másolatot készíteni!
A cikk forrása: The Art of Joomla!