spro1
Гуру форума
- Регистрация
- 26 Май 2013
- Сообщения
- 226
- Реакции
- 81
Попытался использовать код, предложенный в этой теме ранее(с использованием встроенного скрипта joomla), но у меня возникли трудности с добавлением содержимого табов. Дело в том, что для отображения содержимого таба нужно записывать его в переменную, что для меня показалось не совсем удобно(ведь я очень плохо знаю php..). По-этому я нашел простой скрипт табов и использовал его. Возможно это не самое изящное решение, но главное оно прекрасно работает!
Вот собственно способ:
1. Подключаем обязательно библиотеку jQuery не ниже версии 1.7
2. Открываем файл components/com_virtuemart/views/productdetails/tmpl/default.php (либо файл карточки товара из вашего шаблона, если он есть)
и после строки
добавляем
3. Далее ищем код
и меняем его на:
после этого останется добавить код css в ваш шаблон(стили из моего шаблона, возможно есть что-то лишнее, если что подкорректируете..)
вот, как это выглядит у меня:
добавлю, что на вкладке характеристики у меня выводятся настраиваемые поля чери пикера. Если вам это нужно, тогда надо добавить после строки
код
Вот собственно способ:
1. Подключаем обязательно библиотеку jQuery не ниже версии 1.7
2. Открываем файл components/com_virtuemart/views/productdetails/tmpl/default.php (либо файл карточки товара из вашего шаблона, если он есть)
и после строки
Код:
<div class="product-description">
Код:
<script>
//табы
(function($) {
$(function() {
$('ul.tabs').on('click', 'li:not(.current)', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.section').find('div.box').eq($(this).index()).fadeIn(150).siblings('div.box').hide();
})
})
})(jQuery)
</script>
Код:
// Product Description
if (!empty($this->product->product_desc)) {
?>
<div class="product-description">
<?php /** @todo Test if content plugins modify the product description */ ?>
<span class="title"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE') ?></span>
<?php echo $this->product->product_desc; ?>
</div>
<?php
} // Product Description END
и меняем его на:
Код:
<div class="section">
<div class="tabs_wrap">
<ul class="tabs">
<li class="current">Описание товара</li>
<li>
<?php //настраиваемые поля чери пикера?>
Характеристики</li>
<li>
<?php //вкладка для комментариев из jcomments с выводом количества комментариев?>
<span class="otzyv"><?php
$comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
$options = array();
$options['object_id'] = $this->product->virtuemart_product_id;
$options['object_group'] = 'com_virtuemart';
$options['published'] = 1;
$count = JCommentsModel::getCommentsCount($options);
echo $count ? ('<p>Комментарии <b>('. $count . ')</b></p>') : '<p>Комментарии (0)</p>';
}
?>
</span>
</li>
<li>Насраиваемые поля виртумарт 2</li>
</ul>
</div>
<div class="box tab1 visible">
<?php
if (!empty($this->product->product_desc)) {
echo $this->product->product_desc;
}
else {
echo '<div class="desc_none"><span>Описание товара пока отсутствует</span></div>';
}
?>
</div>
<div class="box tab2">
<?php
// настраиваемые поля чери пикера
$pid = JRequest::getVar('virtuemart_product_id', null);
list_product_type($pid);
?>
</div>
<div class="box tab3">
<?php//стандартные отзывы, если надо включить их раскомментируейте следующую строчку
// echo $this->loadTemplate('reviews'); ?>
<?php // код для вывода комментариев jcomments
echo $this->product->event->afterDisplayContent;
$comments = JPATH_ROOT . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
echo JComments::showComments($this->product->virtuemart_product_id, 'com_virtuemart', $this->product->product_name);
}
?>
</div>
<div class="box tab4">
<?php
if (!empty($this->product->customfieldsSorted['normal'])) {
$this->position = 'normal';
echo $this->loadTemplate('customfields');
}
else {
echo '<div class="desc_none"><span>Настраиваемые поля отсутствуют</span></div>';
}
?>
</div>
</div>
после этого останется добавить код css в ваш шаблон(стили из моего шаблона, возможно есть что-то лишнее, если что подкорректируете..)
Код:
/*Вкладки в карточке товара*/
.box {
display: none;
border: 1px solid #eee;
border-radius: 5px;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
padding: 10px 15px;
position: relative;
background: #FFFFFF;
}
.box.visible {
display: block;
}
.tabs_wrap {
height: 35px;
overflow: hidden;
position: relative;
}
.tabs_wrap ul.tabs {
height: 35px;
margin: 5px 10px;
position: relative;
}
.tabs_wrap ul.tabs li {
cursor: pointer;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
float: left;
margin: 0 3px;
padding: 5px !important;
transition: all 0.2s ease 0s;
border-radius: 5px 5px 0 0;
border: 1px solid #EEEEEE;
}
.tabs_wrap ul.tabs li:hover, .tabs_wrap ul.tabs li.current{
background: none repeat scroll 0 0 #336699;
color: #FFFFFF;
transition: all 0.2s ease 0s;
border: 1px solid #336699;
}
.tabs_wrap ul.tabs li.current {
margin-top: -2px !important;
position: relative;
}
.desc_none {
font-size: 20px;
margin: 35px;
position: relative;
}
/*Вкладка характеристики из чери пикера*/
table.cp_table {
border-collapse: collapse;
}
table.cp_table tr td {
border: 1px solid #CCCCCC;
padding: 3px 10px;
}
.cp_table_r_first > td {
color: #0054A6 !important;
font-size: 15px;
}
table.cp_table tr td:first-child {
color: #555555;
}
table.cp_table tr td:last-child {
color: #0054A6;
}
вот, как это выглядит у меня:
добавлю, что на вкладке характеристики у меня выводятся настраиваемые поля чери пикера. Если вам это нужно, тогда надо добавить после строки
Код:
defined('_JEXEC') or die('Restricted access');
Код:
function list_product_type($pid) {
$db = JFactory::getDBO();
$html = "";
$q = "SELECT * FROM #__fastseller_product_product_type_xref ";
$q .= "LEFT JOIN #__fastseller_product_type USING (product_type_id) ";
$q .= "WHERE product_id='$pid' AND product_type_publish='Y' ";
$q .= "ORDER BY product_type_list_order";
$db->setQuery($q);
$pts = $db->loadObjectList();
$q = "SELECT * FROM #__fastseller_product_type_parameter ";
$q .= "WHERE product_type_id=";
foreach ($pts as $pt) {
$html .= "<br />\n<table class=\"cp_table\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
$html .= "<tr class=\"cp_table_r_first\"><td colspan=\"2\">".$pt->product_type_name."</td></tr>\n";
// SELECT parameter value of product
$q2 = "SELECT * FROM #__fastseller_product_type_".$pt->product_type_id;
$q2 .= " WHERE product_id='$pid'";
$db->setQuery($q2);
$info = $db->loadAssoc();
$db->setQuery($q . $pt->product_type_id ." ORDER BY parameter_list_order");
$params = $db->loadObjectList();
foreach ($params as $param) {
$html .= "<tr class=\"cp_table_r\" height=\"18\">\n";
$html .= "<td width=\"30%\">".$param->parameter_label;
$html .= "</td>\n<td>";
$html .= $info[$param->parameter_name]." ".$param->parameter_unit."</td></tr>\n";
}
$html .= "</table>\n";
}
echo $html;
}
Последнее редактирование: