Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

JoomShopping: вывод HTML после каждых пяти товаров

Больше
5 года 8 мес. назад - 5 года 8 мес. назад #1 от Aleksej
Проблема вставки HTML после каждых пяти товаров JoomShopping решается обычно крайне несложно: в файле list_products.php шаблона

после строк
Code:
<?php if ($k % $this->count_product_to_row == $this->count_product_to_row - 1) : ?> <div class = "clearfix"></div>

размещается позиция модуля с произвольным названием:
Code:
<?php $document = &JFactory::getDocument(); $renderer = $document->loadRenderer('modules'); $options = array('style' => 'xhtml'); $position = 'Ваша позиция'; echo $renderer->render($position, $options, null); ?>

, эту же позицию модуля указываем в templateDetails.xml используемого шаблона, после чего вполне уже можно создавать новый модуль, содержаший нужный HTML, и размещать его в этой вновь созданной позиции. Как вариант - использовать Random HTML-code module (или аналоги), позволяющий рандомно выводить различный HTML.

Все, таким образом, более чем несложно, если рандомный HTML - это именно то, что вам необходимо для вашего интернет-магазина на базе JoomShopping. А что, если хочется после каждых пяти товаров выводить код не рандомно, а последовательно, строго по порядку: первый HTML-код, второй, третий, четвертый... снова первый, снова второй, и т.д.? - именно так почему-то захотелось пользователю PHP.RU форума, по ссылке .

Тогда все несколько сложнее.

В контексте PHP.RU форума , который в последнее время производит все более и более странное впечатление, имхо... см. по ссылке статью в блоге. Сразу отмечу, что отсутствие, по-видимому, у программистов форума элементарных знаний ООП (ответ на вопрос на момент публикации топика по прежнему "при наличии отсутствия") вызывает не меньшее удивление, чем и столь же явно выраженное нежелание горе-бизнесмена платить даже символические деньги за доработки своего интернет-магазина. Несолидно как-то, некрасиво; равно как первое, так и второе. Вероятно, именно этот анонимный интернет-магазинщик в дальнейшем, выклянчив на форумах свои хаки и циклы, сумеет предоставить своим клиентам сервис поистине экстра-класса... конечно, только в том случае, если горе-кодеры, в свою очередь, подзубрят и подучат PHP.

Впрочем, одно другого стоит. All right, в ожидании сего радостного момента я рад совершенно бесплатно помочь и тем и другим. Все, на самом-то деле, очень и очень несложно.
Последнее редактирование: 5 года 8 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 3
Больше
5 года 8 мес. назад - 5 года 8 мес. назад #2 от Aleksej
Итак. Прежде всего, вспомним о Standard PHP Library, SPL, и обратимся именно к этому инструментарию. Попробуем оттолкнуться от скрипта:
Code:
<? $obj = new ArrayObject( ["apple", "orange", "grape", "plum"] ); $it = new InfiniteIterator(new ArrayIterator($obj)); $it->rewind(); // Iterate over the values in the ArrayObject: $i = 0; while( $i++ < 20){ echo $it->key() . ' => ' . $it->current() . "\n"; $it->next(); } ?>

, который выдаст нам следующее:
Code:
0 => apple 1 => orange 2 => grape 3 => plum 0 => apple 1 => orange 2 => grape 3 => plum 0 => apple 1 => orange 2 => grape 3 => plum 0 => apple 1 => orange 2 => grape 3 => plum 0 => apple 1 => orange 2 => grape 3 => plum

Приглядитесь внимательнее. Разве не именно то, что и требовалось? Уверяю, это именно оно.

А дальше все совсем просто:

Где-нибудь вверху файла (раньше, чем начнется foreach)
Code:
components/com_jshopping/templates/default/listproducts/list_products.php

- включаем массив, элементы которого будут последовательно инициировать HTML после каждого пятого (например) товара:
Code:
<?php $obj = new ArrayObject( ['<div>HTML1</div>', "<div>HTML2</div>", "<div>HTML3</div>", "<div>HTML4</div>"] ); $it = new InfiniteIterator(new ArrayIterator($obj)); $it->rewind(); ?>

, а там, где мы с вами только что размещали новую позицию модуля (вместо нее) - вписываем всего только две строчки кода:
Code:
<?php echo $it->current(); $it->next(); ?>

Открываем витрину своего JoomShopping и любуемся. Ну вот, пожалуй, и вся на сегодня халява для очередного российского безымянного интернет-бизнесмена, также и для "кодеров" форума PHP.RU.
Последнее редактирование: 5 года 8 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум