Как вставить код Adsense после первого сообщения на форуме? Движок PHPBB2.

12
qilly
На сайте с 28.03.2008
Offline
411
2919

Куда там вставлять, чтобы объявления отображались после первого сообщения в темах?

stifler_x
На сайте с 19.06.2008
Offline
193
#1

Либо хак ищите, либо в коде вывода постов копаться надо, нацяльника )

Кода не видел, но интуиция подсказывает, что посты выводятся в цикле, потому после первой итерации надо подставить код Adsense.

qilly
На сайте с 28.03.2008
Offline
411
#2

Может кто-нибудь ткнет носом?:)

Sapega
На сайте с 09.02.2009
Offline
68
#3

Надо в нескольких местах править код. Отписал в личку, если что обращайся.

Sapega добавил 23.02.2010 в 21:00

Пообщались с ТС в личке, надеюсь, что он все понял, но все-таки решил выложить здесь то, как я победил данную проблему, может еще кому пригодиться.

В файле viewtopic_body.tpl ищем строку

<!-- END postrow -->

и прямо перед ней вставляем строку


{postrow.GOOGLE_AD}

Вообще postrow - это вывод отдельного поста. Все, теперь с темплатой покончили.

Для файла viewtopic.php у меня слудующая реализация:


for($i = 0; $i < $total_posts; $i++)
{
$poster_id = $postrow[$i]['user_id'];
$poster = ( $poster_id == ANONYMOUS ) ? $lang['Guest'] : $postrow[$i]['username'];

$post_date = create_date($board_config['default_dateformat'], $postrow[$i]['post_time'], $board_config['board_timezone']);

$poster_posts = ( $postrow[$i]['user_id'] != ANONYMOUS ) ? $lang['Posts'] . ': ' . $postrow[$i]['user_posts'] : '';

$poster_from = ( $postrow[$i]['user_from'] && $postrow[$i]['user_id'] != ANONYMOUS ) ? $lang['Location'] . ': ' . $postrow[$i]['user_from'] : '';

$poster_joined = ( $postrow[$i]['user_id'] != ANONYMOUS ) ? $lang['Joined'] . ': ' . create_date($lang['DATE_FORMAT'], $postrow[$i]['user_regdate'], $board_config['board_timezone']) : '';

//здесь запустим рекламный блок ссылок от Гугла
$gasblocktext ="";
if ($i == 0) { //здесь мы можем выбрать после какого поста запускать рекламу
$gasblock = "путь/gasblock.php";

if (file_exists($gasblock)) {
include $gasblock;
}
}
//

т.е. начало идет стандартное, а потом мой кусочек от

//здесь запустим рекламный блок ссылок от Гугла

Смысл в чем: объявляем переменную-пустышку $gasblocktext, она так пустышкой и останется, если это не нулевой пост в теме (нумерация идет от нуля), если же пост нулевой (или любой другой по желанию), то впихиваем в переменную, все что нам надо. Я сделал это во внешнем файле, здесь не забудь прописать правильный путь к этому файлу, который имеет следующий вид:


<?
//выводится рекламный блок в форумах 468x60, можно другой, но смысл понятен

$gasblocktext = " <!-- Google ad START -->\n";
$gasblocktext .= " <tr align=center>\n"; //у форума табличная верстка, мы рекламой занимаем одну строку таблицы.
$gasblocktext .= " <td colspan=2>\n";
$gasblocktext .= " <noindex>\n";
$gasblocktext .= " <script type=\"text/javascript\"><!--\n";
$gasblocktext .= " google_ad_client = \"pub-Ваш_идентификатор\";\n";
$gasblocktext .= " /* 468x60, ForumBottom */\n";
$gasblocktext .= " google_ad_slot = \"Ваш_ Эд_ слот\";\n";
$gasblocktext .= " google_ad_width = 468;\n";
$gasblocktext .= " google_ad_height = 60;\n";
$gasblocktext .= " //-->\n";
$gasblocktext .= " </script>\n";
$gasblocktext .= " <script type=\"text/javascript\"\n";
$gasblocktext .= " src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n";
$gasblocktext .= " </script>\n";
$gasblocktext .= " </noindex>\n";
$gasblocktext .= " </td>\n";
$gasblocktext .= " </tr>\n";
$gasblocktext .= " <!-- Google END -->\n";

?>

Видно, что это просто стандартный блок AdSense (не забыть поменять на свои данные!). Можно это сделать прямо в файле viewtopic.php, но ИМХО, так более элегантно.

Но это еще не все. Остался еще один небольшой момент. В конце файла viewtopic.php, есть такая штука:


$template->assign_block_vars('postrow', array(

это готовятся данные для темплаты. Так вот, теперь в эти данные надо добавить и свою строку:


'GOOGLE_AD' => $gasblocktext

все сопоставления там идут через запятую, т.е. в любом месте добавляем свою строку.

Вот в общем-то и все. Делать намного меньше, чем объяснять. Надеюсь, что это действительно будет кому-то полезным.

robot-sgibatel
На сайте с 11.10.2008
Offline
87
#4

Sapega, спасибо большое. У меня вопрос - как сделать чтобы реклама выводилась еще и после последнего поста на странице?

"Радиация убивает только тех, кто ее боится." © Гомер Джей Симпсон (http://esquire.ru/wil/simpson)
Jefa
На сайте с 01.02.2007
Offline
191
#5

robot-sgibatel, в файле viewtopic_body.html после

<!-- IF QUICK_REPLY --><!-- INCLUDE quick_reply.html --><!-- ENDIF -->

вставляйте код гугла.

Потом идет:

</tr>

</table>

</div>

<div id="pagefooter"></div>

<br clear="all" />

<!-- INCLUDE breadcrumbs.html -->

<!-- IF S_DISPLAY_ONLINE_LIST -->

<br clear="all" />

Jefa
На сайте с 01.02.2007
Offline
191
#6

Ида, это лучше делать через админку форума.

robot-sgibatel
На сайте с 11.10.2008
Offline
87
#7

Jefa, этот вариант плохо подходит, т.к. если в теме пока только одно сообщение то под ним будет два блока адсенса, а это некрасиво.

Может быть Sapega знает как в его код внести изменения так, чтобы адсенс выводился под первым и под последним, но если первое сообщение является и последним, то под последним не выводился?

Sapega
На сайте с 09.02.2009
Offline
68
#8
robot-sgibatel:
Jefa, этот вариант плохо подходит, т.к. если в теме пока только одно сообщение то под ним будет два блока адсенса, а это некрасиво.

Может быть Sapega знает как в его код внести изменения так, чтобы адсенс выводился под первым и под последним, но если первое сообщение является и последним, то под последним не выводился?

Так тут вообще просто, как грабли. Конечно, если код AdSense для верхнего блока одинаков с кодом нижнего блока. Меняем это

if ($i == 0) { //здесь мы можем выбрать после какого поста запускать рекламу
на это

if (($i==0) || ($i==$total_posts-1)) {	//реклама после 1-го и после последнего поста

Надеюсь понятно, что дублирования в этом случае не будет. Хотя можете это и экспериментально проверить.

I
На сайте с 30.11.2009
Offline
54
#9

Sapega, почему при вставке твоего кода, выдает ошибку, что не закрыта одна скобка и выдается внезапный конец выражения?

Пробовал все это реализовать у себя на форуме, чтобы после первого сообщения выскакивала реклама, но у меня ничего не вышло. Что за файл такой .tpl, если у меня в папке стилей все файлв с расширением html?

http://miriadna.com (http://miriadna.com)
Sapega
На сайте с 09.02.2009
Offline
68
#10

Если пишет, что скобка не закрыта, значит Вы ее действительно где-то не закрыли, зря ошибку писать не будет. Я даю свой код, который у меня прекрасно работает, да и народ здесь подтверждает, что тоже все получается.

tpl-файлы лежат обычно в папке templates/subSilver или что-то другое. Это обычные файлы темплат. Может быть у Вас просто версия форума несколько не та, потому что здесь обсуждается PHPBB2. Тем не менее tpl-файлы это по смыслу что-то весьма близкое к обычному HTML, так что анализируя код можно понять, как этого добиться и в других версиях.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий