Рекламний блок у тексті статті

Найкраще в книзі те, що вона не обривається на найцікавішому місці для рекламної вставки.

Реклама усередині статті

Знаю, що це найвитонченіший і мабуть, ненависний з боку користувача спосіб вставляти рекламний блок у текст статті, але в деяких, рідкісних випадках гидувати таким способом безглуздо, втім, це тільки моя думка.

До речі, щодо реклами на блогах порушив тему відомий блогер — Сосновський. Я повністю з ним солідарний у цьому питанні і не на секунду не погоджуюся з тими, хто писав у коментарях, що його стаття — спроба виправдатися.

А тепер на тему: як вставити рекламу в контент

Представляю хак для WordPress, завдяки якому можна легко встановити рекламний блок у текст статті, наприклад рекламний блок Google AdSense або ЯДірект.

Вже не пам’ятаю де, але десь я бачив реалізацію цього завдання, тільки було описано, як вставити рекламний блок у текст статті після тега <!–more–> . А як бути, якщо на сайті автор у принципі не користується цим тегом, як тоді вставити рекламу на всі сторінки? Відповідь на це запитання — такий мій код:

<?php

/**
 * Вставляє рекламний блок у перший перенесення рядка або перший закриває тег </p> або </table>
 * Через певну кількість символів.
 *
 * @param number $nu - через скільки символів шукати перенесення рядка і вставляти рекламу? 400 – за замовчуванням.
 *
 * version: 0.2
 */
add_filter('the_content', 'kama_content_advertise', -10);
function kama_content_advertise( $text, $num = false ){
	if( ! is_singular() ) return $text; // переконаємось, що ми на окремій сторінці

	if(! $num) $num = 400;

	// Код реклами
	ob_start();
	?>

	<div class="kama-inline-ads" style="float:right; margin:0 0 1em 1.5em;">
	тут рекламний код
	</div>    

	<?php
	$adsense = ob_get_clean();

	// Розкоментуйте, якщо потрібно вставити блок одразу перед тегом <!--more-->
	# return str_replace('<!--more-->', $adsense.'<!--more-->', $text);

	return preg_replace('~[^^]{'. $num .'}.*?(?:r?nr?n|</p>|</table>)~su', " ${0}$adsense", trim($text), 1);
}

Код вставляє рекламний блок в перший-ліпший перенесення рядка або закриває тег </p> або тег </table> через певну кількість символів (задається в змінній $nu). Тобто. у цьому випадку в тексті статті буде пропущено 400 символів, після яких буде знайдено перше перенесення рядка (або тег </p> ) і перед ним буде вставлено рекламний блок.

Думаю не потрібно акцентувати увагу на тому, що фразу “тут рекламний код” потрібно замінити на цей самий рекламний код?smile

Якщо потрібно вставити рекламний блок перед тегом more

Так само на всякий пожежний випадок я передбачив випадок, коли потрібно вставляти рекламний блок перед тегом <!–more–> , для цього просто розкоментуйте передостанній рядок:

return str_replace('<!--more-->', $adsense.'<!--more-->', $text);
	// return preg_replace('@([^^]{'.$nu.'}.*?)(r?nr?n|</p>)@', "\1$adsense \2", trim($text), 1);

Реклама тільки для старих постів

Якщо є необхідність показувати рекламу тільки для постів термін давності яких, скажімо, 7 днів, то використовуйте такий код:

add_filter('the_content', 'kama_content_advertise', -10);
function kama_content_advertise( $text ){
	$ days = 7; // Через скільки днів, через дату публікації посту, показувати рекламу.
	$nu = 400; / / Через скільки символів шукати перенесення рядка і вставляти рекламу?

	$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
	if($offset < (3600*24*$days) ) return $text;

	//Код реклами
	$adsense = '
		<div style="float:right;margin:0 0 10px 15px;">
		тут рекламний код
		</div>
	';

	return preg_replace('@([^^]{'.$nu.'}.*?)(r?nr?n|</p>)@', "\1$adsense\ 2", trim($text), 1);
}

Розміщувати рекламу в такий спосіб може бути зручно, коли ви хочете відволікати своїх постійних читачів рекламою у нових статтях. Адже саме постійні читачі насамперед заходять прочитати ваш черговий шедевр.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *