Jump to content


Photo
- - - - -

Быстрый просмотр в админке ZOO

zoo быстрый просмотр рецепт

18 replies to this topic

#1 Cheren-dow

Cheren-dow
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 17 March 2015 - 10:34

*
POPULAR

Прочитав вопрос от пользователя 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;

Теперь переходим в список материалов админки и видим новую ссылку у материалов.

5jn5_200x0.png

По клику на нее через fancybox подгружается шаблон full материала

tjcj_200x0.jpg

 

ВНИМАНИЕ!!!

  • Будьте внимательны при замене файлов.
  • Проверьте с начало на тестовом сайте а уже потом загружайте на рабочий сайт.
  • Это решение(модификация) тестировалось на 
    Joomla: 3.3.3
    JBZoo: 2.1.5 Pro
    Zoo: 3.2.1,
  • Не забывайте - это решение(модификация) и при следующих обновлениях эти изменения могут пострадать.
  • При появлении проблем Тех.Поддержка ответственности не несет. 

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

#2 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 17 March 2015 - 10:47

Здорово! Оч.удобно!!

Спасибо, Cheren-dow!  :)


  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#3 Cheren-dow

Cheren-dow
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 17 March 2015 - 10:58

Дополню: если строку 

<a href="<?php echo $siteUrl . $itemUrl; ?>&tmpl=component" class="popup-item" title=""

заменить на 

<a href="<?php echo $siteUrl . $itemUrl; ?>&tmpl=component&jbquickview=teaser" class="popup-item" title=""

То будет открываться шаблон teaser. Если нужен full или любой другой шаблон в параметр jbquickview устанавливаете название шаблона


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

#4 isay777

isay777
  • JBZoo User (rus)
  • User rate: 113.4
  • posts: 1878
  • topics: 232

Posted 17 March 2015 - 11:22

Отлично


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#5 alexmixaylov

alexmixaylov
  • JBZoo User (rus)
  • User rate: 7.7
  • posts: 679
  • topics: 142

Posted 17 March 2015 - 14:01

Спасибо огромное

это на самом деле очень удобно


  • 0

#6 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 18 March 2015 - 07:34

Я удалила сообщение о проблеме. ИЗВИНИТЕ, задача в чем-то другом... однако ж, как оно бывает - сутки провозилась... 

Простите, пожалуйста, буду еще разбираться, вскрылись дополнительные обстоятельства.  :rolleyes:


Edited by Ursa, 18 March 2015 - 07:41.

  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#7 CB9TOIIIA

CB9TOIIIA
  • Administrators
  • User rate: 230.6
  • posts: 3680
  • topics: 235

Posted 18 March 2015 - 09:45

Отличное решение для новостника! :)


Edited by CB9TOIIIA, 18 March 2015 - 10:35.

  • 1

#8 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 18 March 2015 - 10:39

по клику переходить на frontend этого материала
хи-хи-хи, "к хорошему быстро привыкаешь" (с) И хочется больше! :)) 

 

А если серьезно, отличная идея и уже практически одно из возможных решений:

спец. шаблон ...- и в него покидать нужные переменные из типа материала
  
  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#9 CB9TOIIIA

CB9TOIIIA
  • Administrators
  • User rate: 230.6
  • posts: 3680
  • topics: 235

Posted 18 March 2015 - 10:40

хи-хи-хи, "к хорошему быстро привыкаешь" (с) И хочется больше! :)) 

 

А если серьезно, отличная идея и уже практически одно из возможных решений:

 

 

я оставил как есть + немного регулярок добавил, т.к. share от яндекса и прочее очень тормозили прогрузку, их убрал для этого просмотра)


Edited by CB9TOIIIA, 18 March 2015 - 10:41.

  • 0

#10 laRus

laRus
  • JBZoo User (rus)
  • User rate: 60
  • posts: 1334
  • topics: 31

Posted 18 March 2015 - 11:15

share от яндекса
у кого этого нету, можно и не напрягаться  :))

хотя странно, за счет чего тормозили-то?... это наверно НА ВАШЕМ (сильно нагруженном) сайте потому что, да?   :)


  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..





Also tagged with one or more of these keywords: zoo, быстрый просмотр, рецепт

Click to return to top of page in style!