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


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

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


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

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

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

76sp_200x0.png

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

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

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

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

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

  1. <positions layout="edit-min">
  2. <position name="content">Content</position>
  3. <position name="media">Media</position>
  4. <position name="meta">Meta</position>
  5. <position name="administration">Administration</position>
  6. </positions>

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

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

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

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

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

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

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

  1. &subtmpl=edit-min

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

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

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

  1. echo $this->renderer->render($this->layout_path, array(
  2. 'item' => $this->item,
  3. 'submission' => $this->submission
  4. ));
  5.  
  6. // Captcha support
  7. if ($this->captcha) {
  8. $this->app->html->_('behavior.framework');
  9. echo $this->captcha->display('captcha', 'captcha', 'captcha');
  10. } 

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

  1. $defaultTmpl = $this->layout_path;
  2.  
  3. if ($hasNewTmpl = $this->app->jbrequest->get('subtmpl')) {
  4. $defaultTmpl = 'item.' . $hasNewTmpl;
  5. }
  6.  
  7. echo $this->renderer->render($defaultTmpl, array(
  8. 'item' => $this->item,
  9. 'submission' => $this->submission
  10. ));

Теперь можно настроить шаблон 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. Далее в файле 

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

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

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

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

  1. <positions layout="edit-min">
  2. <position name="content">Content</position>
  3. <position name="media">Media</position>
  4. <position name="meta">Meta</position>
  5. <position name="administration">Administration</position>
  6. </positions>

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

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

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

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

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

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

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

  1. &subtmpl=edit-min

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

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

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

  1. echo $this->renderer->render($this->layout_path, array(
  2. 'item' => $this->item,
  3. 'submission' => $this->submission
  4. ));
  5.  
  6. // Captcha support
  7. if ($this->captcha) {
  8. $this->app->html->_('behavior.framework');
  9. echo $this->captcha->display('captcha', 'captcha', 'captcha');
  10. } 

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

  1. $defaultTmpl = $this->layout_path;
  2.  
  3. if ($hasNewTmpl = $this->app->jbrequest->get('subtmpl')) {
  4. $defaultTmpl = 'item.' . $hasNewTmpl;
  5. }
  6.  
  7. echo $this->renderer->render($defaultTmpl, array(
  8. 'item' => $this->item,
  9. 'submission' => $this->submission
  10. ));

Теперь можно настроить шаблон 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!