【问题标题】:Joomla K2 Extra Fields: Differentiated DisplayJoomla K2 Extra Fields:差异化显示
【发布时间】:2014-10-17 23:22:17
【问题描述】:

我目前正在尝试将 item.php 文件调整为单独显示额外的字段,而不是在一个组中显示。我在这里和那里找到了 som code sn-ps,并没有真正的帮助,因为我认为它们可能已经过时了。

例如:这个页面: http://steffenjungersen.moloch.dk/nugent-be-goode

我希望“信息”显示在项目顶部的粗体介绍文本下方。 另外,我希望“Karakter”(下拉菜单额外字段)显示为 1-6 的星星

使用我提供的这些额外字段的类别名称,我为 item.php 中的“Karakter”提出了这个:

<?php if(isset($this->item->extra_fields[rating]) && ($this->item->extra_fields[rating] >= 0 || $this->item->extra_fields[rating] <=6)): ?>
<span class="starsbox stars<?php echo $this->item->extra_fields[rating]; ?>"></span>
<?php endif; ?>

然后在我的 k2.css 文件中:

.starsbox {
width: 96px;
height: 16px;
display: inline-block;
background: url(images/stars.png) no-repeat;
}

.stars6 {
background-position: 0px 0px;
}
.stars5 {
background-position: -16px 0px; 
}
...etc

那没用。

同样,我尝试将“信息”字段调用到一个独立的位置并将其放在顶部。没有反应。

所以我删除了整个 item->extra_fields as $key=>$extraField): ?> 块,然后额外的字段就消失了。

任何人都可以在这里指出正确的方向吗?

谢谢你:-)

-阿斯特里德

【问题讨论】:

    标签: php css joomla joomla3.0 joomla-k2


    【解决方案1】:

    好的。我从朋友那里得到了一些帮助。这是它让我们走多远(如果有人想知道的话)。

    为了让额外的字段独立显示,您需要将它们分开。因此,将 item.php 中的“foreach ...”行替换为:

      <!-- START: Call to prepare extra fields -->
    <?php  
    //convertArray to use ids as key
    $extrafields = array();
    foreach($this->item->extra_fields as $item)
    {    
    $extrafields[$item->id] = $item->value;
    }   
    ?>    
    <!-- END: Call to prepare extra fields -->
    

    然后,要调用您需要的额外字段,请执行以下操作:

    <?php if(isset($extrafields[X]) === true):?>
    <?php echo $extrafields[X]; ?>
     <?php endif; ?>
    

    其中 X 是额外字段的数字 ID。

    现在有趣的部分来了。我想为我的音乐记者客户创建一个 1-6 星评级系统。他应该能够从下拉列表中选择一个评级,并且这个值应该在项目视图中显示为星号。

    我决定使用 K2 附带的基于 css 和 sprite 的文章评级系统 - 然后我可以“回收”漂亮的明星图像和已经创建的 css。

    下面是它的外观:

    <?php if(isset($extrafields[3]) === true):?>
    <ul class="itemRatingList">
    <li class="itemCurrentRating" id="itemCurrentRating<?php echo $this->item->id; ?>" style="width:<?php echo round($extrafields[3]*100/6); ?>%;"></li>
    <li><?php if(isset($extrafields[3]) == 1):?><a href="#" title="<?php echo JText::_('K2_1_STAR_OUT_OF_5'); ?>" class="one-star">1</a></li><?php endif; ?>
    <li><?php if(isset($extrafields[3]) == 2):?><a href="#" title="<?php echo JText::_('K2_2_STARS_OUT_OF_5'); ?>" class="two-stars">2</a></li><?php endif; ?>
    <li><?php if(isset($extrafields[3]) == 3):?><a href="#" title="<?php echo JText::_('K2_3_STARS_OUT_OF_5'); ?>" class="three-stars">3</a></li><?php endif; ?>
    <li><?php if(isset($extrafields[3]) == 4):?><a href="#" title="<?php echo JText::_('K2_4_STARS_OUT_OF_5'); ?>" class="four-stars">4</a></li><?php endif; ?>
    <li><?php if(isset($extrafields[3]) == 5):?><a href="#" title="<?php echo JText::_('K2_5_STARS_OUT_OF_5'); ?>" class="five-stars">5</a></li><?php endif; ?>
    <li><?php if(isset($extrafields[3]) == 6):?><a href="#" title="<?php echo JText::_('K2_6_STARS_OUT_OF_5'); ?>" class="six-stars">6</a></li><?php endif; ?>
    </ul>
    <?php endif; ?>
    

    当我在某个时候可以设法放下手时,我会考虑用 span 或其他东西替换 a 标签。我可能会改正文本内容。但现在可以了。

    最好的问候,

    阿斯特丽德

    【讨论】:

      猜你喜欢
      • 2011-11-17
      • 2014-01-10
      • 2013-06-18
      • 2018-05-21
      • 2014-03-04
      • 2013-11-17
      • 2014-10-24
      • 2012-10-01
      • 1970-01-01
      相关资源
      最近更新 更多