Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

0 Пользователей и 1 Гость просматривают эту тему.
  • 34 Ответов
  • 9698 Просмотров
*

MeTaN

  • Осваиваюсь на форуме
  • 32
  • 1 / 0
ну тогда вот так.
в файл template.css
(строка 1673) вносите следующие изменения
Код
.c_login {
    left: 300px;
    position: absolute;
    top: 115px;
}
float: left; -удаляете;
(строка 840) следующие изменения
Код
#ja-mainbody #ja-contentwrap {
    float: right;
    margin-top: 40px;
    width: 75%;
}

В результате получится это:

*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Оке, все отлично! И ВАМ +, пусть я буду первым в вашей карме ;D
*

MeTaN

  • Осваиваюсь на форуме
  • 32
  • 1 / 0
ВАМ +, пусть я буду первым в вашей карме ;D
Спасибо. :)
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Ну думаю нужно обобщить все действия, что были сделаны! Новичкам, и всем вообще тем , кто решит менять порядок расположения блоков стандартного модуля авторизации Joomla! - mod_login эта информация будет полезна:
1. Новая позиция в шаблоне для модуля mod_login (если у вас уже есть подходящая, то этот пункт можно пропускать)
Код
div class="c_login"><?php if($this->countModules('login')) : ?>
<jdoc:include type="modules" name="login" style="xhtml" />     
<?php endif; ?>
</div>
2. Теперь нужно сделать горизонтальным расположения всех блоков модуля авторизации, файл "default.php" (в папке с модулем, либо, если есть в файле шаблона, то менять нужно уже тот, что в шаблоне)
Код
<?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">
<table><tr>

<?php if ($params->get('greeting')) : ?>
<td>
<?php if ($params->get('name')) : {
echo JText::sprintf( 'HINAME', $user->get('name') );
} else : {
echo JText::sprintf( 'HINAME', $user->get('username') );
} endif; ?>
</td>
<?php endif; ?>

<td>
<input type="submit" name="Submit" class="button" value="<?php echo JText::_( 'BUTTON_LOGOUT'); ?>" />
</td>

</tr>
</table>

<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 : ?>
<?php if(JPluginHelper::isEnabled('authentication', 'openid')) :
$lang->load( 'plg_authentication_openid', JPATH_ADMINISTRATOR );
$langScript = 'var JLanguage = {};'.
' JLanguage.WHAT_IS_OPENID = \''.JText::_( 'WHAT_IS_OPENID' ).'\';'.
' JLanguage.LOGIN_WITH_OPENID = \''.JText::_( 'LOGIN_WITH_OPENID' ).'\';'.
' JLanguage.NORMAL_LOGIN = \''.JText::_( 'NORMAL_LOGIN' ).'\';'.
' var modlogin = 1;';
$document = &JFactory::getDocument();
$document->addScriptDeclaration( $langScript );
JHTML::_('script', 'openid.js');
endif; ?>
<form action="<?php echo JRoute::_( 'index.php', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" >
<?php echo $params->get('pretext'); ?>

<table><tr>

<td id="form-login-username">
<label for="modlgn_username"><?php echo JText::_('Username')?></label><br />
<input id="modlgn_username" type="text" name="username" class="inputbox" alt="username" size="18" />
</td>

<td id="form-login-password">
<label for="modlgn_passwd"><?php echo JText::_('Password')?></label><br />
<input id="modlgn_passwd" type="password" name="passwd" class="inputbox" size="18" alt="password" />
</td>

<?php if(JPluginHelper::isEnabled('system', 'remember')) : ?>
<td id="form-login-remember">
<input id="modlgn_remember" type="checkbox" name="remember" class="inputbox" value="yes" alt="Remember Me" />
</td>
<?php endif; ?>

<td id="form-login-button">
<input type="submit" name="Submit" class="button" value="<?php echo JText::_('LOGIN')?>" />
</td>

<td id="form-login-links">
<a href="<?php echo JRoute::_( 'index.php?option=com_user&view=reset' ); ?>">
<?php echo JText::_('FORGOT_YOUR_PASSWORD'); ?></a> &nbsp;

<a href="<?php echo JRoute::_( 'index.php?option=com_user&view=remind' ); ?>">
<?php echo JText::_('FORGOT_YOUR_USERNAME'); ?></a> &nbsp;

<?php
$usersConfig = &JComponentHelper::getParams( 'com_users' );
if ($usersConfig->get('allowUserRegistration')) : ?>

<a href="<?php echo JRoute::_( 'index.php?option=com_user&view=register' ); ?>">
<?php echo JText::_('REGISTER'); ?></a>
<?php endif; ?>
</td>

</tr></table>


<?php echo $params->get('posttext'); ?>

<input type="hidden" name="option" value="com_user" />
<input type="hidden" name="task" value="login" />
<input type="hidden" name="return" value="<?php echo $return; ?>" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
<?php endif; ?>
Далее файл template.css выравниваем все по себя! (Именно под себя, тут все индивидуально, и различно в каждом шаблоне), но для большего понимания вот мой код:
Код
.c_login {
    left: 300px;
    position: absolute;
    top: 115px;
}
Код
#ja-mainbody #ja-contentwrap {
    float: right;
    margin-top: 40px;
    width: 75%;
}
Ну вот и все, что нужно для того, что бы модуль авторизации стал горизонтальным!
*

speedrage

  • Новичок
  • 1
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как отключить стандартный счетчик просмотров материалов

Автор Akksimo

Ответов: 5
Просмотров: 5205
Последний ответ 25.12.2019, 16:56:29
от nikolaevevge
модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3636
Последний ответ 03.04.2019, 12:25:27
от pH43
не работает стандартный поиск Joomla 1.5.23

Автор Andrew1110

Ответов: 34
Просмотров: 13985
Последний ответ 11.02.2018, 10:31:42
от altvvc
Как отредактировать модуль mod_yoo_slider?

Автор vitaliy4us

Ответов: 0
Просмотров: 2534
Последний ответ 06.12.2017, 16:14:45
от vitaliy4us
Модуль "Случайное изображение"

Автор irina 4444

Ответов: 16
Просмотров: 8486
Последний ответ 26.05.2017, 12:47:56
от gvg