Jump to content


Photo
- - - - -

Вывод Related Items auto через teaser таблицей


Best Answer Soft , 02 June 2013 - 12:25

Конечно, Денис. Просто был занят новой проблемой, о которой в конце.

 

1) Все делаем согласно этой инструкции , кроме пункта 5 и 7. Эти пункты не нужны. НО код из пункта 5 мы используем далее для формирования таблицы.

Файл positions.xml немного модифицируем

 

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <renderer>
  3.     <positions layout="full">
  4.         <position name="title">Title</position>
  5. <position name="subtitle">Subtitle</position>
  6. <position name="likes">Likes</position>

    <position name="rating">Rating</position>

            <position name="image">Image</position>

  7. <position name="anons">Anons</position>

    <position name="meta">Meta</position>

  8.  

    <position name="tab-text">Tab-text</position>

    <position name="tab-gallery">Tab-gallery</position>

      <position name="tab-properties">Tab-properties</position>

      <position name="tab-reviews">Tab-reviews</position>

    <position name="tab-comments">Tab-comments</position>

        </positions>

  9.    
  10.   <positions layout="teaser">
  11.         <position name="cell1">Table cell #1</position>
  12.         <position name="cell2">Table cell #2</position>
  13.         <position name="cell3">Table cell #3</position>
  14.         <position name="cell4">Table cell #4</position>
  15.         <position name="cell5">Table cell #5</position>
  16.   </positions>
  17. </renderer>

 

 

(Инструкция подходит и для готовых типов, только придется файлы и папки назвать верно,  и поля называть соответственно) 

 

2)Скопируйте <ITEM-TPL>/product/full.php в <ITEM-TPL>/table-item/

 

3)Далее, файл приводим к такому виду(изменения выделил жирным):

 

<?php

 
defined('_JEXEC') or die('Restricted access');
$this->app->jbassets->tablesorter();
 
$align = $this->app->jbitem->getMediaAlign($item, $layout);
 
echo $this->renderPosition('title',     array('style' => 'jbtitle'));
echo $this->renderPosition('subtitle',  array('style' => 'jbsubtitle'));
echo $this->renderPosition('likes',     array(
        'style' => 'jbblock',
        'class' => 'align-left'
    )
);
echo $this->renderPosition('rating', array(
        'style' => 'jbblock',
        'class' => 'align-right',
    )
);
 
?><?php $this->app->jbassets->jQueryUi(); ?>
<div class="clear clr"></div>
 
<div class="rborder item-body">
 
    <?php if ($this->checkPosition('image')) : ?>
        <div class="item-image align-<?php echo $align;?>">
            <?php echo $this->renderPosition('image'); ?>
        </div>
    <?php endif; ?>
 
    <?php if ($this->checkPosition('anons')) : ?>
        <div class="item-anons">
            <?php echo $this->renderPosition('anons'); ?>
        </div>
    <?php endif; ?>
 
    <?php if ($this->checkPosition('meta')) : ?>
        <hr/>
        <div class="item-meta">
            <?php echo $this->renderPosition('meta', array(
                'style'    => 'jbblock',
                'labelTag' => 'strong',
                'tag'      => 'p'
            )); ?>
        </div>
    <?php endif; ?>
    <div class="clear clr"></div>
</div>
 
 
 
<?php if ( $this->checkPosition('tab-text')
        || $this->checkPosition('tab-gallery')
        || $this->checkPosition('tab-properties')
        || $this->checkPosition('tab-reviews')
        || $this->checkPosition('tab-comments')
    ) :
 
    $positionParams = array(
        'style'    => 'jbblock',
        'tag'      => 'div',
        'labelTag' => 'h3',
        'clear'    => true
    );
 
    ?>
    <div id="jbzoo-tabs" class="rborder">
        <ul>
            <?php if ($this->checkPosition('tab-text')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-text"><?php echo JText::_('JBZOO_ITEM_TAB_DESCRIPTION');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-properties')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-properties"><?php echo JText::_('JBZOO_ITEM_TAB_PROPS');?></a></li>
            <?php endif; ?>
 
 
            <?php if ($this->checkPosition('tab-gallery')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-gallery"><?php echo JText::_('JBZOO_ITEM_TAB_GALLERY');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-reviews')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-reviews"><?php echo JText::_('JBZOO_ITEM_TAB_REVIEWS');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-comments')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-comments"><?php echo JText::_('JBZOO_ITEM_TAB_COMMENTS');?> (<?php echo $item->getCommentsCount();?>)</a></li>
            <?php endif; ?>
        </ul>
 
       
<table class="jsTableSorter tablesorter zebra">
        <thead>
        <tr align="center">
            <th>cell1</th>
            <th>cell2</th>
            <th>cell3</th>
            <th>cell4</th>
            <th>cell5</th>

 

        </tr>
        </thead>
        <tbody > 
<?php if ($this->checkPosition('tab-text')) : ?>
           <div id="tab-text"><?php echo $this->renderPosition('tab-text', $positionParams); ?></div>
        </tbody>
</table>
         
        <?php endif; ?>
 
 
        <?php if ($this->checkPosition('tab-gallery')) : ?>
            <div id="tab-gallery"><?php echo $this->renderPosition('tab-gallery', $positionParams); ?></div>
 
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-properties')) : ?>
            <div id="tab-properties">
                <ul class="item-properties"><?php echo $this->renderPosition('tab-properties', array('style' => 'list'));?></ul>
            </div>
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-reviews')) : ?>
            <div id="tab-reviews"><?php echo $this->renderPosition('tab-reviews', $positionParams); ?></div>
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-comments')) : ?>
            <div id="tab-comments"><?php echo $this->renderPosition('tab-comments', $positionParams); ?></div>
        <?php endif; ?>
    </div>
 
    <?php $this->app->jbassets->jQueryUi(); ?>
    <script type="text/javascript">
        jQuery(function ($) {
            $('#jbzoo-tabs').tabs();
        });
    </script>
<?php endif; ?>
 
 

 

 

4)Теперь в шаблоне Full в поле tab-text вставляем Related Items (auto) (или Pro) и получаем таблицу.

 

 

 

Теперь о плохом.

 

Видимо, из-за jQuery возникает следующая проблема: таблица показывается во всех активных вкладках, при этом не в ее вкладке к ней добавляется информация, размещенная в этих вкладках. 

Проблема возникает только при вызове в поля вкладок функций Related ....(разных).

Получается для одной вкладки такой фокус работает, но зачем тогда надо таблицу "прятать" в одну вкладку...?

Очень нужна данная функциональность! 

 

Может кто-нибудь в курсе, как такое сделать?  :excl:

Go to the full post


  • This topic is locked This topic is locked
4 replies to this topic

#1 Soft

Soft
  • JBZoo User (rus)
  • User rate: 0.2
  • posts: 24
  • topics: 8

Posted 01 June 2013 - 17:54

На основании ссылка пытаюсь вывести элементы через teaser. Элементы подхватывает, а таблицу нет.

Здесь нашел и понял, что таблицу надо самому "рисовать". только где и как и что? 

Хелп плиз...


  • 0

#2 i001

i001
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 01 June 2013 - 20:35

http://forum.jbzoo.c...ull-ili-teaser/

 

Выбирайте. там 2 решения


  • 0

#3 Soft

Soft
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.2
  • posts: 24
  • topics: 8

Posted 01 June 2013 - 21:08

Спасибо, но я форум прошерстил прежде, чем написать... там не полностью подходит.

 

Вопрос решил уже сам. Пришлось скомбинировать 2 инструкции, даже 3.

 

Теперь Related Items Auto таблицей в табе висят.


  • 0

#4 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 02 June 2013 - 10:36

Вопрос решил уже сам. Пришлось скомбинировать 2 инструкции, даже 3.

  Теперь Related Items Auto таблицей в табе висят.

 

Поделитесь решением?


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 Soft

Soft
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.2
  • posts: 24
  • topics: 8

Posted 02 June 2013 - 12:25   Best Answer

Конечно, Денис. Просто был занят новой проблемой, о которой в конце.

 

1) Все делаем согласно этой инструкции , кроме пункта 5 и 7. Эти пункты не нужны. НО код из пункта 5 мы используем далее для формирования таблицы.

Файл positions.xml немного модифицируем

 

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <renderer>
  3.     <positions layout="full">
  4.         <position name="title">Title</position>
  5. <position name="subtitle">Subtitle</position>
  6. <position name="likes">Likes</position>

    <position name="rating">Rating</position>

            <position name="image">Image</position>

  7. <position name="anons">Anons</position>

    <position name="meta">Meta</position>

  8.  

    <position name="tab-text">Tab-text</position>

    <position name="tab-gallery">Tab-gallery</position>

      <position name="tab-properties">Tab-properties</position>

      <position name="tab-reviews">Tab-reviews</position>

    <position name="tab-comments">Tab-comments</position>

        </positions>

  9.    
  10.   <positions layout="teaser">
  11.         <position name="cell1">Table cell #1</position>
  12.         <position name="cell2">Table cell #2</position>
  13.         <position name="cell3">Table cell #3</position>
  14.         <position name="cell4">Table cell #4</position>
  15.         <position name="cell5">Table cell #5</position>
  16.   </positions>
  17. </renderer>

 

 

(Инструкция подходит и для готовых типов, только придется файлы и папки назвать верно,  и поля называть соответственно) 

 

2)Скопируйте <ITEM-TPL>/product/full.php в <ITEM-TPL>/table-item/

 

3)Далее, файл приводим к такому виду(изменения выделил жирным):

 

<?php

 
defined('_JEXEC') or die('Restricted access');
$this->app->jbassets->tablesorter();
 
$align = $this->app->jbitem->getMediaAlign($item, $layout);
 
