Minggu, 05 Mei 2019

background Partikel


Membuat Background Partikel - Memiliki situs pribadi ataupun blog dengan desain yang unik dan juga menarik akan mengundang dejak kagum para pengunjung setia blog sobat. Selain mengisi dengan artikel menarik dan juga bermanfaat, mengatur tampilan situs sebagus mungkin dan memaksimalkan User Interface juga User Experience, maka para pengunjung pun akan nyaman untuk menjelah artikel-artikel yang sobat sajikan. Salah satu agar membuat tampilan menarik adalah dengan memakai Partikel JS
Partikel JS adalah sebuah Element HTML dalam tag canvas yang diatur oleh scripting Javascript, menggambarkan sebuah titik-titik melayang bebas kadang juga berbentuk bulat ataupun Bintang disertai dengan garis-garis yang menghubungkannya. Sobat bisa melihat demonstrasi dari situs berikut milik Vincentgarreau untuk lengkapnya atau sobat malas baca dokumentasi cara pakainya bisa sobat gunakan cara yang dibawah ini:

Cara Memasang Partikel JS

Pertama sobat tempelkan kode Javascript berikut di tepas diatas </body>

<script type="text/javascript">
function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e<i.particles.number.value;e++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value))},i.fn.particlesUpdate=function(){for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];if(i.particles.move.enable){var t=i.particles.move.speed/2;a.x+=a.vx*t,a.y+=a.vy*t}if(i.particles.opacity.anim.enable&&(1==a.opacity_status?(a.opacity>=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n<i.particles.array.length;n++){var r=i.particles.array[n];i.particles.line_linked.enable&&i.fn.interact.linkParticles(a,r),i.particles.move.attract.enable&&i.fn.interact.attractParticles(a,r),i.particles.move.bounce&&i.fn.interact.bounceParticles(a,r)}}},i.fn.particlesDraw=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h),i.fn.particlesUpdate();for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];a.draw()}},i.fn.particlesEmpty=function(){i.particles.array=[]},i.fn.particlesRefresh=function(){cancelRequestAnimFrame(i.fn.checkAnimFrame),cancelRequestAnimFrame(i.fn.drawAnimFrame),i.tmp.source_svg=void 0,i.tmp.img_obj=void 0,i.tmp.count_svg=0,i.fn.particlesEmpty(),i.fn.canvasClear(),i.fn.vendors.start()},i.fn.interact.linkParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=i.particles.line_linked.opacity-n/(1/i.particles.line_linked.opacity)/i.particles.line_linked.distance;if(r>0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v<e.opacity&&v>=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius<i.canvas.w&&(e.x=v.x),v.y-e.radius>0&&v.y+e.radius<i.canvas.h&&(e.y=v.y)):(e.x=v.x,e.y=v.y)}else if(i.interactivity.events.onclick.enable&&isInArray("repulse",i.interactivity.events.onclick.mode))if(i.tmp.repulse_finish||(i.tmp.repulse_count++,i.tmp.repulse_count==i.particles.array.length&&(i.tmp.repulse_finish=!0)),i.tmp.repulse_clicking){var c=Math.pow(i.interactivity.modes.repulse.distance/6,3),p=i.interactivity.mouse.click_pos_x-e.x,d=i.interactivity.mouse.click_pos_y-e.y,m=p*p+d*d,u=-c/m*1;c>=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;t<i.particles.array.length;t++){var s=i.particles.array[t],n=e.x-s.x,r=e.y-s.y,c=Math.sqrt(n*n+r*r);c<=e.radius+s.radius&&(e.x=a?a.x:Math.random()*i.canvas.w,e.y=a?a.y:Math.random()*i.canvas.h,i.fn.vendors.checkOverlap(e))}},i.fn.vendors.createSvgImg=function(e){var a=i.tmp.source_svg,t=/#([0-9A-F]{3,6})/gi,s=a.replace(t,function(a,t,i,s){if(e.color.rgb)var n="rgba("+e.color.rgb.r+","+e.color.rgb.g+","+e.color.rgb.b+","+e.opacity+")";else var n="hsla("+e.color.hsl.h+","+e.color.hsl.s+"%,"+e.color.hsl.l+"%,"+e.opacity+")";return n}),n=new Blob([s],{type:"image/svg+xml;charset=utf-8"}),r=window.URL||window.webkitURL||window,c=r.createObjectURL(n),o=new Image;o.addEventListener("load",function(){e.img.obj=o,e.img.loaded=!0,r.revokeObjectURL(c),i.tmp.count_svg++}),o.src=c},i.fn.vendors.destroypJS=function(){cancelAnimationFrame(i.fn.drawAnimFrame),t.remove(),pJSDom=null},i.fn.vendors.drawShape=function(e,a,t,i,s,n){var r=s*n,c=s/n,o=180*(c-2)/c,l=Math.PI-Math.PI*o/180;e.save(),e.beginPath(),e.translate(a,t),e.moveTo(0,0);for(var v=0;r>v;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()};
</script>
Jika sudah copas juga kode Javascript berikut tepat dibawahnya. Ini merupakan Js untuk settingan partikel yang tadi sobat pasang.

<script type="text/javascript">
particlesJS('particles-js',
  
  {
    "particles": {
      "number": {
        "value": 80,
        "density": {
          "enable": true,
          "value_area": 800
        }
      },
      "color": {
        "value": "#ffffff"
      },
      "shape": {
        "type": "circle",
        "stroke": {
          "width": 0,
          "color": "#000000"
        },
        "polygon": {
          "nb_sides": 5
        },
        "image": {
          "src": "img/github.svg",
          "width": 100,
          "height": 100
        }
      },
      "opacity": {
        "value": 0.5,
        "random": false,
        "anim": {
          "enable": false,
          "speed": 1,
          "opacity_min": 0.1,
          "sync": false
        }
      },
      "size": {
        "value": 5,
        "random": true,
        "anim": {
          "enable": false,
          "speed": 40,
          "size_min": 0.1,
          "sync": false
        }
      },
      "line_linked": {
        "enable": true,
        "distance": 150,
        "color": "#ffffff",
        "opacity": 0.4,
        "width": 1
      },
      "move": {
        "enable": true,
        "speed": 6,
        "direction": "none",
        "random": false,
        "straight": false,
        "out_mode": "out",
        "attract": {
          "enable": false,
          "rotateX": 600,
          "rotateY": 1200
        }
      }
    },
    "interactivity": {
      "detect_on": "canvas",
      "events": {
        "onhover": {
          "enable": true,
          "mode": "repulse"
        },
        "onclick": {
          "enable": true,
          "mode": "push"
        },
        "resize": true
      },
      "modes": {
        "grab": {
          "distance": 400,
          "line_linked": {
            "opacity": 1
          }
        },
        "bubble": {
          "distance": 400,
          "size": 40,
          "duration": 2,
          "opacity": 8,
          "speed": 3
        },
        "repulse": {
          "distance": 200
        },
        "push": {
          "particles_nb": 4
        },
        "remove": {
          "particles_nb": 2
        }
      }
    },
    "retina_detect": true,
    "config_demo": {
      "hide_card": false,
      "background_color": "#b61924",
      "background_image": "",
      "background_position": "50% 50%",
      "background_repeat": "no-repeat",
      "background_size": "cover"
    }
  }

);
</script>
Jika sobat sudah menempelkan beberapa kode js diatas, maka langkah terakhir adalah sobat tinggal menempelkan Elemen HTML di tempat agan ingin menempel Partikelnya. Namun karena akan di tempelkan menjadi sebuah Background Website, sobat tinggal menambahkan atribut id="particles-js" pada tag <body> seperti contoh berikut :
<body id="partikel-js" >
Oh iya jangan lupa juga untuk tempel cssnya disimpan di atas</b:skin> atau </style>
canvas{
  display:block;
  vertical-align:bottom;
}

#particles-js{
  width: 100%;
  height: 100%;
  background-color: #b61924;
  background-image: url('');
  background-size: cover;
  background-position: 50% 50%;
  background-repeat: no-repeat;
}
Jika semuanya selesai sobaggal tekan tombol simpan lalu liat perubahan pada situs sobat
Perhatikan Setiap langkah pemasangan, Apabila Ada error ataupun kesalahan lainnya dan sobat bingung bisa tanyakan dengan berkomentar dibawah setelah artikel ini.
Bagi sobat yang penarasan dengan partikel js diterapkan diblogger maka saya sudah siapkan demonstrasi dibawah ini :
Itulah cara Memasang Partikel JS yang bisa sobat terapkan disitus blog kesayang sobat. Karena kodenya panjang saya sarankan agar scriptnya dihosting ke github ataupun layanan cdn kesayangan sobat.

Senin, 11 Februari 2019

Related Post di Worpress berdasarkan Category dan Tag

Related Post WORDPRESS tanpa Plugin

theCategory



 <?php 

    $orig_post = $post;
    global $post;

    $categories = get_the_category($post->ID);

    if ($categories) 
    {
        $category_ids = array();

        foreach($categories as $individual_category)
        {
            $category_ids[] = $individual_category->term_id;
        }

        $args=array(
            'category__in' => $category_ids,
            'post__not_in' => array($post->ID),
            'posts_per_page'=> 2,
            'ignore_sticky_posts'=>1);

        $my_query = new wp_query( $args );

        if( $my_query->have_posts() )
        {
            echo '<div id="related_posts"><h3>Related Posts</h3><ul>';
            while( $my_query->have_posts() )
            {
                $my_query->the_post();?>

                <li>
                <a href="<?php the_permalink();?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
                </li>
            <?php
            }

            echo '</ul></div>';
        }
    }
    
    $post = $orig_post;
    wp_reset_query(); ?
  

theTag



 <?php 
    $orig_post = $post;
    global $post;
    $tags = wp_get_post_tags($post->ID);
    
    if ($tags) {
        $tag_ids = array();
        
        foreach($tags as $individual_tag)
        {
           $tag_ids[] = $individual_tag->term_id;
        }
                
        $args=array(
              'tag__in' => $tag_ids,
              'post__not_in' => array($post->ID),
              'posts_per_page'=>5,
              'ignore_sticky_posts'=>1);
                    
        $my_query = new wp_query( $args );

        if( $my_query->have_posts() ) 
        {
         
            echo '<div id="relatedposts"><h3>Related Posts</h3><ul>';

            while( $my_query->have_posts() )
            {
                $my_query->the_post(); ?>
                <li>
                    <a href="<?php the_permalink();?>" rel="bookmark" title="<?php the_title();?>"><?php the_title(); ?></a>
                </li>
                <?php
             }
                echo '</ul></div>';
            
            }
    }
    
    $post = $orig_post;
    wp_reset_query(); ?>
 

Desain sesuai Selera

Referensi : https://www.wpbeginner.com/wp-themes/how-to-add-related-posts-with-a-thumbnail-without-using-plugins/

Rabu, 30 Januari 2019

Cara Membuat Safelink Blogger Auto Generate dengan Random Artikel

1. Siapkan Blog untuk safelink dengan beberapa artikel

Langkah pertama membuat safelink di blogger adalah dengan membuat blog untuk safelinknya sendiri. Blog baru ini kamu buat dan isi dengan beberapa artikel yang HPK (High Pay Kerword) dengan template yang bebas dan saran saya menggunakan template yang banyak slot iklannya atau biasa kita sebut High CTR Templates.

2. Buat file JS yang dihost ke CDN

Langkah selanjutnya membuat safelink di blogger adalah membuat file js safelinknya dahulu yang dihost ke Github dan layanan CDN lainnya. Script yang harus di host yakni seperti di bawah ini:

 var Base64 = {
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode: function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = Base64._utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
            output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
        }
        return output;
    },
    decode: function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = Base64._utf8_decode(output);
        return output;
    },
    _utf8_encode: function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            } else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    },
    _utf8_decode: function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while (i < utftext.length) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            } else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            } else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }
        return string;
    }
}
var encode = document.getElementById('encode'),
    decode = document.getElementById('decode'),
    output = document.getElementById('output'),
    input = document.getElementById('input');
var User_ID = "";
var protected_links = "";
var a_to_va = 0;
var a_to_vb = 0;
var a_to_vc = "";

function auto_safelink() {
    auto_safeconvert();
}

function auto_safeconvert() {
    var a_to_vd = window.location.hostname;
    if (protected_links != "" && !protected_links.match(a_to_vd)) {
        protected_links += ", " + a_to_vd;
    } else if (protected_links == "") {
        protected_links = a_to_vd;
    }
    var a_to_ve = "";
    var a_to_vf = new Array();
    var a_to_vg = 0;
    a_to_ve = document.getElementsByTagName("a");
    a_to_va = a_to_ve.length;
    a_to_vf = a_to_fa();
    a_to_vg = a_to_vf.length;
    var a_to_vh = false;
    var j = 0;

    
    
    var daftarPostingan = [
      "masukan url postingan blog safelink kamu disini",
      "masukan url postingan blog safelink kamu disini",
      "masukan url postingan blog safelink kamu disini",
      "masukan url postingan blog safelink kamu disini",
      "masukan url postingan blog safelink kamu disini",
    ];
    

    var randomPostingan = daftarPostingan[Math.floor(Math.random()*daftarPostingan.length)];
    var a_to_vi = "";
    for (var i = 0; i < a_to_va; i++) {
        a_to_vh = false;
        j = 0;
        while (a_to_vh == false && j < a_to_vg) {
            a_to_vi = a_to_ve[i].href;
            if (a_to_vi.match(a_to_vf[j]) || !a_to_vi || !a_to_vi.match("http")) {
                a_to_vh = true;
            }
            j++;
        }
        if (a_to_vh == false) {
            var encryptedUrl = Base64.encode(a_to_vi);
            a_to_ve[i].href = randomPostingan + "?url=" + encryptedUrl;
            a_to_ve[i].rel = "nofollow";
            a_to_vb++;
            a_to_vc += i + ":::" + a_to_ve[i].href + "\n";
        }
    }
    var a_to_vj = document.getElementById("anonyminized");
    var a_to_vk = document.getElementById("found_links");
    if (a_to_vj) {
        a_to_vj.innerHTML += a_to_vb;
    }
    if (a_to_vk) {
        a_to_vk.innerHTML += a_to_va;
    }
}

function a_to_fa() {
    var a_to_vf = new Array();
    protected_links = protected_links.replace(" ", "");
    a_to_vf = protected_links.split(",");
    return a_to_vf;
}
Mari kita perhatikan sejenak kode yang diatas tadi. Kalian akan menemukan variabel daftarPostingan dengan tipe data array. Nah untuk value atau nilainya diisi dengan url postingan dari blog safelink yang kamu buat tadi. Bebas berapapun juga. Simpan dan host file js tersebut dan jangan lupa kasih nama dan mengubahnya ke raw menggunakan githack

3. Memasang script khusus safelink di template blogger

Pada langkah ini agar safelinknya bekerja dengan baik kamu harus memasang script khusus safelink pada blog safelink kamu. Adapun kodenya seperti berikut ini:

 <b:if cond='data:view.isPost'>
    <script>
      var timeout,interval
      var threshold = 5000; 
      var secondsleft=threshold;

      window.onload = function(){startschedule();}

      function startChecking(){
        secondsleft-=1000;
        document.querySelector(&quot;.wait&quot;);  
        if(secondsleft == 0) {
          
          clearInterval(interval);
          document.querySelector(&quot;.wait&quot;).style.display=&quot;none&quot;;
          document.querySelector(&quot;.to&quot;).style.display=&quot;&quot;;
        }
      }

      function startschedule(){
        clearInterval(interval);
        secondsleft=threshold;
        document.querySelector(&quot;.wait&quot;);  
        interval = setInterval(function(){ startChecking();},1000)              
      }

      function resetTimer(){
        startschedule();
      }
    </script>
    <div class='wait'>
      <center>
        <span>Tunggu Bentar...</span>
      </center>
    </div>
    <style type='text/css'>.to {text-align: center;}</style>

    <div class='to' style='display: none;'>
      <a href='#download' onclick='generate()'>
        Klik 100x Disini!
      </a>
    </div>
    </b:if>
Kode diatas adalah untuk memunculkan sebuah tombol klik untuk mengelabui Audien agar terjebak untuk mengklik iklan yang kita siapkan pada blog safelink kita. bisa diperhatikan kata "Klik 100x Disini!" itu adalah text dari tag <a> yang dipasang attribut href='#download' yang nantinya ketika di klik tulisan ini maka akan menuju tombol download yang akan kita siapkan pada langkah berikutnya. Oh iya kode link ini bisa kamu modifikasi menggunakan css seperti dibuat mirip dengan tombol.

4. Memasang Script Tombol Safelink di Setiap Postingan

Umumnya yang saya temui di beberapa tutorial safelink adalah menyertakan kodenya berikut ini pada setiap postingan di buat. Tapi berbeda dengan safelink yang saya buat ini yaitu kita menempelkannya agar semua postingan yang dibuat otomatis terpasang kode tombol safelink ini. Artinya kamu tidak perlu lagi menempelkan satu-satu di setiap postingan untuk memanggil tombol next atau go download pada postingan di blog safelink kamu. Caranya seperti berikut ini:
Pertama cari kode berikut ini:

