Я сделал расширение слайдера для Magento 2, используя Slick.js. Я позволил пользователям добавлять слайды в бэкэнд, и для каждого слайда есть возможность добавить текстовое поле.
Я получаю текст для текстового поля, как это (в комментарии <-- Get text -->
:
<?php $_sliders = $block->getSlidersCollection(); ?>
<?php if ($_sliders->count() > 0): ?>
<div class="sliderslick">
<?php foreach ($_sliders as $_slider): ?>
<div id="sliderslick-container">
<!-- Check if URL is linked to image -->
<?php if ($_slider->getUrl()): ?>
<a href="<?php echo $block->escapeUrl($_slider->getUrl()); ?>" <?php if ($block->getLinkTarget()): ?> target="_blank" <?php endif; ?>>
<?php endif; ?>
<!-- Get image -->
<?php if ($image = $block->getImageUrl($_slider->getImage())): ?>
<img src="<?php echo $image; ?>" alt="<?php echo $block->escapeHtml($_slider->getImageLabel()); ?>" />
<?php endif; ?>
<!-- Get text -->
<?php if ($_slider->getHtml()): ?>
<div class="slider-textbox">
<div class="textbox-content">
<?php echo $_slider->getHtml() ?>
</div>
</div>
<?php endif; ?>
<?php if ($_slider->getUrl()): ?>
</a>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
Это отлично работает, за исключением первого слайда. Для первого слайда есть несколько одинаковых текстовых полей, и они «вставляются» друг в друга, вот так:
В то время как на втором слайде текстовое поле показывается нормально (только одно текстовое поле).
Есть ли недостаток в коде? Это как-то связано с тем, как php загружается на страницу?
Выход из <?php print_r( $_slider->getHtml() ); ?>
Задача ещё не решена.
Других решений пока нет …