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

Chigolberi

  • Захожу иногда
  • 461
  • 12 / 0
Всем привет!

Есть переопределённый макет формы добавления: \templates\protostar\html\com_content\form\edit.php
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * [member=126442]copyright[/member]   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
if($_REQUEST['Itemid'] == 112){  // id меню для смены шаблона формы добавления
   include('edit-custom.php');
   return false;
}

JHtml::_('behavior.tabstate');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');
JHtml::_('formbehavior.chosen', '#jform_catid', null, array('disable_search_threshold' => 0));
JHtml::_('formbehavior.chosen', '#jform_tags', null, array('placeholder_text_multiple' => JText::_('JGLOBAL_TYPE_OR_SELECT_SOME_TAGS')));
JHtml::_('formbehavior.chosen', 'select');
$this->tab_name = 'com-content-form';
$this->ignore_fieldsets = array('image-intro', 'image-full', 'jmetadata', 'item_associations');

// Create shortcut to parameters.
$params = $this->state->get('params');

// This checks if the editor config options have ever been saved. If they haven't they will fall back to the original settings.
$editoroptions = isset($params->show_publishing_options);

if (!$editoroptions)
{
$params->show_urls_images_frontend = '0';
}

JFactory::getDocument()->addScriptDeclaration("
Joomla.submitbutton = function(task)
{
if (task == 'article.cancel' || document.formvalidator.isValid(document.getElementById('adminForm')))
{
" . $this->form->getField('articletext')->save(). "
Joomla.submitform(task);
}
}
");
?>
<div class="edit item-page<?php echo $this->pageclass_sfx; ?>">
<?php if ($params->get('show_page_heading')) : ?>
<div class="page-header">
<h1>
<?php echo $this->escape($params->get('page_heading')); ?>
</h1>
</div>
<?php endif; ?>

<form action="<?php echo JRoute::_('index.php?option=com_content&a_id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate form-vertical">
<fieldset>
<?php echo JHtml::_('bootstrap.startTabSet', $this->tab_name, array('active' => 'editor')); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'editor', JText::_('COM_CONTENT_ARTICLE_CONTENT')); ?>
<?php echo $this->form->renderField('title'); ?>

<?php if (is_null($this->item->id)) : ?>
<?php echo $this->form->renderField('alias'); ?>
<?php endif; ?>

<?php echo $this->form->getInput('articletext'); ?>

<?php if ($this->captchaEnabled) : ?>
<?php echo $this->form->renderField('captcha'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php if ($params->get('show_urls_images_frontend')) : ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'images', JText::_('COM_CONTENT_IMAGES_AND_URLS')); ?>
<?php echo $this->form->renderField('image_intro', 'images'); ?>
<?php echo $this->form->renderField('image_intro_alt', 'images'); ?>
<?php echo $this->form->renderField('image_intro_caption', 'images'); ?>
<?php echo $this->form->renderField('float_intro', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_alt', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_caption', 'images'); ?>
<?php echo $this->form->renderField('float_fulltext', 'images'); ?>
<?php echo $this->form->renderField('urla', 'urls'); ?>
<?php echo $this->form->renderField('urlatext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targeta', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlb', 'urls'); ?>
<?php echo $this->form->renderField('urlbtext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetb', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlc', 'urls'); ?>
<?php echo $this->form->renderField('urlctext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetc', 'urls'); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>

<?php echo JLayoutHelper::render('joomla.edit.params', $this); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'publishing', JText::_('COM_CONTENT_PUBLISHING')); ?>
<?php echo $this->form->renderField('catid'); ?>
<?php echo $this->form->renderField('tags'); ?>
<?php echo $this->form->renderField('note'); ?>
<?php if ($params->get('save_history', 0)) : ?>
<?php echo $this->form->renderField('version_note'); ?>
<?php endif; ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('created_by_alias'); ?>
<?php endif; ?>
<?php if ($this->item->params->get('access-change')) : ?>
<?php echo $this->form->renderField('state'); ?>
<?php echo $this->form->renderField('featured'); ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('publish_up'); ?>
<?php echo $this->form->renderField('publish_down'); ?>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->form->renderField('access'); ?>
<?php if (is_null($this->item->id)) : ?>
<div class="control-group">
<div class="control-label">
</div>
<div class="controls">
<?php echo JText::_('COM_CONTENT_ORDERING'); ?>
</div>
</div>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'language', JText::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'metadata', JText::_('COM_CONTENT_METADATA')); ?>
<?php echo $this->form->renderField('metadesc'); ?>
<?php echo $this->form->renderField('metakey'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>

<?php echo JHtml::_('bootstrap.endTabSet'); ?>

<input type="hidden" name="task" value="" />
<input type="hidden" name="return" value="<?php echo $this->return_page; ?>" />
<?php echo JHtml::_('form.token'); ?>
</fieldset>
<div class="btn-toolbar">
<div class="btn-group">
<button type="button" class="btn btn-primary" onclick="Joomla.submitbutton('article.save')">
<span class="icon-ok"></span><?php echo JText::_('JSAVE')?>
</button>
</div>
<div class="btn-group">
<button type="button" class="btn" onclick="Joomla.submitbutton('article.cancel')">
<span class="icon-cancel"></span><?php echo JText::_('JCANCEL')?>
</button>
</div>
<?php if ($params->get('save_history', 0) && $this->item->id) : ?>
<div class="btn-group">
<?php echo $this->form->getInput('contenthistory'); ?>
</div>
<?php endif; ?>
</div>
</form>
</div>
У зарегистрированных пользователей будет возможность добавить материал.

Подскажите как скрыть вкладки "Публикация" и "Язык" при добавлении материала от зарегистрированных пользователей ?
Спойлер
[свернуть]
Вкладки "Публикация" и "Язык" выводит следующий код:
Код
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'publishing', JText::_('COM_CONTENT_PUBLISHING')); ?>
<?php echo $this->form->renderField('catid'); ?>
<?php echo $this->form->renderField('tags'); ?>
<?php echo $this->form->renderField('note'); ?>
<?php if ($params->get('save_history', 0)) : ?>
<?php echo $this->form->renderField('version_note'); ?>
<?php endif; ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('created_by_alias'); ?>
<?php endif; ?>
<?php if ($this->item->params->get('access-change')) : ?>
<?php echo $this->form->renderField('state'); ?>
<?php echo $this->form->renderField('featured'); ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('publish_up'); ?>
<?php echo $this->form->renderField('publish_down'); ?>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->form->renderField('access'); ?>
<?php if (is_null($this->item->id)) : ?>
<div class="control-group">
<div class="control-label">
</div>
<div class="controls">
<?php echo JText::_('COM_CONTENT_ORDERING'); ?>
</div>
</div>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'language', JText::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
Для Super User всё должно остаться без изменений, то есть доступным.
*

