За последние 24 часа нас посетили 22745 программистов и 1200 роботов. Сейчас ищут 642 программиста ...

Создание простого цикла

Тема в разделе "PHP для новичков", создана пользователем Vorona34, 28 июл 2018.

  1. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Есть страница на которой через каждые 5 товаров (1 строка) выводится рекламный блок. Так как Яндекс не умеет показывать один рекламный блок несколько раз, думаю реализовать показ разных блоков путем добавления в код цикла, который в зависимости от итерации будет выводить нужный блок. Попробовал по примерам сделать сам, но ни фига не получилось с ходу.

    Можете такое реализовать? Это точно нужно делать на php? )))
    PHP:
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. ?>
    4. <div class="jshop list_product" id="comjshop_list_product">
    5. <?php foreach ($this->rows as $k=>$product) : ?>
    6.     <?php if ($k % $this->count_product_to_row == 0) : ?>
    7.         <div class = "row-fluid">
    8.     <?php endif; ?>
    9.  
    10.     <div class = "sblock<?php echo $this->count_product_to_row;?>">
    11.         <div class = "block_product">
    12.             <?php include(dirname(__FILE__)."/".$product->template_block_product);?>
    13.         </div>
    14.     </div>
    15.  
    16.     <?php if ($k % $this->count_product_to_row == $this->count_product_to_row - 1) : ?>
    17.         <div class = "clearfix"></div>
    18.         </div>
    19.      
    20.  
    21. МЕСТО ДЛЯ РЕКЛАМЫ
    22.      
    23.      
    24.     <?php endif; ?>
    25.     <?php endforeach; ?>
    26.  
    27. <?php if ($k % $this->count_product_to_row != $this->count_product_to_row - 1) : ?>
    28.     <div class = "clearfix"></div>
    29.     </div>
    30. <?php endif; ?>
    31. </div>
     
    #1 Vorona34, 28 июл 2018
    Последнее редактирование модератором: 28 июл 2018
  2. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Ты у яндекса спросил, они разрешили?
    PS: и это без шуток.
     
  3. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    С этим проблем нет.
     
  4. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    прочему надо показывать именно один рекламный блок? почему не разные?

    Я, кстати, не уверен, что не умеет. Бывает, показывает. Бывает, нет; я сейчас про RTB-блоки.
    Но даже если предположить, что не умеет - каким образом планируется при помощи цикла (!?) заставить Яшу показать то, что он не хочет показывать, не очень понял?

    При чем здесь циклы и вообще php?
     
  5. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    я не знаю как работает реклама яндекса, может там сначала подключается js в шапке и потом вставляется блок с id в котором покажется реклама лиибо через фрейм. Ну короче. Я бы сделал так собрал бы все в массив все блоки с рекламой или фреймы потом в цикле каждую пятую итерацию делал
    PHP:
    1. $el = rand(0,count($mas));
    2. echo $mas[$el];
    3. unset($mas[$el]);
     
  6. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    В теме я указал, что "думаю реализовать показ разных блоков".
     
  7. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Яндекс контролирует все блоки, которые будет показывать страница. Существует предельное количество блоков, например, которые способна отображать такая страничка. Кроме того, Яндекс стремится показать разные блоки; иное дело, что проводится аукцион в реальном времени (см. описание "Блоки Real Time Bidding") и результаты не всегда оптимальны, имхо, Яндекс постоянно экспериментирует. РОтировать рекламные блоки Яндекса, на мой взгляд, имеет смысл только в одном случае - если хочешь совмещать рекламу Яндекса с блоками Adsence и других. Но я не вижу этого в первом сообщении топика:

    - нелепая, говорящая ни о чем теза. Нафига и кому оно надо, "один рекламный блок несколько раз"?
     
    #7 rishard, 30 июл 2018
    Последнее редактирование: 30 июл 2018
  8. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Переформулирую, чтобы на Вас не давила эта фраза. Мне нужно вставить в одном месте сайта (обозначенном как "МЕСТО ДЛЯ РЕКЛАМЫ") 3 варианта КОДа в зависимости от итерации. Забудьте про Яндекс.
     
  9. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    У тебя есть 3 варианта кода для вставки? Если да, то в чем проблема на каждой итерации цикла подключать файл с кодом (к примеру у тебя 1.php, 2.php, 3.php) вот ты на каждой итерации и подключаешь.
    Либо ты это все заносишь в массив и в зависимости от итерации так-же выводишь.
    Тут могут быть различные варианты.

    И что значит "в зависимости от итерации"?
    Т.е. на первой итерации нужно вывести треугольник, на второй квадрат, на третьей круг? Это я образно говорю, в том смысле что на каждой итерации будет различаться рекламный код? Я думаю непонимание именно в этом.
     
  10. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Проблема в том, что я не знаю PHP, начал писать цикл, так у меня x=0 после каждого товара на сайте отобразилось, а нужный код нет ))) Что нужно сделать я понимаю, но не знаю как.
     
  11. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    судя по этой фразе, также по -

    PHP:
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. ?>

    - у тебя joomla, угадал? куда именно ты намереваешься вхерачить свой цикл, можешь внятно объяснить? какой компонент или модуль?

    UPD. Joomshopping что ли?
     
    #11 rishard, 31 июл 2018
    Последнее редактирование: 31 июл 2018
  12. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Точно. Joomshopping, страница - "список товаров", вывод рекламы после каждой строки.
     
  13. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Достаточно подробно все описано на жумлафоруме. Буквально ваша же ситуация, т.е. вывод рекламного блока после каждого пятого товара. Попробуйте воспользоваться вариантом №1, рекомендованного разрабом модуля, т.е. там, где у вас "МЕСТО ДЛЯ РЕКЛАМЫ" - этот код:

    PHP:
    1. <?php
    2. $document = &JFactory::getDocument();
    3. $renderer = $document->loadRenderer('modules');
    4. $options = array('style' => 'xhtml');
    5. $position = 'Ваша позиция';
    6. echo $renderer->render($position, $options, null);
    7. ?>
     
  14. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    На самом деле у меня сейчас все проще - просто стоит код объявления вместо того, что предлагает разработчик. И один и тот же код показывается после каждых 5 товаров. Я же хочу чтобы после каждых 5 товаров я мог поставить различный код (после 5 товара-рекламный блок 1, после 10-рекламный блок 2 итд ). Спасибо за ссылку на форум, может там подскажут как реализовать.
     
  15. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Ну и напрасно, простой путь не всегда правильный.

    Я бы сделал так, как рекомендует разраб жумлафорума: создал бы новую позицию, прописал бы ее в templateDetails.xml используемого шаблона, затем создал бы новый HTML модуль, в котором указал бы подобие того скрипта, который уже рекомендовали тебе выше; и опубликовал бы его в новой позиции . Что не нравится-то? если вставить php в модуль сходу не получится, используй Sourcerer RegularLabs.

    Если непонятно, насчет скрипта, а свой показывать не хочешь - ну, переспроси, @Dron-Boy расскажет тебе более подробно.

    Или другой вариант, не требующий знаний php вообще... скачай Random HTML-code module (или ему подобный), захерачь туда пяток-десяток HTML своих рекламных блоков, опубликуй в новой позиции модуля, которую указал в list_produts.php, и все сразу будет гут.
     
  16. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Непонятно какой из этих вариантов позволит мне выводить разный код через каждые 5 товаров. Вот разве Random HTML-code module и то, наверное, как повезет с его рандомностью
     
  17. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Поставил Random HTML-code, как я и боялся, он рандомно может повторять один и тот же код, который не будет отображаться второй раз, то есть реклама идет не через каждые 5 товаров, а рандомно ))) Это, конечно, лучше чем было, но не идеал. Циклом проще и гибче.
     
  18. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Random HTML-code всем хорош, но надо же было додуматься не сделать возможность отключения повторений (((
     
  19. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    Гыгыгы. Меркантильные они там сходу ребята, на жумлафоруме, не правда ли? Я прочел ваш диалог. :D
     
  20. Vorona34

    Vorona34 Новичок

    С нами с:
    28 июл 2018
    Сообщения:
    11
    Симпатии:
    0
    Я так понял, что там коммерческая ветка ))
     
  21. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    С джумлаводами соглашение... они по-прежнему в большинстве своем находятся в счастливом неведении, на каком же именно ЯП написан их MVC-фреймворк Joomla... а мы тут взяли на себя обязательство не торговать семечками на базаре.
    :D

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

    PHP:
    1. ['<div><img src="images/belmondo.png"></div>', "<div>HTML2</div>", "<div>HTML3</div>", "<div>HTML4</div>"]
    все как ты хотел. Перебираем, выводим поэлементно и по порядку, по окончании он начинается типа сызнова.
    Картинку даже сюда выведу...

    belmondo.png

    Если что, обращайся. Это я так, просто ради контраста с жумлафорумом.
     
    #21 rishard, 3 авг 2018
    Последнее редактирование: 3 авг 2018