VM 2.x Закладки в карточке товара

Зачем использовать сторонние плагины если все можно сделать силами самой Joomla?
Например так:
В файле стилей вашего шаблона (Joomla) пропишите:
HTML:
dd {
    margin-top: 37px;
    padding: 4px 10px;
    border: 1px solid #CCCCCC;
}
 
dl.tabs {
    width: 100%;
    float: left;
    margin: 10px 0 -1px 0;
    z-index: 50;
}
 
dl.tabs dt {
  float: left;
  padding: 4px 10px;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
  border-top: 1px solid #ccc;
  margin-right: 3px;
  background: #f0f0f0;
  color: #666;
}
 
dl.tabs dt.open {
  background: #F9F9F9;
  border-bottom: 1px solid #F9F9F9;
  z-index: 100;
  color: #000;
}

В файле:
com_virtuemart\views\productdetails\default.php
Но лучше в папке вашего шаблона (Joomla) создать файл:
/templates/{ШАБЛОН}/html/com_virtuemart/productdetailsdefault.php
в любое удобное место вставляете
PHP:
<?php
//Говорим Joomla, что мы хотим использовать панели
jimport('joomla.html.pane');
$myTabs = & JPane::getInstance('tabs', array('startOffset'=>0));
$output = '';
 
//Создаем панель для вкладок
$output .= $myTabs->startPane( 'pane' );
 
//Создаем 1 вкладку
$output .= $myTabs->startPanel( 'Описание', 'tab1' );
$output  .= '<p>'.$this->product->product_desc.'</p>';
$output .= $myTabs->endPanel();
 
// Создаем 2 вкладку
$output .= $myTabs->startPanel( 'Бренд', 'tab2' );
$output  .= '<p>'.$this->product->mf_name.'</p>';
$output .= $myTabs->endPanel();
 
// Создаем 3 вкладку
$output .= $myTabs->startPanel( 'Помощь', 'tab3' );
$output  .= '<p>Здесь текст помощи он везде одинаковый</p>';
$output .= $myTabs->endPanel();
 
// Создаем 4 вкладку
$output .= $myTabs->startPanel( 'Отзывы', 'tab4' );
$output  .= '<p>'.$this->loadTemplate('reviews').'</p>';
$output .= $myTabs->endPanel();
 
//окончание панели
$output .= $myTabs->endPane();
//Выводим
echo $output;
?>

Каждую вкладку можно менять под себя, например как у меня:
Описание:
PHP:
 // Product Description
if (!empty($this->product->product_desc)) {
//Создаем 1 вкладку
$output .= $myTabs->startPanel( JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE'), 'tab1' );
$output .= '<div class="product-description">';
$output .= $this->product->product_desc;
$output .= '</div>';
$output .= $myTabs->endPanel();
} // Product Description END
Лишнее убираем )
 
j 2.5 vm 2.06 установил оба плагина, включил, добавил в components\com_virtuemart\views\productdetails\tmpl\default.php
строчки:
<?php echo JHTML::_('content.prepare', $template); ?>
<?php $template = '{magictabs}';
и тд... как указано выше
И получаю только названиче своего шаблона из этой строчки

<?php echo JHTML::_('content.prepare', $template); ?>.
Что-то $template .= невыводит ничего.

разобрался эту строчку
<?php echo JHTML::_('content.prepare', $template); ?>
после кода , а не перед.
 
Зачем использовать сторонние плагины если все можно сделать силами самой Joomla?
Например так:...

Всё здорово, но тут появилась маленькая проблема, которую я пока не нашел, как исправить. Помогите плиз!
В общем при добавлении dd в стиль шаблона у меня так же добавилась рамка вокруг полей для заполнения в форме обратной связи, т.к. там тоже используется тег dd.
Если поправить в css dd на dd.tabs, как для остальных тегов, то рамка просто пропадает. Я понимаю, что где-то этот стиль просто не указывается при выводе вкладок, но я не знаю, как тут описать стиль.
Помогите пожалуйста. Что в ваших скриптах нужно исправить?

