Здесь хотелось бы рассказать вам про событие 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;”>> или одна?