Перейти к содержимому


Фотография
- - - - -

Сделать разные формы редактирования для одного типа материала?


Лучший Ответ Cheren-dow , 07 October 2015 - 15:09

.polega., здравствуйте, из админ панели управлять шаблонами не получится, но это можно сделать на уровне шаблонов следующим образом (все эти действия делал в шаблоне bootstrap для других так же если файла нет - необходимо создать). 

1. Создаем шаблон edit-min.php в папке item

76sp_200x0.png

2. Далее в файле 

\media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\renderer\item\metadata.xml

добавляем наш шаблон:

<layout name="edit-min" type="edit">
        <name>Edit min</name>
        <description>An item is rendered with the edit layout in the item edit view.</description>
    </layout>

Добавляем нужные позиции в файле position.xml, например:

<positions layout="edit-min">
        <position name="content">Content</position>
        <position name="media">Media</position>
        <position name="meta">Meta</position>
        <position name="administration">Administration</position>
    </positions>

Далее открываем файл:

\media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\item.php

После вывода стандартной кнопки:

<div class="item-edit-link uk-margin-bottom">
        <a href="<?php echo JRoute::_($edit_link); ?>" title="<?php echo JText::_('Edit Item'); ?>"
           class="uk-button uk-button-primary edit-item">
            <i class="uk-icon-edit"></i>
            <?php echo JText::_('Edit Item'); ?>
        </a>
    </div>

добавляем свою для нового шаблона:

<div class="item-edit-link uk-margin-bottom">
        <a href="<?php echo JRoute::_($edit_link); ?>&subtmpl=edit-min" title="<?php echo JText::_('Edit Item 2'); ?>"
           class="uk-button uk-button-primary edit-item">
            <i class="uk-icon-edit"></i>
            <?php echo JText::_('Edit Item'); ?>
        </a>
    </div>

Обратите внимание что в ссылке добавляется парамет где передается название шаблона:

&subtmpl=edit-min

Теперь открываем файл:

media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\_submission.php

Находим данный кусок кода:

 echo $this->renderer->render($this->layout_path, array(
            'item'       => $this->item,
            'submission' => $this->submission
        ));

        // Captcha support
        if ($this->captcha) {
            $this->app->html->_('behavior.framework');
            echo $this->captcha->display('captcha', 'captcha', 'captcha');
        } 

И заменяем его на следующий:

 $defaultTmpl = $this->layout_path;

        if ($hasNewTmpl = $this->app->jbrequest->get('subtmpl')) {
            $defaultTmpl = 'item.' . $hasNewTmpl;
        }

        echo $this->renderer->render($defaultTmpl, array(
            'item'       => $this->item,
            'submission' => $this->submission
        ));

Теперь можно настроить шаблон edit-min и перейти по новой ссылке в другой шаблон.

все должно работать:

ltva_200x0.png

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 .polega.

.polega.

Отправлено 07 October 2015 - 10:53

Например, есть стандартная форма подачи, со множеством полей для заполнения. И она же используется для редактирования объекта. Точнее не она, а другой шаблон Edit, в котором всё настроено, как и в шаблоне Submission.

Цель - оставить шаблон Edit для полного редактирования, а сделать ещё один шаблон, например edit-min, который бы использовался с фронта, по отдельной ссылке, для быстрого изменения нескольких, двух-трёх полей объекта.

screenshot 2015-10-07 12.48.00.jpg

 

Непонятно, как можно управлять этими шаблонами редактирования, если их больше одного? Как вызвать шаблон для редактирования edit-min? Если для подачи есть возможность как-то управлять шаблонами, то для редактирования непонятно, как использовать другой шаблон?

screenshot 2015-10-07 12.49.14.jpg

 

Было бы хорошо управлять вызовом шаблонов редактирования через настраиваемую ссылку, с каким либо параметром. В идеале вообще в модальном (всплывающем) окне.


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 07 October 2015 - 15:09   Лучший Ответ