<data:post.body/>
Kode blogger diatas adalah untuk menampilkan konten postingan pada blogger. Nah setelah ketemu barulah kamu simpan kode berikut ini tepat dibawahnya:


 <b:if cond='data:view.isPost'>
    
      <script src='URL-FILE-JS-YANG-DIHOST' type='text/javascript'/>
      <script type='text/javascript'>
        function changeLink() {
          var e = Base64.decode(res);
          window.open(e, &quot;_blank&quot;)
        }
        var currentURL = location.href,
            str = currentURL,
            res = str.replace(&#39;<data:post.url/>&#39; + &#39;?url=&#39;, &quot;&quot;);
                              //<![CDATA[//
                              document.write('<div class="redirect-button-wrapper" style="text-align:center">');
                              document.write('<button target="_self" class="btn-succes redirect" style="display:inline-block; line-height:1.6;padding:10px 24px font-size:16px; border:none; background:red;color:#fff; font-weight:bold;border-radius:3px;"  id="download" onclick="changeLink()">Continue</button>');
                              document.write('</div>');
        onload: generate();
        //]]>//
      </script>
      </b:if>
Pastikan kamu memasukan URL yang di host dengan benar yaitu dengan memasukan link yang sudah di raw menggunakan cdn seperti githack. Dan jika kamu ingin custom tombol downloadnya maka kamu tinggal hapus saja inline style yang saya buat dan atur menggunakan css dan blog safelink pun siap digunakan

5. Memasang Script Pemicu Safelink di Blog Utama

Pada tahapan ini adalah bagaimana cara membuat safelink yang tadi kita buat bisa bekerja dan caranya dengan memasang script berikut sebagai pemicu / autogenerate ke blog safelink yang kita buat tadi. Maka buka blog utama sobat dan buat widget HTML untuk menyimpan kode berikut ini:


<script src='URL-FILE-JS-YANG-DIHOST' type='text/javascript' />
<script type="text/javascript">

protected_links = "facebook.com,twitter.com"; 
auto_safelink();
</script>
protected_links adalah variabel yang berguna untuk mengecualikan link yang tidak akan digenerate menjadi url safelink. kamu bisa menambahkannya seperti pada contohnya diatas.
Nah pada tutorial kali ini safelink harusnya sudah bisa bekerja dengan baik. seperti pada safelink yang kami gunakan di blog code pelajar ini. Yah walaupun temenya acak-acakan tapi safelinknya bisa berjalan dengan baik tanpa kendala. Mau itu di pc ataupun mobile. Namun ada juga bug dimana di versi mobile safelink di blogger tidak bekerja. Ini dikarenakan url blogger pada versi mobile ini menambahkan parameter m=1 sebagai blog yang diakses perangkan mobile. paramater ini tentu saja mengganggu pada script yang ada di langkah ke empat.

Cara FIX Safelink di Mobile View

Untuk mengatasi masalah ini ada script yang saya comot untuk menghilangkan parameter m=1 di url blogger. simpan kode berikut ini tepat di atas tag penutuh head / ≶/head>


<script defer='defer' type='text/javascript'>

var uri = window.location.toString();
if (uri.indexOf("%3D","%3D") > 0) {
  var clean_uri = uri.substring(0, uri.indexOf("%3D"));
    window.history.replaceState({}, document.title, clean_uri);
}
var uri = window.location.toString();
if (uri.indexOf("%3D%3D","%3D%3D") > 0) {
  var clean_uri = uri.substring(0, uri.indexOf("%3D%3D"));
    window.history.replaceState({}, document.title, clean_uri);
}
var uri = window.location.toString();
if (uri.indexOf("&m=1","&m=1") > 0) {
  var clean_uri = uri.substring(0, uri.indexOf("&m=1"));
    window.history.replaceState({}, document.title, clean_uri);
}
var uri = window.location.toString();
if (uri.indexOf("?m=1","?m=1") > 0) {
  var clean_uri = uri.substring(0, uri.indexOf("?m=1"));
    window.history.replaceState({}, document.title, clean_uri);
}
</script>

sumber : https://www.codepelajar.com/2019/01/cara-membuat-safelink-auto-generate.html

Minggu, 09 Desember 2018

Cara agar artikel postingan blog tidak bisa dikopi paste

1. Menggunakan Script CSS 


 a .Silahkan anda masuk ke halaman akun blog anda.

 b. pada bilah menu sebelah kiri pilih menu "Template" kemudian cari dan tekan tombol "Edit HTML"

c. pada editor template tekan tombol CTRL+F untuk melakukan pencarian dan cari block kode "]]></b:skin>", tanpa tanda kutip, kemudian kopi kode CSS berikut, letakan tepat diatas sebelum block kode tersebut:


body{display:block;
-khtml-user-select:none;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
-o-user-select:none;
user-select:none;
unselectable:on;}

Jika anda menerapkan kode diatas, maka seluruh tampilan blog menjadi tidak dapat di seleksi dan tidak dapat dikopi paste itu karena kode diatas kita pasang di TAG body, yang menyebabkan seluruh tampilan halaman tidak dapat diseleksi, tentu saja untuk kasus-kasus tertentu cara diatas kurang efektif, jika anda bermaksud untuk menonaktifkan (unselectable) hanya sebagian area saja maka anda harus pasang kode diatas untuk TAG tertentu yang anda ingin dinonaktifkan.

Namun untuk menerapkannya anda harus mengetahui tag-tag blog anda, untuk mengetahuinya anda bisa menggunakan fasilitas inspeksi element pada browser anda.

 Misalkan, anda ingin menonaktifkan hanya bagian postingan saja menjadi tidak dapat diseleksi, namun jika terdapat Quote didalam postingan harus bisa diseleksi, langkah-langkahnya adalah:

1. Silahkan cari nama TAG HTML untuk struktur postingan anda baik itu ID maupun classnya, misal nama tag id untuk postingan anda adalah <div id='post' ..... sedangkan nama tag id untuk quote postingan anda adalah <div class='my-quote', maka untuk menonaktifkan postingan kecuali quote harus tetap aktif adalah sebagai berikut:

-Agar postingan anda tidak dapat dikopi paste, maka pasang kode diatas untuk tag HTML postingan anda melalui ID tag (id='post'), lihat ilustrasi diatas, kode yang harus anda pasang adalah sebagai berikut:

#post{display:block;
-khtml-user-select:none;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
-o-user-select:none;
user-select:none;
unselectable:on;}
Jika anda hanya memasang kode diatas, maka seluruh area yang ada didalam postingan menjadi tidak bisa dikopi paste, oleh karena itu jika anda menginginkan beberapa bagian didalam area postingan, misalnya quote ingin tetap bisa di seleksi dan di kopi paste, maka anda tambahkan lagi kode dibawah ini:

