0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 112 Просмотров
*

gm35

  • Новичок
  • 22
  • 0 / 0
Accordion VirtueMart PHP
« : 19.03.2020, 14:40:16 »
Привет всем! Подскажите кто знает делаю Accordion menu для VirtueMart на основе их же mod_virtuemart_category  + uikit  так вот  вот я сделал код
Код
<?php // no direct access
defined('_JEXEC') or die('Restricted access');
$categoryModel->addImages($categories);
?>

<ul uk-accordion>
<?php foreach ($categories as $category) {
$active_menu = 'class="VmClose"';
$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$category->virtuemart_category_id);
$cattext = $category->category_name;
if (in_array( $category->virtuemart_category_id, $parentCategories)) {
$active_menu = 'class="active uk-open"';
} ?>
<li <?php echo $active_menu ?>>
<a class="ukitedis <?php

if (!empty($category->childs)) { 
echo 'uk-accordion-title';
} ?>" >
<a>
<?php echo $category->images[0]->displayMediaThumb('class="imagemenupm"',false);?>
              <?php echo JHTML::link($caturl, $cattext);
?>
</a>
</a>
<div class="uk-accordion-content">
<?php if (!empty($category->childs)) { ?>

<?php
foreach ($category->childs as $child) {
$active_menu = 'class="VmClose"';
$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child->virtuemart_category_id);
$cattext = vmText::_($child->category_name);
if (in_array($child->virtuemart_category_id, $parentCategories)) {
$active_menu = 'class="VmOpen"';
} ?>

<div <?php echo $active_menu ?>>
<div <?php echo $active_menu ?>><?php echo JHTML::link($caturl, $cattext); ?></div>
</div>

<?php
} ?>
</div>
<?php } ?>
</li>
<?php
} ?>
</ul>
Поставил условие
Код
<?php 

if (!empty($category->childs)) { 
echo 'uk-accordion-title';
} ?>
То есть получается если в категории есть вложения childs то применяется class="uk-accordion-title" он нам дает + для того чтобы можно было раскрывать меню. Прописал я так по тому что хотел чтобы + стоял не у всех как в стандартном исполнении
Код
<a class="uk-accordion-title" ></a>
а только у тех кто имеет под категорию childs. Все вроде нормально работает категории в вложением идут по порядку друг а если стоит появится в данном списке категории без вложения то после категории без вложения, категория с вложением не открывается на + а открывается та категория которая без вложения. Как быть может кто подскажет? !
*

sivers

  • Завсегдатай
  • 1367
  • 180 / 0
Re: Accordion VirtueMart PHP
« Ответ #1 : 19.03.2020, 15:39:27 »
Код
<a class="ukitedis <?php

if (!empty($category->childs)) {
echo 'uk-accordion-title';
} ?>" >
<a>
<?php echo $category->images[0]->displayMediaThumb('class="imagemenupm"',false);?>
              <?php echo JHTML::link($caturl, $cattext);
?>
</a>
</a>

А зачем у вас тут вложение ссылки сделано? уберите внутреннюю, чтоб было:
Код
<a class="ukitedis <?php

if (!empty($category->childs)) {
echo 'uk-accordion-title';
} ?>" >
<?php echo $category->images[0]->displayMediaThumb('class="imagemenupm"',false);?>
              <?php echo JHTML::link($caturl, $cattext);
?>
</a>

И уберите под условие вот это <div class="uk-accordion-content">, а то у вас незакрытый тег получается, когда дочек нет, от того скорее всего и подглючивает.

Чтоб в целом получилось так:
Код
<?php // no direct access
defined('_JEXEC') or die('Restricted access');
$categoryModel->addImages($categories);
?>

<ul uk-accordion>
<?php foreach ($categories as $category) {
$active_menu = 'class="VmClose"';
$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$category->virtuemart_category_id);
$cattext = $category->category_name;
if (in_array( $category->virtuemart_category_id, $parentCategories)) {
$active_menu = 'class="active uk-open"';
} ?>
<li <?php echo $active_menu ?>>
<a class="ukitedis <?php

if (!empty($category->childs)) {
echo 'uk-accordion-title';
} ?>" >
<?php echo $category->images[0]->displayMediaThumb('class="imagemenupm"',false);?>
              <?php echo JHTML::link($caturl, $cattext);
?>
</a>
<?php if (!empty($category->childs)) { ?>
<div class="uk-accordion-content">
<?php
foreach ($category->childs as $child) {
$active_menu = 'class="VmClose"';
$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child->virtuemart_category_id);
$cattext = vmText::_($child->category_name);
if (in_array($child->virtuemart_category_id, $parentCategories)) {
$active_menu = 'class="VmOpen"';
} ?>

<div <?php echo $active_menu ?>>
<div <?php echo $active_menu ?>><?php echo JHTML::link($caturl, $cattext); ?></div>
</div>

<?php
} ?>
</div>
<?php } ?>
</li>
<?php
} ?>
</ul>
На связи в телеге @sivers
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести все категории VirtueMart 3 второго уровня списком?

Автор Damarkuzz

Ответов: 4
Просмотров: 234
Последний ответ 08.07.2020, 15:31:19
от Damarkuzz
Как получить настройки плагина? (плагин доставки для virtuemart)?

Автор johnsnow91

Ответов: 5
Просмотров: 968
Последний ответ 03.06.2020, 11:09:26
от johnsnow91
Аналогичный сайт на Joomla VirtueMart

Автор soxan1992

Ответов: 1
Просмотров: 151
Последний ответ 21.01.2020, 12:35:45
от AlexB
Найти переменную в customfields virtuemart 3.0.18

Автор Andrei-34567

Ответов: 0
Просмотров: 158
Последний ответ 05.08.2019, 19:04:51
от Andrei-34567
Проблема изза разных кодировок Joomla 3 и VirtueMart 3.2.2

Автор fale

Ответов: 1
Просмотров: 659
Последний ответ 02.10.2018, 21:59:58
от fsv