Всплывающее сообщение при копировании сайта

Здесь хотелось бы рассказать вам про событие onCopy, которое мы будем использовать для предотвращения бездумного копирования сайта и не только.
 

Скачать исходники для статьи можно ниже

Вот простенький код с использованием onCopy, который позволит нам при копировании фрагмента на сайте, вывести предупреждающее окошко, в котором можно написать, например:
 
«Копирование материалов без активной ссылки на http://mnogoblog.ru запрещено.»
 
Или же использовать его для предупреждения посетителей сайта, например:
 
«Перед тем как начать производить манипуляции над своим сайтом — не забудьте сделать резервную копию вашего сайта, иначе он может сломаться.»
 

Код следующий:

<php oncopy="alert('При копировании материалов сайта\nне забудьте вставить ссылку на\nhttp://mnogoblog.ru.'); return true;">

 

Куда его вставить?

В принципе в любое место — везде он будет работать.
Конечно вставлять его нужно в код шаблона ваших файлов на wordpress.
 
Для примера, вставим данный код в шаблон (файл темы) header.php.
 
Для этого заходим в панель управления сайтом на wordpress, в левом меню открываем пункт «Внешний вид» и подпункт «Редактор», справа в списке шаблонов ищем файл header.php и нажимаем на него.
В открывшемся код ищем тег </head> и вставляем после него вышеуказанный код, жмем на кнопку «Обновить файл», после обновляем страничку нашего сайта и пробуем копировать.

Визуально сообщение должно выглядеть так:

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

Но и эта проблема решаема!

Вот с помощью данной странички можно коротко узнать к каким тегам можно применить событие onCopy и его параметры:

http://wbex.ru/index.php/JavaScript_Reference/Event_Handlers_Reference/onCopy

Так вот и применим событие onCopy к тегу div, что нам это даст? — то есть сообщение будет выводится для информации, заключенной только в данном блоке.
 

Отлично, для примера давайте вставим код с выводом сообщения в файле темы single.php — который отвечает за вывод записей на вашем блоге на wordpress, то есть показ сообщения при выделении какого-либо фрагмента будет происходить только при просмотре записей вашего сайта и не где более (если вы не установили данный код еще куда-нибудь на вашем сайте или не удалили его из header.php, как в вышеуказанном примере).

Открываем single.php, для этого входим в панель управления вашим файлом, далее в левом меню выбираем пункт «Веншний вид» и подпункт «Редактор», справа в списке шаблонов выбираем наш single.php.

Теперь в коде данного файла создаем блок div с любым неиспользуемым id, например «oncopy» и добавляем в него наше событие onCopy, а также не забываем закрыть данный блок, например до использования формы комментариев — то есть тем мы ограничим область работы данного события и в наших комментариях оно действовать не будет.

...
<div id="oncopy"  oncopy="alert('При копировании материалов сайта\n не забудьте вставить ссылку на\n   http://mnogoblog.ru.'); return true;">
...
</div>

 
Ну например вот так выглядит код моего файла single.php на тестовом сайте mnogoblog2.16mb.com.

[spoiler title=»Обратите внимания на комментарии в коде» open=»0″ style=»1″]

<?php get_header(); ?>
<div class="grid_11">

	<div id="content">


// Вот здесь создан блок oncopy с выводом сообщения.

<div id="oncopy"  oncopy="alert('При копировании материалов сайта\n не забудьте вставить ссылку на\n   http://mnogoblog.ru.'); return true;">>


	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

		<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
			<h1 class="entry-title"><?php the_title(); ?></h1>
<?php echo (get_post_meta($post->ID, 'simgle-post-js', true)); ?>
			<div class="entry">
				<?php the_content(); ?>
				<div class="clearfix"></div>

				<?php wp_link_pages(array('before' => '<p><span class="tags">Pages:</span> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
				<?php the_tags( '<p class="small"><span class="tags">Tags:</span> ', ', ', '</p>'); ?>

				<div class="postmetadata alt">
					<small>
						This entry was posted on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
						and is filed under <?php the_category(', ') ?>.
						You can follow any comments to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.

						<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
							// Both Comments and Pings are open ?>
							You can <a href="#respond">leave a comment</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a>.

						<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
							// Only Pings are Open ?>
							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a>.

						<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
							// Comments are open, Pings are not ?>
							You can skip to the end and leave a comment. Pinging is currently not allowed.

						<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
							// Neither Comments, nor Pings are open ?>
							Both comments and pings are currently closed.

						<?php } edit_post_link('Edit this entry','','.'); ?>

					</small>
				</div>

			</div>
		</div>


// Вот сюда поставил закрывающий тег блока oncopy.
</div>


<?php echo (get_post_meta($post->ID, 'slider', true)); ?>

<?php
  if( is_single() and $singlePostJs = get_post_meta($post->ID, 'single-post-js', true) )
   echo $singlePostJs;
?>

<?php echo (get_post_meta($post->ID, 'single-post-js', true)); ?>


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


	<?php comments_template(); ?>

	<?php endwhile; else: ?>

		<p>Sorry, no posts matched your criteria.</p>

<?php endif; ?>

	</div>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

[/spoiler]

Демо пример можно посмотреть по следующему адресу:
http://mnogoblog2.16mb.com/2012/07/%D0%BC%D0%B0%D0%BD%D0%B8%D0%BF%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D0%B8-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/
Здесь сообщение будет всплывать только в записях, при этом в форме комментариев оно не будет работать.

Если вы хотите добавить данное событие onCopy на странички вашего сайта, то вам нужно произвести аналогичные изменения с файлом page.php вашей темы.

 
 

PS: Есть и другие достаточно интересные способы предотвратить бездумное копирование сайта, например: добавления к выделенному фрагменту ссылки на сайт источник, об этом можете почитать тут:
http://seo-aspirant.ru/copyright
 

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Всплывающее сообщение при копировании сайта: 1 комментарий

  1. Алексей

    Данный код понравился, поставил на сайт, то есть сделал первую часть работы. На счет другой пока не заворачивался. Но так как уже 6 или 7 статей скопипастили и люди опытные, не чета мне, то хоть такое сообщение напомнит о моем существовании. Спасибо за полезную статью.

Добавить комментарий