-Agar Quote yang ada didalam postingan aktif, maka anda harus memasang kode tersebut di TAG HTML untuk Quote, dalam hal ini kita pasang di attribut kelasnya, kode yang harus anda pasang selanjutnya adalah:


#post .my-quote{display:block;
-khtml-user-select:text;
-webkit-user-select:text;
-moz-user-select:text;
-ms-user-select:text;
-o-user-select:text;
user-select:text;
unselectable:off;}
oh ya, kode diatas tentu saja disarankan diletakan sebelu kode </head> dan bungkus kode diatas diantara kode
<style type='text/css'>
---------letakan kode-kode diatas diarea ini--------
</style>


2. Menggunakan Kode JavaScript


 a .Silahkan anda masuk ke halaman akun blog anda.

 b. pada bilah menu sebelah kiri pilih menu "Template" kemudian cari dan tekan tombol "Edit HTML"

c. pada editor template tekan tombol CTRL+F untuk melakukan pencarian dan cari block kode "</head>", tanpa tanda kutip, kemudian gunakan kode javascript berikut, letakan tepat diatas sebelum block kode tersebut:


 <script type="text/javascript"> function disableSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
    target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
    target.style.MozUserSelect="none"
else //All other route (ie: Opera)
    target.onmousedown=function(){return false}
target.style.cursor = "default"
}
</script>

Sekarang anda sudah mengetahui cara menghindari kopi paste dengan kedua cara diatas, lantas mana yang lebih baik, menurut saya pribadi yang lebih baik adalah yang menggunakan kode CSS, kelemahan menggunakan kode Javascript adalah bisa diakali dengan mendisable javascript pada browser, kopi paste akan tetap berjalan, kedua-duanya perlu dicoba, jika perlu gunakan kedua script diatas.

