Прочитав вопрос от пользователя alexmixaylov, из его темы, идея показалась интересной, собственно решил выложить рецепт. Итак, что бы не боятся за обновления давайте переопределим вывод материалов и сделаем ссылку быстрого просмотра на шаблон full материала.
1. Создаем файл в шаблоне админки:
сайт\administrator\templates\isis\html\com_zoo\item\default.php
Данных папок вы не увидите в шаблоне, поэтому их нужно тоже создать
2. Вставляем код:
<?php // no direct access defined('_JEXEC') or die('Restricted access'); // add js $this->app->document->addScript('assets:js/item.js'); $this->app->jbassets->fancybox(); ?> <script type="text/javascript"> jQuery(function ($) { $('.popup-item').fancybox({ overlay: {locked: false} }); }); </script> <form class="items-default" action="<?php echo $this->app->link(); ?>" method="post" name="adminForm" id="adminForm" accept-charset="utf-8"> <?php echo $this->partial('menu'); ?> <div class="box-bottom"> <?php if ($this->is_filtered || $this->pagination->total > 0) : ?> <ul class="filter"> <li class="filter-left"> <input type="text" name="search" id="search" value="<?php echo $this->lists['search']; ?>" class="rounded"/> <button onclick="this.form.submit();"><?php echo JText::_('Search'); ?></button> <button onclick="document.getElementById('search').value='';this.form.submit();"><?php echo JText::_('Reset'); ?></button> </li> <?php if ($this->app->joomla->version->isCompatible('3.0')) : ?> <li class="filter-right"> <?php echo str_replace(array('input-mini', 'size="1"'), '', $this->pagination->getLimitBox()); ?> </li> <?php endif ?> <li class="filter-right"> <?php echo $this->lists['select_category']; ?> </li> <li class="filter-right"> <?php echo $this->lists['select_type']; ?> </li> <li class="filter-right"> <?php echo $this->lists['select_author']; ?> </li> </ul> <?php endif; if ($this->pagination->total > 0) : ?> <table class="list stripe"> <thead> <tr> <th class="checkbox"> <input type="checkbox" class="check-all"/> </th> <th class="name" colspan="2"> <?php echo $this->app->html->_('grid.sort', 'Name', 'a.name', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="type"> <?php echo $this->app->html->_('grid.sort', 'Type', 'a.type', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="published"> <?php echo $this->app->html->_('grid.sort', 'Published', 'a.state', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="frontpage"> <?php echo JText::_('Frontpage'); ?> </th> <th class="searchable"> <?php echo JText::_('Searchable'); ?> </th> <th class="comments"> <?php echo JText::_('Comments'); ?> </th> <th class="priority"> <?php echo $this->app->html->_('grid.sort', 'Order Priority', 'a.priority', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="access"> <?php echo $this->app->html->_('grid.sort', 'Access', 'a.access', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="author"> <?php echo $this->app->html->_('grid.sort', 'Author', 'a.created_by', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="date"> <?php echo $this->app->html->_('grid.sort', 'Date', 'a.created', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> <th class="hits"> <?php echo $this->app->html->_('grid.sort', 'Hits', 'a.hits', @$this->lists['order_Dir'], @$this->lists['order']); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="13"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $nullDate = $this->app->database->getNullDate(); for ($i = 0, $n = count($this->items); $i < $n; $i++) : $row = $this->items[$i]; $now = $this->app->date->create()->toUnix(); $publish_up = $this->app->date->create($row->publish_up); $publish_down = $this->app->date->create($row->publish_down); $offset = $this->app->date->getOffset(); $publish_up->setTimezone(new DateTimeZone($offset)); $publish_down->setTimezone(new DateTimeZone($offset)); $img = ''; $alt = ''; if ($now <= $publish_up->toUnix() && $row->state == 1) { $img = 'publish_y.png'; $alt = JText::_('Published'); } else if (($now <= $publish_down->toUnix() || $row->publish_down == $nullDate) && $row->state == 1) { $img = 'publish_g.png'; $alt = JText::_('Published'); } else if ($now > $publish_down->toUnix() && $row->state == 1) { $img = 'publish_r.png'; $alt = JText::_('Expired'); } else if ($row->state == 0) { $img = 'publish_x.png'; $alt = JText::_('Unpublished'); } if ($row->searchable == 0) { $search_img = 'publish_x.png'; $search_alt = JText::_('None searchable'); } elseif ($row->searchable == 1) { $search_img = 'tick.png'; $search_alt = JText::_('Searchable'); } if ($row->frontpage) { $frontpage_img = 'tick.png'; $frontpage_alt = JText::_('JYES'); } else { $frontpage_img = 'publish_x.png'; $frontpage_alt = JText::_('JNO'); } $comments_enabled = (int)$row->getParams()->get('config.enable_comments', 1); $comments_img = $comments_enabled ? 'tick.png' : 'publish_x.png'; $comments_alt = $comments_enabled ? JText::_('Comments enabled') : JText::_('Comments disabled'); $times = ''; if (isset($row->publish_up)) { if ($row->publish_up == $nullDate) { $times .= JText::_('Start: Always'); } else { $times .= JText::_('Start') . ": " . $publish_up->format('Y-m-d H:i:s', true); } } if (isset($row->publish_down)) { if ($row->publish_down == $nullDate) { $times .= "<br />" . JText::_('Finish No Expiry'); } else { $times .= "<br />" . JText::_('Finish') . ": " . $publish_down->format('Y-m-d H:i:s', true); } } // author $author = $row->created_by_alias; if (!$author) { if (isset($this->users[$row->created_by])) { $author = $this->users[$row->created_by]->name; if ($this->app->user->get()->authorise('core.edit', 'com_users')) { $author = '<a href="' . $this->app->component->users->link(array('task' => 'user.edit', 'layout' => 'edit', 'view' => 'user', 'id' => $row->created_by)) . '" title="' . JText::_('Edit User') . '">' . $author . '</a>'; } } else { $author = JText::_('Guest'); } } ?> <tr> <td class="checkbox"> <input type="checkbox" name="cid[]" value="<?php echo $row->id; ?>"/> </td> <td class="icon"></td> <td class="name"> <span class="editlinktip hasTip" title="<?php echo JText::_('Edit Item'); ?>::<?php echo $row->name; ?>"> <?php if ($row->canEdit()) { echo '<a href="' . $this->app->link(array('controller' => $this->controller, 'changeapp' => $this->application->id, 'task' => 'edit', 'cid[]' => $row->id)) . '">' . $row->name . '</a>'; } else { echo $row->name; } ?> </span> <?php $itemUrl = $this->app->route->item($row, false); $siteUrl = str_replace('administrator/', '', JUri::base()); ?> <a href="<?php echo $siteUrl . $itemUrl; ?>&tmpl=component" class="popup-item" title="" data-fancybox-type="iframe"> <em class="icon-out-2"></em> </a> </td> <td class="type"> <?php echo $this->application->getType($row->type)->name; ?> </td> <td class="published"> <span class="editlinktip hasTip" title="<?php echo JText::_('Publish Information'); ?>::<?php echo $times; ?>"> <?php if ($row->canEditState()) : ?> <a href="#" rel="task-<?php echo $row->state ? 'unpublish' : 'publish'; ?>"> <img src="<?php echo $this->app->path->url('assets:images/' . $img); ?>" width="16" height="16" border="0" alt="<?php echo $alt; ?>"/> </a> <?php else: ?> <img src="<?php echo $this->app->path->url('assets:images/' . $img); ?>" width="16" height="16" border="0" alt="<?php echo $alt; ?>"/> <?php endif; ?> </span> </td> <td class="frontpage"> <?php if ($row->canManageFrontpage()) : ?> <a href="#" rel="task-<?php echo 'toggleFrontpage'; ?>" title="<?php echo JText::_('Toggle frontpage state'); ?>"> <img src="<?php echo $this->app->path->url('assets:images/' . $frontpage_img); ?>" width="16" height="16" border="0" alt="<?php echo $frontpage_alt; ?>"/> </a> <?php else: ?> <img src="<?php echo $this->app->path->url('assets:images/' . $frontpage_img); ?>" width="16" height="16" border="0" alt="<?php echo $frontpage_alt; ?>"/> <?php endif; ?> </td> <td class="searchable"> <?php if ($row->canEdit()) : ?> <a href="#" rel="task-<?php echo $row->searchable ? 'makenonesearchable' : 'makesearchable'; ?>" title="<?php echo JText::_('Edit searchable state'); ?>"> <img src="<?php echo $this->app->path->url('assets:images/' . $search_img); ?>" width="16" height="16" border="0" alt="<?php echo $search_alt; ?>"/> </a> <?php else: ?> <img src="<?php echo $this->app->path->url('assets:images/' . $search_img); ?>" width="16" height="16" border="0" alt="<?php echo $search_alt; ?>"/> <?php endif; ?> </td> <td class="comments"> <?php if ($row->canEdit()) : ?> <a href="#" rel="task-<?php echo $comments_enabled ? 'disablecomments' : 'enablecomments'; ?>" title="<?php echo JText::_('Enable/Disable comments'); ?>"> <img src="<?php echo $this->app->path->url('assets:images/' . $comments_img); ?>" width="16" height="16" border="0" alt="<?php echo $comments_alt; ?>"/> </a> <?php else: ?> <img src="<?php echo $this->app->path->url('assets:images/' . $comments_img); ?>" width="16" height="16" border="0" alt="<?php echo $comments_alt; ?>"/> <?php endif; ?> </td> <td class="priority"> <?php if ($row->canEdit()) : ?> <span class="minus"></span> <input type="text" class="value" value="<?php echo $row->priority; ?>" size="5" name="priority[<?php echo $row->id; ?>]"/> <span class="plus"></span> <?php else: ?> <input type="text" class="value" value="<?php echo $row->priority; ?>" size="5" name="priority[<?php echo $row->id; ?>]" disabled/> <?php endif; ?> </td> <td class="access"> <span><?php echo JText::_($this->app->zoo->getGroup($row->access)->name); ?></span> </td> <td class="author"> <?php echo $author; ?> </td> <td class="date"> <?php echo $this->app->html->_('date', $row->created, JText::_('DATE_FORMAT_LC4'), $this->app->date->getOffset()); ?> </td> <td class="hits"> <?php echo $row->hits ?> </td> </tr> <?php endfor; ?> </tbody> </table> <?php elseif ($this->is_filtered) : $title = JText::_('SEARCH_NO_ITEMS') . '!'; $message = null; echo $this->partial('message', compact('title', 'message')); else : $title = JText::_('NO_ITEMS_YET') . '!'; $message = JText::_('ITEM_MANAGER_DESCRIPTION'); echo $this->partial('message', compact('title', 'message')); endif; ?> </div> <input type="hidden" name="controller" value="<?php echo $this->controller; ?>"/> <input type="hidden" name="task" value=""/> <input type="hidden" name="boxchecked" value="0"/> <input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>"/> <input type="hidden" name="filter_order_Dir" value="<?php echo $this->lists['order_Dir']; ?>"/> <input type="hidden" name="changeapp" value="<?php echo $this->application->id; ?>"/> <?php echo $this->app->html->_('form.token'); ?> </form> <script type="text/javascript"> jQuery(function ($) { $('#adminForm').BrowseItems(); }); </script> <?php echo ZOO_COPYRIGHT;
Теперь переходим в список материалов админки и видим новую ссылку у материалов.
По клику на нее через fancybox подгружается шаблон full материала
ВНИМАНИЕ!!!
- Будьте внимательны при замене файлов.
- Проверьте с начало на тестовом сайте а уже потом загружайте на рабочий сайт.
- Это решение(модификация) тестировалось на
Joomla: 3.3.3
JBZoo: 2.1.5 Pro
Zoo: 3.2.1, - Не забывайте - это решение(модификация) и при следующих обновлениях эти изменения могут пострадать.
- При появлении проблем Тех.Поддержка ответственности не несет.