Na wstępnie należy dość opacznie napisać: nie istnieje metoda zabezpieczenia grafik przed kopiowaniem na stronach internetowych ;-)
Nie istnieje, jednak można ten „proceder” dość mocno utrudnić intruzowi. Niestety jak będzie on wystarczająco zmotywowany (lub będzie dysponował odpowiednią wiedzą na ten temat) – i tak pobierze np. zdjęcie lub grafiki..
Takim utrudnieniem jest na pewno blokada użycia prawego przycisku myszki na całej stronie sklepu.
Dodatkowo możemy uniemożliwić zaznaczanie tekstu/zdjęć z opisów.
Jak to zrobić? Ogranicza się to do edycji 3 plików.
Jeśli jesteśmy programistami/webmasterami – taka blokada może nam utrudnić pracę.. Dlatego podaliśmy też metodę na szybkie wyłączenie blokady poprzez komentarze 🙂
Zawartość artykułu
1) Blokada w tagu < body >
Otwórz plik
(PrestaShop 1.6.x)
/themes/{SZABLON}/header.tpl
(PrestaShop 1.7.x)
/themes/{SZABLON}/templates/layouts/layout-both-columns.tpl
Następnie znajdź tam znacznik
<body>
Następnie dodaj do niego atrybut:
<body oncontextmenu="return false;">
Czyli np.
Wartość:
<body{if isset($page_name)} id="{$page_name|escape:'html':'UTF-8'}"{/if} class="{if isset($page_name)}{$page_name|escape:'html':'UTF-8'}{/if}{if isset($body_classes) && $body_classes|@count} {implode value=$body_classes separator=' '}{/if}{if $hide_left_column} hide-left-column{else} show-left-column{/if}{if $hide_right_column} hide-right-column{else} show-right-column{/if}{if isset($content_only) && $content_only} content_only{/if} lang_{$lang_iso}">
Zamień na:
<body{if isset($page_name)} id="{$page_name|escape:'html':'UTF-8'}"{/if} class="{if isset($page_name)}{$page_name|escape:'html':'UTF-8'}{/if}{if isset($body_classes) && $body_classes|@count} {implode value=$body_classes separator=' '}{/if}{if $hide_left_column} hide-left-column{else} show-left-column{/if}{if $hide_right_column} hide-right-column{else} show-right-column{/if}{if isset($content_only) && $content_only} content_only{/if} lang_{$lang_iso}" oncontextmenu="return false;">
Czasowe wyłączenie blokady – użyj komentarza:
<body{if isset($page_name)} id="{$page_name|escape:'html':'UTF-8'}"{/if} class="{if isset($page_name)}{$page_name|escape:'html':'UTF-8'}{/if}{if isset($body_classes) && $body_classes|@count} {implode value=$body_classes separator=' '}{/if}{if $hide_left_column} hide-left-column{else} show-left-column{/if}{if $hide_right_column} hide-right-column{else} show-right-column{/if}{if isset($content_only) && $content_only} content_only{/if} lang_{$lang_iso}" /* oncontextmenu="return false;"*/ >
2) Blokada zaznaczania tekstu w CSS
Otwórz plik:
(PrestaShop 1.6.x)
/themes/{SZABLON}/css/global.css
(PrestaShop 1.7.x)
/themes/{SZABLON}/assets/css/theme.css
I umieść gdzieś na jego początku (np. po deklaracji html {} albo table {} ) kod:
body{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
Czasowe wyłączenie blokady – użyj komentarza:
/*
body{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
*/
3) Wyłączenie PPM (prawego przycisku myszki) – JavaScript
Otwórz plik:
(PrestaShop 1.6.x)
/themes/{SZABLON}/js/global.js
(PrestaShop 1.7.x)
/themes/{SZABLON}/assets/js/custom.js
I dopisz na jego końcu nast. kod:
//Disable right-click of mouse, F12 key, and save key combinations on page
//By Arthur Gareginyan (arthurgareginyan@gmail.com)
//For full source code, visit https://mycyberuniverse.com
window.onload = function() {
document.addEventListener("contextmenu", function(e){
e.preventDefault();
}, false);
document.addEventListener("keydown", function(e) {
//document.onkeydown = function(e) {
// "I" key
if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
disabledEvent(e);
}
// "J" key
if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
disabledEvent(e);
}
// "S" key + macOS
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
disabledEvent(e);
}
// "U" key
if (e.ctrlKey && e.keyCode == 85) {
disabledEvent(e);
}
// "F12" key
if (event.keyCode == 123) {
disabledEvent(e);
}
}, false);
function disabledEvent(e){
if (e.stopPropagation){
e.stopPropagation();
} else if (window.event){
window.event.cancelBubble = true;
}
e.preventDefault();
return false;
}
};
Czasowe wyłączenie blokady – użyj komentarza:
/*
//Disable right-click of mouse, F12 key, and save key combinations on page
//By Arthur Gareginyan (arthurgareginyan@gmail.com)
//For full source code, visit https://mycyberuniverse.com
window.onload = function() {
document.addEventListener("contextmenu", function(e){
e.preventDefault();
}, false);
document.addEventListener("keydown", function(e) {
//document.onkeydown = function(e) {
// "I" key
if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
disabledEvent(e);
}
// "J" key
if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
disabledEvent(e);
}
// "S" key + macOS
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
disabledEvent(e);
}
// "U" key
if (e.ctrlKey && e.keyCode == 85) {
disabledEvent(e);
}
// "F12" key
if (event.keyCode == 123) {
disabledEvent(e);
}
}, false);
function disabledEvent(e){
if (e.stopPropagation){
e.stopPropagation();
} else if (window.event){
window.event.cancelBubble = true;
}
e.preventDefault();
return false;
}
};
*/
Wdrożenie zmian – wyłączenie cache.
UWAGA! Aby zmiany były widoczne należy dezaktywować cache sklepu i wymusić kompilację!
Dla przypomnienia:
Wejdź w dział:
Zaawansowane -> Wydajność -> (sekcja) Ustawienia dotyczące Smarty
1) Zanotuj zastane ustawienia, dla przykładu:
2) Następnie zmień
a) Ustawienie dotyczące smarty:
„Kompilacja szablonu” ustawić na: „Wymuś kompilację”
b) kolejną opcję „Pamięć podręczna” przestawić na „NIE”
Wciśnij przycisk „Zapisz”
3) Dla pewności kliknij przycisk u góry: „Wyczyść pamięć podręczną”
4) Przeładować stronę główną i zobaczyć czy blokady działają
5) Przywrócić ustawienia do wartosci domyślnych z przed zmiany ustawień.
– – –
Oczywiście można też zastosować znaki wodne na zdjęcia, jednak przeważnie one dość szpecą grafiki.
grafika: peakpx.com