sivers

  • Завсегдатай
  • 1367
  • 180 / 0
Код
$user = JFactory::getUser();
$isSuperUser = $user->authorise('core.admin');
...
<? if($isSuperUser): ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'language', JText::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<? endif; ?>
На связи в телеге @sivers
*

Chigolberi

  • Захожу иногда
  • 461
  • 12 / 0
Код
$user = JFactory::getUser();
$isSuperUser = $user->authorise('core.admin');
...
<? if($isSuperUser): ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'language', JText::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<? endif; ?>
К сожалению так не пойдёт, так как во вкладке "Публикация" есть поле "Категория", а без него материал не добавляется.
*

sivers

  • Завсегдатай
  • 1367
  • 180 / 0
К сожалению так не пойдёт, так как во вкладке "Публикация" есть поле "Категория", а без него материал не добавляется.
Подставляйте какое-то значение по умолчанию. Или надо, чтоб юзер мог выбирать категорию и не мог все остальное? Как вариант такого решения - удалить из формы лишние необязательные поля. Там же можно сделать замену обязательных на hidden-инпуты со значением по умолчанию. Это удобней всего сделать через объект $this->form. Есть метод такой:
Код
$this->form->removeField('нэйм поля');
https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html#method_removeField
Еще это можно делать в плагине группы Content в обработчике onContentPrepareForm:
https://docs.joomla.org/Plugin/Events/Content#onContentPrepareForm
Тогда даже макет менять не надо. И форму можно изменить до неузнаваемости. Добавлять/удалять/заменять поля и т.п. Главное - все обязательные должны остаться в форме хотя бы в виде скрытых полей, иначе валидация не пройдет.
На связи в телеге @sivers
*

Chigolberi

  • Захожу иногда
  • 461
  • 12 / 0
Подставляйте какое-то значение по умолчанию.
Там только одна категория, она по умолчанию стоит.
Или надо, чтоб юзер мог выбирать категорию и не мог все остальное?
Там выбор только одна единственная категория, то есть там доступ к выбору есть (выпадающий список), но там всего одна единственная категория.

Сейчас попробую все скрыть кроме выбора категории, да и вдруг потом пригодится, если ещё будут категории доступные пользователю для добавления.
*

Chigolberi

  • Захожу иногда
  • 461
  • 12 / 0
Как вариант такого решения - удалить из формы лишние необязательные поля.
Все поля нужны, чтобы их потом можно было редактировать Super User.

Беру на заметку всё что вы в сообщении выше написали.

Всё получилось, всё скрыл кроме выбора категории, спасибо!  *DRINK*

Подставляйте какое-то значение по умолчанию.
А как это сделать, чтобы даже если поле категории скрыто, туда устанавливалось определённая категория?
*

sivers

  • Завсегдатай
  • 1367
  • 180 / 0
Все поля нужны, чтобы их потом можно было редактировать Super User.
Так делайте это по условию, что юзер - не суперюзер.
А как это сделать, чтобы даже если поле категории скрыто, туда устанавливалось определённая категория?
К примеру, для поля с нэймом catid:
Код
$this->form->setFieldAttribute('catid', 'type', 'hidden');
$this->form->setFieldAttribute('catid', 'default', 14);
Тут меняем тип поля на скрытое и даем ему значение по умолчанию.
На связи в телеге @sivers
*

Chigolberi

  • Захожу иногда
  • 461
  • 12 / 0
Тут меняем тип поля на скрытое и даем ему значение по умолчанию.
Спасибо, буду пользоваться.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Скрыть верхнее меню в админке Joomla

Автор lgmax

Ответов: 2
Просмотров: 105
Последний ответ 09.08.2020, 12:41:50
от arma
Как вывести Intro image материала в модуле Most Commented?

Автор R31rus

Ответов: 11
Просмотров: 293
Последний ответ 06.08.2020, 21:47:20
от sivers
Полусить id материала в модуле mod_breadcrumbs

Автор Шмайсер

Ответов: 3
Просмотров: 155
Последний ответ 29.06.2020, 15:21:50
от Шмайсер
Как назначить свой макет формы добавления материала?

Автор Chigolberi

Ответов: 10
Просмотров: 1452
Последний ответ 26.06.2020, 11:30:38
от Chigolberi
Как скрыть пункт меню добавленный кнопкой Меню из контента?

Автор Chigolberi

Ответов: 2
Просмотров: 486
Последний ответ 25.06.2020, 17:56:53
от Chigolberi