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

Chigolberi

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

Чтобы получить два макета формы добавления материалов, переопределил два раза макет:
Спойлер
[свернуть]
В результате получаю два файла макета в папке \templates\protostar\html\com_content\form\edit.php и edit-custom.php (имя файла изменил, было edit-многоцифр.php)

Макет edit.php сразу работает по умолчанию, а как мне назначить макет edit-custom.php для определённой категории ?
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Макет edit.php сразу работает по умолчанию, а как мне назначить макет edit-custom.php для определённой категории ?
В макете edit.php где-нибудь сверху прописать условие на вашу категорию и в нем:
Код
if(ваше-условие-подключения-кастомного-макета){
   include('edit-custom.php');
   return false;
}
А "много цифр" - это была дата бэкапа макета.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
В макете edit.php где-нибудь сверху прописать условие на вашу категорию и в нем:
Если не трудно, можно код как это условие прописать в if
Алиас категории: instruktsii, ID 11 (в этой категории будет использован макет edit-custom.php)

куда лучше вверху прописать, чтобы не было конфликтов макетов, вот файл макета 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;

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>
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Если не трудно, можно код как это условие прописать в if
Алиас категории: instruktsii, ID 11 (в этой категории будет использован макет edit-custom.php)
Какой путь к странице редактирования? Что выводит на ней команда echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?

куда лучше вверху прописать, чтобы не было конфликтов макетов, вот файл макета edit.php
Можно вставлять перед сразу после этого:
Код
defined('_JEXEC') or die;

А можно и ниже, после всех подключений, но до верстки. в этом случае в edit-custom.php подключения можно не дублировать, а вставить только ту часть, которая ниже условия (все, что выше, будет доступно и из подключенного файла).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Какой путь к странице редактирования? Что выводит на ней команда echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?
Добавил в edit.php
Код
<?php echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?>
Результат:
Код
Array
(
    [view] => form
    [layout] => edit
    [return] => aHR0cDovL3hlb25saXZlLnJ1Lw==
    [Itemid] => 103
    [option] => com_content
    [a_id] => 0
)

Если в файл edit.php добавить:
Код
<pre><?php print_r($this); ?></pre>
Вижу нужное значение [catid] => 11 в начале кода:
Код
ContentViewForm Object
(
    [form:protected] => Joomla\CMS\Form\Form Object
        (
            [data:protected] => Joomla\Registry\Registry Object
                (
                    [data:protected] => stdClass Object
                        (
                            [title] =>
                            [alias] =>
                            [articletext] =>
                            [com_fields] => stdClass Object
                                (
                                    [logotip] =>
                                    [dopolnitel-naya-informatsiya] =>
                                )

                            [catid] => 11
                            [note] =>
                            [version_note] =>
                            [created_by_alias] =>
                            [state] => 1
                            [featured] => 0
                            [publish_up] =>
                            [publish_down] =>
                            [access] => 1
                            [language] => *
                            [metadesc] =>
                            [metakey] =>
                            [id] => 0
Может это как то использовать
« Последнее редактирование: 26.06.2020, 10:29:45 от Chigolberi »
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Результат:
Из этого не получится вычислить с какой страницы был переход. В return хранится только имя домена. Если есть возможность - добавьте в ссылку на форму параметр, по которому можно будет определять.

Еще можно попробовать сделать 2 разных пункта меню на эту форму, у второго в параметрах выбрать "Специальная категория" и выбрать вашу категорию. По идее, это должно срабатывать именно из той категории и можно будет определять форму по ИД пункта меню. А может даже получится сразу задать другой макет для этого пункта через "Стиль шаблона".
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Еще можно попробовать сделать 2 разных пункта меню на эту форму, у второго в параметрах выбрать "Специальная категория" и выбрать вашу категорию. По идее, это должно срабатывать именно из той категории и можно будет определять форму по ИД пункта меню.
Такой вариант мне подходит, спасибо, работает  *DRINK*, код:
Код
if($_REQUEST['Itemid'] == 103){
   include('edit-custom.php');
   return false;
}
Я вам чуть выше написал как можно увидеть id категории, при смене категории в форме добавления, то и id меняется на соответствующий id категории, это нельзя как то использовать? Но если можно будет, тогда получается нужно будет условие выставлять и в других макетах, чтобы тоже работала смена макета?
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
можно увидеть id категории, при смене категории в форме добавления
Но ведь это уже на загруженной форме? При смене категории страница не перезагружается? Если надо менять в динамике в зависимости от выбора в селекте уже загруженной форме, то придется делать иначе. Либо перезагружать форму, либо делать show/hide для части полей, подключать аяксы и т.п.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Но ведь это уже на загруженной форме?
Да, на загруженной форме.
При смене категории страница не перезагружается?
Перезагружается, и поля в соответствии с их настройками прав (в какой категории им разрешено отображаться).
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Перезагружается, и поля в соответствии с их настройками прав (в какой категории им разрешено отображаться).
Тогда можно, наверное. Но это надо смотреть что там. Гадать на пальцах не продуктивно ) А на своих сайтах такого нет.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Тогда можно, наверное. Но это надо смотреть что там. Гадать на пальцах не продуктивно ) А на своих сайтах такого нет.
Понятно, пока ваш вариант устраивает  ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 896
Последний ответ 09.11.2023, 16:33:08
от denxio
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 1514
Последний ответ 06.10.2023, 14:02:24
от Mitriy
Как сделать отображение времени создания материала?

Автор Pzhigalov

Ответов: 0
Просмотров: 326
Последний ответ 27.09.2023, 22:45:29
от Pzhigalov
Заменить текст - просмотров - на иконку (или свой текст)

Автор all_zer

Ответов: 2
Просмотров: 314
Последний ответ 28.03.2023, 13:32:35
от all_zer
Как назначить пункту меню ссылку на категории К2?

Автор kochevnik

Ответов: 1
Просмотров: 308
Последний ответ 12.03.2023, 16:26:44
от kochevnik