[Решено] Рекламный блок во вьюсе

Главные вкладки

Аватар пользователя mikewing mikewing 10 августа 2013 в 18:32

На сайте http://www.top7news.gr/ увидел блок рекламы во вьюсе. Как сделать также? И что интересно - это не просто блок между выборками - это содержимое выборки.

ВложениеРазмер
Иконка изображения screenshot255.jpg275.09 КБ

Комментарии

Аватар пользователя mikewing mikewing 10 августа 2013 в 23:36

"webpavilion" wrote:

вариантов много, самый простой через темизацию.

Впихнуть блок с адсенсом во второй по счету row, не выводя в нем содержимое?
Во views-view--и.т.д.tpl.php.
Немного не понимаю, пока во всяком случае.

Аватар пользователя webpavilion webpavilion 11 августа 2013 в 10:21

я делал подобное для табличного вывода, если выводить для грида будет чуть сложнее.

Для грида 3x3 вам нужно уменьшить кол-во элементов на страницу до 8 и в шаблоне добавить вывод нужного рекламного блока в нужном вам месте.

Аватар пользователя Chyvakoff Chyvakoff 11 августа 2013 в 14:31

Ставишь [module=Panels] и вьюсом делаешь представление типа "Контекст"
Добавляешь этот контекст в страницу, созданную через панели.
Далее на этой странице можешь вывести отдельно каждую строку из выдачи вьюса.
Если ниче не понял - кури мануалы, это не оч простая фишка. Зато очень крутая и гибкая.

http://www.drupal.ru/node/90144

Аватар пользователя drupby drupby 11 августа 2013 в 17:02

"Chyvakoff" wrote:
Ставишь  Panels и вьюсом делаешь представление типа "Контекст"

а зачем?
Если в шаблоне вьюса выводится

<?php foreach ($rows as $id => $row): ?>
 <?php print $row; ?>
<?php endforeach; ?>

если сеткой или в таблице то эти элементы выводятся в табличном виде ,но все равно в цикле
кто мешает внутри цикла указать

if ($id == 3)
print $ad;
Аватар пользователя mikewing mikewing 12 августа 2013 в 22:51

"drupby" wrote:
кто мешает внутри цикла указать

if ($id == 3)
print $ad;


Вот-вот и я об этом, а содержимое 3-его row в топку?

Аватар пользователя drupby drupby 12 августа 2013 в 23:03

"mikewing" wrote:
Вот-вот и я об этом, а содержимое 3-его row в топку?

foreach ($rows as $id => $row) {
  print $row;
  if ($id == 3) {
    print $ad;
  }
}

никуда строка не денется

Аватар пользователя mikewing mikewing 13 августа 2013 в 17:35

Кстати, пришел ответ от разработчика этого сайта.
--
To answer your question, all you have to do is override the views-view-fields.tpl.php template file for the specific view in question. You can do that by copying the original template file from the views module and pasting it in the template folder of the theme you are using, renaming it to match your view's machine name (do a google search on that, there is plenty of info if you get stuck).

Inside this template you can append the google adsense script code to the $field->content variable, with your custom mark up that you'll use to style/position the ad.

For example:

<?php$adsense = '<div class="google-ad-box"><script ........... google adsense code...... </script></div>'
$field->content = $field->content.$adsense;?>

Now if you do only that you will get a google ad inside every row, of course we don't want that, thus you will need to create a counter to track the row you want to append the ad to and print the adsense code only in there.

If the abode sounds too complicated you could use the Views PHP module, but I'd advise against that, as it's bad practice to store and execute PHP code from the database.

I hope I helped you, if you need anything in addition don't hesitate to ask.

Best regards,
Leonidas
--
Вот если кому еще интересно.