JoomShopping: вывод HTML после каждых пяти товаров - IT-C@FE
×
Masterpro Nivo Slider (06 фев 2023)

Это форк Vinaora Nivo Slider, пришлось переименовать, в силу требования JED. Даже старую версию качать можно было только с варезных сайтов, нашпигованную троянами. Зачем оно такое, согласитесь.

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

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

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

размещается позиция модуля с произвольным названием:
<?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 года 3 мес. назад пользователем Aleksej.

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

Подробнее
5 года 3 мес. назад - 5 года 3 мес. назад #2 от Aleksej
Итак. Прежде всего, вспомним о Standard PHP Library, SPL, и обратимся именно к этому инструментарию. Попробуем оттолкнуться от скрипта:
<?
$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();
}
?>

, который выдаст нам следующее:
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)
components/com_jshopping/templates/default/listproducts/list_products.php

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

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

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

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

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