echo $this->renderPosition('title',     array('style' => 'jbtitle'));
echo $this->renderPosition('subtitle',  array('style' => 'jbsubtitle'));
echo $this->renderPosition('likes',     array(
        'style' => 'jbblock',
        'class' => 'align-left'
    )
);
echo $this->renderPosition('rating', array(
        'style' => 'jbblock',
        'class' => 'align-right',
    )
);
 
?><?php $this->app->jbassets->jQueryUi(); ?>
<div class="clear clr"></div>
 
<div class="rborder item-body">
 
    <?php if ($this->checkPosition('image')) : ?>
        <div class="item-image align-<?php echo $align;?>">
            <?php echo $this->renderPosition('image'); ?>
        </div>
    <?php endif; ?>
 
    <?php if ($this->checkPosition('anons')) : ?>
        <div class="item-anons">
            <?php echo $this->renderPosition('anons'); ?>
        </div>
    <?php endif; ?>
 
    <?php if ($this->checkPosition('meta')) : ?>
        <hr/>
        <div class="item-meta">
            <?php echo $this->renderPosition('meta', array(
                'style'    => 'jbblock',
                'labelTag' => 'strong',
                'tag'      => 'p'
            )); ?>
        </div>
    <?php endif; ?>
    <div class="clear clr"></div>
</div>
 
 
 
<?php if ( $this->checkPosition('tab-text')
        || $this->checkPosition('tab-gallery')
        || $this->checkPosition('tab-properties')
        || $this->checkPosition('tab-reviews')
        || $this->checkPosition('tab-comments')
    ) :
 
    $positionParams = array(
        'style'    => 'jbblock',
        'tag'      => 'div',
        'labelTag' => 'h3',
        'clear'    => true
    );
 
    ?>
    <div id="jbzoo-tabs" class="rborder">
        <ul>
            <?php if ($this->checkPosition('tab-text')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-text"><?php echo JText::_('JBZOO_ITEM_TAB_DESCRIPTION');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-properties')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-properties"><?php echo JText::_('JBZOO_ITEM_TAB_PROPS');?></a></li>
            <?php endif; ?>
 
 
            <?php if ($this->checkPosition('tab-gallery')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-gallery"><?php echo JText::_('JBZOO_ITEM_TAB_GALLERY');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-reviews')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-reviews"><?php echo JText::_('JBZOO_ITEM_TAB_REVIEWS');?></a></li>
            <?php endif; ?>
 
            <?php if ($this->checkPosition('tab-comments')) : ?>
                <li><a href="<?php echo $this->app->jbenv->getCurrentUrl();?>#tab-comments"><?php echo JText::_('JBZOO_ITEM_TAB_COMMENTS');?> (<?php echo $item->getCommentsCount();?>)</a></li>
            <?php endif; ?>
        </ul>
 
       
<table class="jsTableSorter tablesorter zebra">
        <thead>
        <tr align="center">
            <th>cell1</th>
            <th>cell2</th>
            <th>cell3</th>
            <th>cell4</th>
            <th>cell5</th>

 

        </tr>
        </thead>
        <tbody > 
<?php if ($this->checkPosition('tab-text')) : ?>
           <div id="tab-text"><?php echo $this->renderPosition('tab-text', $positionParams); ?></div>
        </tbody>
</table>
         
        <?php endif; ?>
 
 
        <?php if ($this->checkPosition('tab-gallery')) : ?>
            <div id="tab-gallery"><?php echo $this->renderPosition('tab-gallery', $positionParams); ?></div>
 
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-properties')) : ?>
            <div id="tab-properties">
                <ul class="item-properties"><?php echo $this->renderPosition('tab-properties', array('style' => 'list'));?></ul>
            </div>
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-reviews')) : ?>
            <div id="tab-reviews"><?php echo $this->renderPosition('tab-reviews', $positionParams); ?></div>
        <?php endif; ?>
 
        <?php if ($this->checkPosition('tab-comments')) : ?>
            <div id="tab-comments"><?php echo $this->renderPosition('tab-comments', $positionParams); ?></div>
        <?php endif; ?>
    </div>
 
    <?php $this->app->jbassets->jQueryUi(); ?>
    <script type="text/javascript">
        jQuery(function ($) {
            $('#jbzoo-tabs').tabs();
        });
    </script>
<?php endif; ?>
 
 

 

 

4)Теперь в шаблоне Full в поле tab-text вставляем Related Items (auto) (или Pro) и получаем таблицу.

 

 

 

Теперь о плохом.

 

Видимо, из-за jQuery возникает следующая проблема: таблица показывается во всех активных вкладках, при этом не в ее вкладке к ней добавляется информация, размещенная в этих вкладках. 

Проблема возникает только при вызове в поля вкладок функций Related ....(разных).

Получается для одной вкладки такой фокус работает, но зачем тогда надо таблицу "прятать" в одну вкладку...?

Очень нужна данная функциональность! 

 

Может кто-нибудь в курсе, как такое сделать?  :excl:


Edited by Soft, 02 June 2013 - 12:26.

  • 2




Click to return to top of page in style!