Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывод характеристик в каталоге товаров.


Recommended Posts

Подскажите пожалуйста где я туплю.

Сделал вывод характеристик товаров в каталоге для каждого товаров.

Пример :

 https://oday.com.ua/tumbu/tumbu-iz-dsp/

Если нажать на первом товаре "Посмотреть Характеристики" то все работает как мне нужно, открывается и закрывается, вообщем все норм.А Вот если нажать тоже самое на втором или любом другом кроме первого, то просто выкидывает на главную страницу сайт.

Подскажите решение пожалуйста.

Кусок кода который вставил в category.tpl :

 

<a id="toggler" href="#">Посмотреть Характеристики</a>
<div id="box" style="display: none;">
    <?php if($product['attribute_groups']) { ?>
    <table>
        <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
        <thead><!--названия групп-->
        <tr>
            <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
        </thead><!---->
        <tbody>
        <?php foreach($attribute_group['attribute'] as $attribute) { ?>
        <tr>
            <td><?php echo $attribute['name']; ?></td>
            <td><?php echo $attribute['text']; ?></td>
        </tr>
        <?php } ?>
        </tbody>
        <?php } ?>
    </table>
    <?php } ?>

</div>
<script>
    window.onload= function() {
        document.getElementById('toggler').onclick = function() {
            openbox('box', this);
            return false;
        };
    };
    function openbox(id, toggler) {
        var div = document.getElementById(id);
        if(div.style.display == 'block') {
            div.style.display = 'none';
            toggler.innerHTML = 'Посмотреть Характеристики';
        }
        else {
            div.style.display = 'block';
            toggler.innerHTML = 'Закрыть';
        }
    }

</script>
Надіслати
Поділитися на інших сайтах


13 минут назад, Oday11 сказал:

getElementById

у вас элементы имеют один и тот же ID, поэтому "кто первый встал - того и тапки"

можете уникализировать id ссылки, например так: <a id="toggler_<?php echo $product['product_id']; ?>" href="#">

а в скрипте также document.getElementById('toggler_<?php echo $product['product_id']; ?>').onclick = function() {

Змінено користувачем PaulKravchenko
Надіслати
Поділитися на інших сайтах

5 минут назад, PaulKravchenko сказал:

у вас элементы имеют один и тот же ID, поэтому "кто первый встал - того и тапки"

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

Поздно обновил, Спасибо, буду пробывать.

Змінено користувачем Oday11
Надіслати
Поділитися на інших сайтах


Только что, Oday11 сказал:

Как исправить можете подсказать?

Дописал в предыдущем посте, сорри, подумал после только)

Наверняка не самое идеальное решение, но первое что пришло в голову. Не проверял, попробуйте плиз.

Надіслати
Поділитися на інших сайтах

4 минуты назад, PaulKravchenko сказал:

Дописал в предыдущем посте, сорри, подумал после только)

Наверняка не самое идеальное решение, но первое что пришло в голову. Не проверял, попробуйте плиз.

И на первом товаре перестало работать)

Надіслати
Поділитися на інших сайтах


@Oday11 извините, тупанул))

 

Предлагаю вам более элегантное решение, без дополнительной требухи, только бутстрап

<a data-toggle="collapse" href="#attributes<?php echo $product['product_id']; ?>" aria-expanded="false" aria-controls="attributes<?php echo $product['product_id']; ?>">Посмотреть Характеристики</a>
<div class="collapse multi-collapse" id="attributes<?php echo $product['product_id']; ?>">
    <?php if($product['attribute_groups']) { ?>
    <table>
        <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
        <thead><!--названия групп-->
        <tr>
            <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
        </thead><!---->
        <tbody>
        <?php foreach($attribute_group['attribute'] as $attribute) { ?>
        <tr>
            <td><?php echo $attribute['name']; ?></td>
            <td><?php echo $attribute['text']; ?></td>
        </tr>
        <?php } ?>
        </tbody>
        <?php } ?>
    </table>
    <?php } ?>
</div>

И скрипт не нужен. Ну разве что текст ссылки не меняется при раскрытии/сворачивании

Надіслати
Поділитися на інших сайтах

1 час назад, PaulKravchenko сказал:

@Oday11 извините, тупанул))

 

Предлагаю вам более элегантное решение, без дополнительной требухи, только бутстрап


<a data-toggle="collapse" href="#attributes<?php echo $product['product_id']; ?>" aria-expanded="false" aria-controls="attributes<?php echo $product['product_id']; ?>">Посмотреть Характеристики</a>
<div class="collapse multi-collapse" id="attributes<?php echo $product['product_id']; ?>">
    <?php if($product['attribute_groups']) { ?>
    <table>
        <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
        <thead><!--названия групп-->
        <tr>
            <td colspan="2"><?php echo $attribute_group['name']; ?></td>
        </tr>
        </thead><!---->
        <tbody>
        <?php foreach($attribute_group['attribute'] as $attribute) { ?>
        <tr>
            <td><?php echo $attribute['name']; ?></td>
            <td><?php echo $attribute['text']; ?></td>
        </tr>
        <?php } ?>
        </tbody>
        <?php } ?>
    </table>
    <?php } ?>
</div>

И скрипт не нужен. Ну разве что текст ссылки не меняется при раскрытии/сворачивании

На локалке протестировал, все супер!Благодарю!

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.