Можно, конечно, исправить таблицу вывода формы, там мозгов у меня хватит, прописав типа <dd style="tabs">, но как-то там не хочу ковырять, хотелось бы в этом куске кода разобраться.
 
В общем при добавлении dd в стиль шаблона у меня так же добавилась рамка вокруг полей для заполнения в форме обратной связи, т.к. там тоже используется тег dd.
Если поправить в css dd на dd.tabs, как для остальных тегов, то рамка просто пропадает. Я понимаю, что где-то этот стиль просто не указывается при выводе вкладок, но я не знаю, как тут описать стиль.
Помогите пожалуйста. Что в ваших скриптах нужно исправить?

в п.11 не все теги - попробуй так
PHP:
dl.tabs {
  float: left;
  margin: 10px 0 -1px 0;
  z-index: 50;
}
 
dl.tabs dt {
  float: left;
  padding: 4px 10px;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
  border-top: 1px solid #ccc;
  margin-left: 3px;
  background: #f0f0f0;
  color: #666;
}
 
dl.tabs dt.open {
  background: #F9F9F9;
  border-bottom: 1px solid #F9F9F9;
  z-index: 100;
  color: #000;
}
 
div.current {
  clear: both;
  border: 1px solid #ccc;
  padding: 10px 10px;
}
 
div.current dd
{
  padding: 0;
  margin: 0;
}
Ну это все пример - украшательства сам придумай. Можно добавить еше тег dl.tabs dt.closed{бла-бла-бла} для закрытых вкладок.

P.S. если возникает такая ситуация, как у тебя - одинаковые теги , но с разными стилями - конкретизируй стили - см .выше - например div.current dd, а для второго можешь оставить просто dd или div.current dd dd.

Примерно так - пишу по памяти
 
Зачем использовать сторонние плагины если все можно сделать силами самой Joomla?
Например так:

В файле стилей вашего шаблона (Joomla) пропишите:
HTML:
dd {
    margin-top: 37px;
    padding: 4px 10px;
    border: 1px solid #CCCCCC;
}
 
dl.tabs {
    width: 100%;
    float: left;
    margin: 10px 0 -1px 0;
    z-index: 50;
}
 
dl.tabs dt {
  float: left;
  padding: 4px 10px;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
  border-top: 1px solid #ccc;
  margin-right: 3px;
  background: #f0f0f0;
  color: #666;
}
 
dl.tabs dt.open {
  background: #F9F9F9;
  border-bottom: 1px solid #F9F9F9;
  z-index: 100;
  color: #000;
}

В файле:
com_virtuemart\views\productdetails\default.php
Но лучше в папке вашего шаблона (Joomla) создать файл:
/templates/{ШАБЛОН}/html/com_virtuemart/productdetailsdefault.php
в любое удобное место вставляете
PHP:
<?php
//Говорим Joomla, что мы хотим использовать панели
jimport('joomla.html.pane');
$myTabs = & JPane::getInstance('tabs', array('startOffset'=>0));
$output = '';
 
//Создаем панель для вкладок
$output .= $myTabs->startPane( 'pane' );
 
//Создаем 1 вкладку
$output .= $myTabs->startPanel( 'Описание', 'tab1' );
$output  .= '<p>'.$this->product->product_desc.'</p>';
$output .= $myTabs->endPanel();
 
// Создаем 2 вкладку
$output .= $myTabs->startPanel( 'Бренд', 'tab2' );
$output  .= '<p>'.$this->product->mf_name.'</p>';
$output .= $myTabs->endPanel();
 
// Создаем 3 вкладку
$output .= $myTabs->startPanel( 'Помощь', 'tab3' );
$output  .= '<p>Здесь текст помощи он везде одинаковый</p>';
$output .= $myTabs->endPanel();
 
// Создаем 4 вкладку
$output .= $myTabs->startPanel( 'Отзывы', 'tab4' );
$output  .= '<p>'.$this->loadTemplate('reviews').'</p>';
$output .= $myTabs->endPanel();
 
