Здесь хотелось бы рассказать вам про событие onCopy, которое мы будем использовать для предотвращения бездумного копирования сайта и не только.
Скачать исходники для статьи можно ниже
Вот простенький код с использованием onCopy, который позволит нам при копировании фрагмента на сайте, вывести предупреждающее окошко, в котором можно написать, например:
“Копирование материалов без активной ссылки на https://mnogoblog.ru запрещено.”
Или же использовать его для предупреждения посетителей сайта, например:
“Перед тем как начать производить манипуляции над своим сайтом – не забудьте сделать резервную копию вашего сайта, иначе он может сломаться.”
Код следующий:
<php oncopy="alert('При копировании материалов сайта\nне забудьте вставить ссылку на\nhttps://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 https://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 https://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



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