.polega., здравствуйте, из админ панели управлять шаблонами не получится, но это можно сделать на уровне шаблонов следующим образом (все эти действия делал в шаблоне bootstrap для других так же если файла нет - необходимо создать). 

1. Создаем шаблон edit-min.php в папке item

76sp_200x0.png

2. Далее в файле 

\media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\renderer\item\metadata.xml

добавляем наш шаблон:

<layout name="edit-min" type="edit">
        <name>Edit min</name>
        <description>An item is rendered with the edit layout in the item edit view.</description>
    </layout>

Добавляем нужные позиции в файле position.xml, например:

<positions layout="edit-min">
        <position name="content">Content</position>
        <position name="media">Media</position>
        <position name="meta">Meta</position>
        <position name="administration">Administration</position>
    </positions>

Далее открываем файл:

\media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\item.php

После вывода стандартной кнопки:

<div class="item-edit-link uk-margin-bottom">
        <a href="<?php echo JRoute::_($edit_link); ?>" title="<?php echo JText::_('Edit Item'); ?>"
           class="uk-button uk-button-primary edit-item">
            <i class="uk-icon-edit"></i>
            <?php echo JText::_('Edit Item'); ?>
        </a>
    </div>

добавляем свою для нового шаблона:

<div class="item-edit-link uk-margin-bottom">
        <a href="<?php echo JRoute::_($edit_link); ?>&subtmpl=edit-min" title="<?php echo JText::_('Edit Item 2'); ?>"
           class="uk-button uk-button-primary edit-item">
            <i class="uk-icon-edit"></i>
            <?php echo JText::_('Edit Item'); ?>
        </a>
    </div>

Обратите внимание что в ссылке добавляется парамет где передается название шаблона:

&subtmpl=edit-min

Теперь открываем файл:

media\zoo\applications\jbuniversal\templates\ВАШ_ШАБЛОН\_submission.php

Находим данный кусок кода:

 echo $this->renderer->render($this->layout_path, array(
            'item'       => $this->item,
            'submission' => $this->submission
        ));

        // Captcha support
        if ($this->captcha) {
            $this->app->html->_('behavior.framework');
            echo $this->captcha->display('captcha', 'captcha', 'captcha');
        } 

И заменяем его на следующий:

 $defaultTmpl = $this->layout_path;

        if ($hasNewTmpl = $this->app->jbrequest->get('subtmpl')) {
            $defaultTmpl = 'item.' . $hasNewTmpl;
        }

        echo $this->renderer->render($defaultTmpl, array(
            'item'       => $this->item,
            'submission' => $this->submission
        ));

Теперь можно настроить шаблон edit-min и перейти по новой ссылке в другой шаблон.

все должно работать:

ltva_200x0.png


  • 2
Изображение
 

#3 .polega.

.polega.

Отправлено 07 October 2015 - 15:16

Отлично, буду пробовать!

 

p.s. Попробовал, всё работает, спасибо ещё раз. Если кто будет повторять рецепт, главное не ошибиться в каталогах, что куда ложить. Кое-где пришлось дублировать шаблоны в разных каталогах.

 

Теперь осталось разобраться и сделать во всплывающем окне, и будет просто супер!

Неплохо бы эти возможности иметь "из коробки", думаю многим не помешало бы.


Сообщение отредактировал .polega.: 08 October 2015 - 06:01

  • 0

#4 .polega.

.polega.

Отправлено 08 October 2015 - 06:01

При более тщательной проверке обнаружилась такая особенность. Если сохранять подачу, используя урезанную форму редактирования, в которой отсутствуют все поля, а оставлен только минимальный набор, то отсутствующие поля теряются. Если они были заполнены, то становятся пустыми. Избежать этого удалось добавлением всего набора полей в урезанные формы редактирования и скрытие ненужных через CSS.


  • 1




Click to return to top of page in style!