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

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

  • Завсегдатай
  • 1623
  • 226 / 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

Автор DrShepard

Ответов: 10
Просмотров: 161
Последний ответ 30.03.2021, 13:50:03
от sivers
Как отключить пагинацию товаров в VirtueMart 3?

Автор Damarkuzz

Ответов: 3
Просмотров: 147
Последний ответ 31.01.2021, 20:33:28
от rsn
Как вывести товары имеющие уникальное имя в VirtueMart 3?

Автор Damarkuzz

Ответов: 2
Просмотров: 107
Последний ответ 07.01.2021, 15:24:40
от Damarkuzz
Долго думает PHP-скрипт при выводе категорий VirtueMart?

Автор Damarkuzz

Ответов: 21
Просмотров: 307
Последний ответ 05.12.2020, 12:20:48
от Damarkuzz
Как вывести всех родителей VirtueMart 3?

Автор Damarkuzz

Ответов: 4
Просмотров: 200
Последний ответ 22.11.2020, 05:31:48
от Damarkuzz