//окончание панели
$output .= $myTabs->endPane();
//Выводим
echo $output;
?>

Каждую вкладку можно менять под себя, например как у меня:
Описание:
PHP:
 // Product Description
if (!empty($this->product->product_desc)) {
//Создаем 1 вкладку
$output .= $myTabs->startPanel( JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE'), 'tab1' );
$output .= '<div class="product-description">';
$output .= $this->product->product_desc;
$output .= '</div>';
$output .= $myTabs->endPanel();
} // Product Description END

Лишнее убираем )

Сделал как написано. Но только во вкладках не отображаются русские буквы. Как и где поправить кодировку подскажите?

Сорри. сам нашел ответ на свой вопрос. Может для начинающих будет полезно....открыть с помощью редактора Notepad++ файл " templates/{ШАБЛОН}/html/com_virtuemart/productdetailsdefault.php " нажать Кодировки-->Преобразовать в UTF-без ВОМ и Сохранить.

Еще такой вопрос. Как во вкладке возле слова "Отзывы" сделать так чтобы выводилась цифра, которая обозначалабы количество отзывов в товаре.
333333.JPG

И как сделать так(какой код надо пропечатать) чтобы выводились во вкладке "Фото" фотографии данного товара?
44444.JPG
 
Сделал как написано. Но только во вкладках не отображаются русские буквы. Как и где поправить кодировку подскажите?

Сорри. сам нашел ответ на свой вопрос. Может для начинающих будет полезно....открыть с помощью редактора Notepad++ файл " templates/{ШАБЛОН}/html/com_virtuemart/productdetailsdefault.php " нажать Кодировки-->Преобразовать в UTF-без ВОМ и Сохранить.
Лучше использовать языковые файлы и выводить как я написал:
Код:
JText::_('COM_VIRTUEMART_PRODUCT_DESC_TITLE')
На счет остального... Делается не сложно, но сейчас нет времени вспоминать... Чуть позже гляну.
 
Подскажите пожалуйста, можно ли используя встроенные функции Joomla, вывести настраиваемые поля товара не в одной, а в разных позициях. К примеру что-то типа echo $this->loadTemplate('customfields id=1'). По id поля или по названию поля, ну или хотя бы по типу.

И как сделать так(какой код надо пропечатать) чтобы выводились во вкладке "Фото" фотографии данного товара?
Посмотреть вложение 45277
echo $this->loadTemplate('images')
 
echo $this->loadTemplate('images')

Ура помогло. А не подскажете, где находится сам код этого"images" чтобы я мог немножко подредактировать его?

Теперь только осталось разобраться с выводом цифры (сумарного количества отзывов). Может и это подскажете.?
 
Ура помогло. А не подскажете, где находится сам код этого"images" чтобы я мог немножко подредактировать его?
За вывод рисунков отвечает /components/com_virtuemart/views/productdetails/tmpl/default_images.php
 
Ура помогло. А не подскажете, где находится сам код этого"images" чтобы я мог немножко подредактировать его?

Теперь только осталось разобраться с выводом цифры (сумарного количества отзывов). Может и это подскажете.?
Открываем используемый flypage (напомню что он находится по пути /components/com_virtuemart/themes/default/templates/product_details) и, в любом месте этого файла дописываем

Код:
global $mainframe;
$comments = $mosConfig_absolute_path . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
$count = JComments::getCommentsCount($product_id, 'com_virtuemart');
}
Хочу обратить ваше внимание что эти строчки нужно добавлять там, где это не попадет под действие тега if, но будет между тегов
Код:
<?php и ?>
Этим действием мы задаем переменной $count значение количества комментариев. Теперь нам необходимо эту переменную вывести там, где необходимо, таким образом:
Код:
echo $count;
Замечу, что это также нужно добавить там, где это не попадет под действие тега if, но будет между тегов
Код:
<?php и ?>
 
Назад
Сверху