Cara Menonaktifkan Javascript di Browser Mozila dan Chrome


#1. Cara Menonaktifkan Javascript di Mozila Firefox Terbaru

Berikut langkah-langkah untuk menonaktifkan javascript di browser mozila firefox:

1. Aktifkan Browser Mozila Firefox di komputer anda

2. Ketikan perintah about:config pada address bar browser mozila anda kemudian enter, akan terlihat seperti tampilan gambar di bawah ini:


Cara menonaktifkan atau disable/enable javascript di browser mozila

3. Silahkan tekan tombol warna biru yang bertuliskan "Saya berjanji akan herhati-hati" seperti terlihat pada gambar di atas.

Dengan menekan tombol tersebut maka akan ditampilkan halaman utama untuk pengaturan konfirugasi mozila firefox seperti terlihat pada gambar dibawah ini:


fozila firefox configuration list

4.  Lakpencarian silahkan ketikan: "javascript.enabled" untuk menemukan nama pengaturan javascript enabled, akan terlihat seperti gambar dibawah ini:


aktif/nonaktif atau enabled/disabled javascript di mozila.

5. Seperti terlihat pada gambar diatas, silahkan double-click baris data yang bertuliskan javascript enabled hingga untuk Kolom Nilai bertuliskan false, (false artinya javascript nok-aktif, jika bertuliskan true berarti javascript dalam keadaan aktif).

Untuk mengaktifkan javascript kembali, anda tinggal ubah dengan cara double-klik baris data yang bertuliskan javascript.enabled menjadi true.

Sampai langkah diatas anda berarti sudah berhasil menonaktifkan javascript pada browser mozila firefox yang anda gunakan.


#2. Cara Menonaktifkan Javascript di Google Chrome

1. Buka Browser google crome Anda

2. Klik Menu dengan icon garis 3 yang terletak di pojok kanan atas browser google chrome yang anda gunakan, kemudian pilih seting atau pengaturan seperti terlihat pada gambar dibawah ini:



Anda akan disajikan halaman utama pengaturan browser google chrome.

3. Pada halaman pengaturan browser google chrome, silahkan anda scroll ke bagian paling bawah, kemudian anda klik tulisan "Show Advanced Setting", untuk menampilkan pengaturan lanjutan.

4. Kemudian silahkan anda cari  dan  klik tombol Content Settings... seperti terlihat pada gambar dibawah ini:


mengaktifkan javascript di browser google chrome
Maka akan keluar fasilitas pengaturan Content settings.

5. Pada tampilan pengaturan Content Settings.... untuk menonaktifkan atau disable javascript silahkan anda cari dan klik pilihan " Do not allow any site to run javascript." kemudian tekan tombol "Done" untuk selesai. terlihat seperti gambar dibawah ini:


mengaktifkan javascript di browser google chrome

Sampai tahap di atas berarti anda sudah berhasil menonaktifkan javascript pada broser google chrome .

sumber : strukturkode.blogspot.com/2014/12/cara-agar-artikel-blog-tidak-bisa-di-copy-paste.html

Rabu, 18 April 2018

Surat Cinta Untuk Masa Depan

docXfulan - merupakan surat cinta untuk masadepan

adalah sebuah dokumentasi yang di tulis oleh fulan yang mungkin akan terpakai kelak pada suatu hari,

dalam beberapa hal :
- ketika terjadi error
- saat lupa dengan sesuatu yang pernah dilakukan
- catatan beberapa pelajaran
- catatan perjalanan fulan hingga ssekarang
- seperti dokumentasi pada umumnya
- untuk Fulan


minat saya membuat ini setelah membaca ebook yang ditulis owner sekolah koding mas Hilman, yang berjudul hadiah untuk programer, dimna di ebook tersebut terdapat tulisan berikut  :
"Damian Conway pernah bilang “Dokumentasi adalah surat
cinta kamu untuk masa depan”. Yang saya bicarakan disini
bukan dokumentasi dari orang lain. Tapi dokumentasi selama
kamu belajar."
hal inilah yang membuat saya bertujuan membuat blog dokumentasi untuk diri saya sendiri,
salah satu nya adalah pos yang telah anda baca ini ^_^


selamat berekpsperimen ^_^