Help
RSS
API
Feed
Maltego
Contact
Domain > vasculum.de
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2018-09-09
87.253.162.12
(
ClassC
)
2024-09-16
46.243.93.231
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: nginxDate: Mon, 16 Sep 2024 04:46:06 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingLink: http://vasculum.de/wp-json/>; relhttps://api.w.org/Vary: Accept-Encoding !DOCTYPE html>!--if lt IE 7> html classno-js lt-ie9 lt-ie8 lt-ie7 langde-DE> !endif-->!--if IE 7> html classno-js lt-ie9 lt-ie8 langde-DE> !endif-->!--if IE 8> html classno-js lt-ie9 langde-DE> !endif-->!--if gt IE 8>!--> html classno-js langde-DE> !--!endif--> head> meta charsetUTF-8> meta http-equivX-UA-Compatible contentIEedge> meta nameviewport contentwidthdevice-width> link relprofile hrefhttp://gmpg.org/xfn/11> link relpingback hrefhttp://vasculum.de/xmlrpc.php> !--wordpress head--> title>Vasculum | Experimente und Fundstücke /title>meta namerobots contentmax-image-preview:large />link relalternate typeapplication/rss+xml titleVasculum » Feed hrefhttp://vasculum.de/feed/ />link relalternate typeapplication/rss+xml titleVasculum » Kommentar-Feed hrefhttp://vasculum.de/comments/feed/ />script typetext/javascript>/* !CDATA */window._wpemojiSettings {baseUrl:https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/,ext:.png,svgUrl:https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/,svgExt:.svg,source:{concatemoji:http:\/\/vasculum.de\/wp-includes\/js\/wp-emoji-release.min.js?ver6.6.2}};/*! This file is auto-generated */!function(i,n){var o,s,e;function c(e){try{var t{supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var tnew Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return ert})}function u(e,t,n){switch(t){caseflag:return n(e,\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f,\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f)?!1:!n(e,\ud83c\uddfa\ud83c\uddf3,\ud83c\uddfa\u200b\ud83c\uddf3)&&!n(e,\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f,\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f);caseemoji:return!n(e,\ud83d\udc26\u200d\u2b1b,\ud83d\udc26\u200b\u2b1b)}return!1}function f(e,t,n){var rundefined!typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement(canvas),ar.getContext(2d,{willReadFrequently:!0}),o(a.textBaselinetop,a.font600 32px Arial,{});return e.forEach(function(e){oet(a,e,n)}),o}function t(e){var ti.createElement(script);t.srce,t.defer!0,i.head.appendChild(t)}undefined!typeof Promise&&(owpEmojiSettingsSupports,sflag,emoji,n.supports{everything:!0,everythingExceptFlag:!0},enew Promise(function(e){i.addEventListener(DOMContentLoaded,e,{once:!0})}),new Promise(function(t){var nfunction(){try{var eJSON.parse(sessionStorage.getItem(o));if(objecttypeof e&&numbertypeof e.timestamp&&(new Date).valueOf()e.timestamp+604800&&objecttypeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if(undefined!typeof Worker&&undefined!typeof OffscreenCanvas&&undefined!typeof URL&&URL.createObjectURL&&undefined!typeof Blob)try{var epostMessage(+f.toString()+(+JSON.stringify(s),u.toString(),p.toString().join(,)+));,rnew Blob(e,{type:text/javascript}),anew Worker(URL.createObjectURL(r),{name:wpTestEmojiSupports});return void(a.onmessagefunction(e){c(ne.data),a.terminate(),t(n)})}catch(e){}c(nf(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supportstet,n.supports.everythingn.supports.everything&&n.supportst,flag!t&&(n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&n.supportst);n.supports.everythingExceptFlagn.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady!1,n.readyCallbackfunction(){n.DOMReady!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(en.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);/* > *//script>style idwp-emoji-styles-inline-css typetext/css> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; }/style>link relstylesheet idwp-block-library-css hrefhttp://vasculum.de/wp-includes/css/dist/block-library/style.min.css?ver6.6.2 typetext/css mediaall />style idwp-block-library-theme-inline-css typetext/css>.wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em}/style>style idclassic-theme-styles-inline-css typetext/css>/*! This file is auto-generated */.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}/style>style idglobal-styles-inline-css typetext/css>:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}/style>link relstylesheet idbootstrap-style-css hrefhttp://vasculum.de/wp-content/themes/bootstrap-basic/css/bootstrap.min.css?ver3.4.1 typetext/css mediaall />link relstylesheet idbootstrap-theme-style-css hrefhttp://vasculum.de/wp-content/themes/bootstrap-basic/css/bootstrap-theme.min.css?ver3.4.1 typetext/css mediaall />link relstylesheet idfontawesome-style-css hrefhttp://vasculum.de/wp-content/themes/bootstrap-basic/css/font-awesome.min.css?ver4.7.0 typetext/css mediaall />link relstylesheet idmain-style-css hrefhttp://vasculum.de/wp-content/themes/bootstrap-basic/css/main.css?ver1.2.4 typetext/css mediaall />link relstylesheet idbootstrap-basic-style-css hrefhttp://vasculum.de/wp-content/themes/bootstrap-basic/style.css?ver1.2.4 typetext/css mediaall />link relhttps://api.w.org/ hrefhttp://vasculum.de/wp-json/ />link relEditURI typeapplication/rsd+xml titleRSD hrefhttp://vasculum.de/xmlrpc.php?rsd />meta namegenerator contentWordPress 6.6.2 />style typetext/css>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}/style> /head> body classhome blog wp-embed-responsive> !--if lt IE 8> p classancient-browser-alert>You are using an strong>outdated/strong> browser. Please a hrefhttps://browsehappy.com/ target_blank>upgrade your browser/a>./p> !endif--> div classcontainer page-container> header rolebanner> div classrow row-with-vspace site-branding> div classcol-md-6 site-title> h1 classsite-title-heading> a hrefhttp://vasculum.de/ titleVasculum relhome>Vasculum/a> /h1> div classsite-description> small> Experimente und Fundstücke /small> /div> /div> div classcol-md-6 page-header-top-right> div classsr-only> a href#content titleZum Inhalt springen>Zum Inhalt springen/a> /div> /div> /div>!--.site-branding--> div classrow main-navigation> div classcol-md-12> nav classnavbar navbar-default rolenavigation> div classnavbar-header> button typebutton classnavbar-toggle data-togglecollapse data-target.navbar-primary-collapse> span classsr-only>Schalte Navigation/span> span classicon-bar>/span> span classicon-bar>/span> span classicon-bar>/span> /button> /div> div classcollapse navbar-collapse navbar-primary-collapse> div classnav navbar-nav>ul>/li>/ul>/div> /div>!--.navbar-collapse--> /nav> /div> /div>!--.main-navigation--> /header> div idcontent classrow row-with-vspace site-content> div classcol-md-9 content-area idmain-column> main idmain classsite-main rolemain> article idpost-46 classpost-46 post type-post status-publish format-standard hentry category-programmierung> header classentry-header> h1 classentry-title>a hrefhttp://vasculum.de/programmierung/anpassung-des-shopware-6-rule-managers-eine-benutzerdefinierte-regel-zum-ueberpruefen-leerer-kunden-customfields/ relbookmark>Anpassung des Shopware 6 Rule Managers: Eine benutzerdefinierte Regel zum Überprüfen leerer Kunden-CustomFields/a>/h1> div classentry-meta> span classposted-on>Veröffentlicht am a hrefhttp://vasculum.de/programmierung/anpassung-des-shopware-6-rule-managers-eine-benutzerdefinierte-regel-zum-ueberpruefen-leerer-kunden-customfields/ title3:43 pm relbookmark>time classentry-date published datetime2024-07-01T15:43:08+00:00>Juli 1, 2024/time>/a>/span>span classbyline> von span classauthor vcard>a classurl fn n hrefhttp://vasculum.de/author/andreaslang/ titleAlle Beiträge von Andreaslang anzeigen>Andreaslang/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> h2 classwp-block-heading>Einführung/h2>p>Shopware 6 bietet mit dem Rulebuilder flexible Möglichkeiten, Abläufe und Berechtigungen zu steuern, aber manche Regeln sind mit dem Standard nicht abzubilden. Im konkreten Fall geht es darum, ein CustomField, das als Textfeld angelegt wurde daraufhin zu testen, ob es leer ist. Diese Möglichkeit wird von Shopware 6 einfach nicht in Betracht gezogen…br>In diesem Blogpost beschreiben wir, wie eine benutzerdefinierte Regel erstellt werden kann, die prüft, ob ein kundenspezifisches Zusatzfeld leer ist. Diese Regel kann nützlich sein, um dynamische Preisstrategien, Versandregeln oder andere geschäftsrelevante Entscheidungen zu treffen, die auf kundenspezifischen Feldern basieren./p>p>Voraussetzung ist das Shopware Plugin Grundgerüst. Das wird von Shopware selbst hier behandelt: a hrefhttps://developer.shopware.com/docs/guides/plugins/plugins/plugin-base-guide.html>https://developer.shopware.com/docs/guides/plugins/plugins/plugin-base-guide.html/a>/p>h2 classwp-block-heading>Schritt 1: Regel-Klasse erstellen/h2>p>Zuerst erstellen wir eine Regel-Klasse, die die notwendige Logik zur Überprüfung der benutzerdefinierten Felder enthält. Die Regel-Klasse wird im Verzeichnis code><plugin root>/src/Core/Rule//code> gespeichert und sieht wie folgt aus:/p>pre classwp-block-preformatted>code>// <plugin root>/src/Core/Rule/CustomerCustomFieldEmptyRule.phpbr><?php declare(strict_types1);br>br>namespace YourPluginNamespace\Core\Rule;br>br>use Shopware\Core\Framework\Rule\Rule;br>use Shopware\Core\Framework\Rule\RuleScope;br>use Symfony\Component\Validator\Constraints\Type;br>br>class CustomerCustomFieldEmptyRule extends Rulebr>{br> protected string $customFieldName;br>br> public function __construct()br> {br> parent::__construct();br> $this->customFieldName ;br> }br>br> public function getName(): stringbr> {br> return customer_custom_field_empty;br> }br>br> public function match(RuleScope $scope): boolbr> {br> if (!$scope instanceof \Shopware\Core\System\SalesChannel\SalesChannelContext) {br> return false;br> }br>br> $customer $scope->getCustomer();br> if ($customer null) {br> return false;br> }br>br> $customFields $customer->getCustomFields();br> return empty($customFields$this->customFieldName);br> }br>br> public function getConstraints(): arraybr> {br> return br> customFieldName > new Type(string)br> ;br> }br>}br>/code>/pre>p>Diese Klasse definiert die Regel, die prüft, ob das angegebene benutzerdefinierte Feld eines Kunden leer ist./p>h2 classwp-block-heading>Schritt 2: Vue-Komponente für das Admin-Interface/h2>p>Als nächstes erstellen wir eine Vue-Komponente, die das benutzerdefinierte Feld im Admin-Interface zur Auswahl anbietet. Die Komponente wird im Verzeichnis code><plugin root>/src/Resources/app/administration/src/component/sw-condition-customer-custom-field-empty//code> gespeichert./p>h3 classwp-block-heading>JavaScript-Datei/h3>pre classwp-block-preformatted>code>// <plugin root>/src/Resources/app/administration/src/component/sw-condition-customer-custom-field-empty/index.jsbr>import template from ./sw-condition-customer-custom-field-empty.html.twig;br>br>const { Component, Mixin } Shopware;br>const { mapPropertyErrors } Component.getComponentHelper();br>const { Criteria } Shopware.Data;br>br>Component.extend(sw-condition-customer-custom-field-empty, sw-condition-base, {br> template,br>br> inject: repositoryFactory, feature,br>br> mixins: br> Mixin.getByName(sw-inline-snippet),br> ,br>br> data() {br> return {br> customFieldOptions: br> };br> },br>br> computed: {br> customFieldCriteria() {br> const criteria new Criteria(1, 25);br> criteria.addAssociation(customFieldSet);br> criteria.addFilter(Criteria.equals(customFieldSet.relations.entityName, customer));br> criteria.addSorting(Criteria.sort(customFieldSet.name, ASC));br> return criteria;br> },br>br> customFieldName: {br> get() {br> this.ensureValueExist();br> return this.condition.value.customFieldName;br> },br> set(customFieldName) {br> this.ensureValueExist();br> this.condition.value { ...this.condition.value, customFieldName };br> }br> },br>br> ...mapPropertyErrors(condition, br> value.customFieldName,br> ),br>br> currentError() {br> return this.conditionValueCustomFieldNameError;br> },br> },br>br> created() {br> this.loadCustomFieldOptions();br> },br>br> methods: {br> async loadCustomFieldOptions() {br> try {br> const customFieldRepository this.repositoryFactory.create(custom_field);br> const customFields await customFieldRepository.search(this.customFieldCriteria);br> this.customFieldOptions customFields.map(field > ({br> value: field.name,br> label: field.config.labelen-GB || field.namebr> }));br> } catch (error) {br> console.error(Error loading custom field options:, error);br> }br> }br> }br>});br>/code>/pre>h3 classwp-block-heading>HTML-Template/h3>pre classwp-block-preformatted>code>{# <plugin root>/src/Resources/app/administration/src/component/sw-condition-customer-custom-field-empty/sw-condition-customer-custom-field-empty.html.twig #}br><template>br> <sw-single-select v-modelcustomFieldName :optionscustomFieldOptions labelSelect custom field />br></template>br>/code>/pre>p>Diese Komponente lädt die benutzerdefinierten Felder und bietet sie im Admin-Interface zur Auswahl an./p>h2 classwp-block-heading>Schritt 3: Registrierung der Regel/h2>p>Damit Shopware die Regel erkennt, muss sie in der code>services.xml/code> registriert werden:/p>pre classwp-block-preformatted>code><!-- <plugin root>/src/Resources/config/services.xml -->br><services>br> <service idYourPluginNamespace\Core\Rule\CustomerCustomFieldEmptyRule>br> <tag nameshopware.rule.condition />br> </service>br></services>br>/code>/pre>h2 classwp-block-heading>Schritt 4: Cache leeren und Indizes aktualisieren/h2>p>Nach Änderungen an den Plugin-Konfigurationen und Regel-Klassen ist es wichtig, den Cache zu leeren und die Indizes neu aufzubauen:/p>pre classwp-block-preformatted>code>bin/console cache:clearbr>bin/console dal:refresh:indexbr>/code>/pre>h2 classwp-block-heading>Fehlerbehebung und Debugging/h2>p>Um sicherzustellen, dass die Regel in der Storefront korrekt funktioniert, können Debugging-Logs hinzugefügt werden:/p>pre classwp-block-preformatted>code>public function match(RuleScope $scope): boolbr>{br> if (!$scope instanceof \Shopware\Core\System\SalesChannel\SalesChannelContext) {br> return false;br> }br>br> $customer $scope->getCustomer();br> if ($customer null) {br> return false;br> }br>br> $customFields $customer->getCustomFields();br> br> // Debugging-Logbr> file_put_contents(/var/log/shopware_custom_field_rule.log, print_r(br> customFieldName > $this->customFieldName,br> customFields > $customFields,br> isEmpty > empty($customFields$this->customFieldName)br> , true), FILE_APPEND);br>br> return empty($customFields$this->customFieldName);br>}br>/code>/pre>h2 classwp-block-heading>Fazit/h2>p>Die Erstellung einer benutzerdefinierten Regel in Shopware 6 erfordert ein gutes Verständnis der Shopware-Architektur und der Plugin-Entwicklung. Durch die Schritte in diesem Blogpost haben wir eine benutzerdefinierte Regel erstellt, die prüft, ob ein kundenspezifisches Feld leer ist, und diese Regel erfolgreich in das Shopware-Backend integriert./p>h3 classwp-block-heading>Tipps zum Testen und Vertiefung/h3>ul classwp-block-list>li>strong>Regel in verschiedenen Szenarien testen:/strong> Prüfe die Regel mit unterschiedlichen Kundenprofilen und benutzerdefinierten Feldern./li>li>strong>Logs überprüfen:/strong> Nutze die Debugging-Logs, um sicherzustellen, dass die Regel wie erwartet funktioniert./li>li>strong>Weiterführende Dokumentation:/strong> Nutze die Shopware-Dokumentation und Community-Ressourcen, um tiefer in die Themen Plugin-Entwicklung und Rule Manager einzutauchen./li>/ul>p>Mit diesen Schritten und Tipps solltest du in der Lage sein, benutzerdefinierte Regeln in Shopware 6 zu erstellen und anzupassen, um die Funktionalität deines Shops zu erweitern und zu verbessern./p> div classclearfix>/div> /div>!-- .entry-content --> footer classentry-meta> div classentry-meta-category-tag> span classcat-links> span classcategories-icon glyphicon glyphicon-th-list titleGepostet in>/span> a hrefhttp://vasculum.de/category/programmierung/ relcategory tag>Programmierung/a> /span> /div>!--.entry-meta-category-tag--> div classentry-meta-comment-tools> /div>!--.entry-meta-comment-tools--> /footer>!-- .entry-meta -->/article>!-- #post-## -->article idpost-9 classpost-9 post type-post status-publish format-standard hentry category-programmierung tag-craftyjs tag-electron> header classentry-header> h1 classentry-title>a hrefhttp://vasculum.de/programmierung/projekt-spielereien-mit-electron-und-craftyjs/ relbookmark>Projekt: Spielereien mit electron und craftyjs/a>/h1> div classentry-meta> span classposted-on>Veröffentlicht am a hrefhttp://vasculum.de/programmierung/projekt-spielereien-mit-electron-und-craftyjs/ title8:52 pm relbookmark>time classentry-date published datetime2019-03-20T20:52:48+00:00>März 20, 2019/time>time classupdated datetime2019-03-20T20:55:43+00:00>März 20, 2019/time>/a>/span>span classbyline> von span classauthor vcard>a classurl fn n hrefhttp://vasculum.de/author/andreaslang/ titleAlle Beiträge von Andreaslang anzeigen>Andreaslang/a>/span>/span> /div>!-- .entry-meta --> /header>!-- .entry-header --> div classentry-content> p>Javascript ist die Script-Sprache hinter fast allen Webanwendungen und inzwischen durch a hrefhttps://nodejs.org/en/>nodejs/a> auch als Backend-Sprache fest etabliert. a hrefhttps://electronjs.org/>Electron/a> nutzt dieses Tool und ermöglicht es, auf nodejs und chromium basierend mit Javascript Plattform unabhängige Desktop-Anwendungen zu bauen (alle Plattformen auf denen node und chromium laufen). br>Als Grundgerüst nutzt eine Electron Anwendung HTML und CSS zur Darstellung und Javascript für die Programmlogik – also handelt es sich im einfachsten Fall um nichts anderes als eine Webanwendung, gekapselt in eine Desktopanwendung./p>p>Prominentes Beispiel für eine electron Anwendung ist der Editor Atom von gitub, für den das Framework Electron ursprünglich geschaffen wurde. Inzwischen existieren zahlreiche Anwendungen, Beispiele finden sich a hrefhttps://electronjs.org/apps>hier/a>/p>p>In diesem kleinen Tutorial geht es darum, ein einfaches Programm zu erstellen, das als „Sandkasten“ für das Javascript–Spiele–Framework a hrefhttp://craftyjs.com/>craftyjs/a> dient./p>p>Craftyjs ist eine kleine Javascript-Bibliothek, die grundlegende Mechaniken für die Spieleprogrammierung bereitstellt. Die a hrefhttp://craftyjs.com/documentation/>Dokumentation/a> ist überschaubar, ebenso wie die a hrefhttp://craftyjs.com/api/>API/a>, allerdings in manchen Fällen kommt man um Probieren und die Websuche nicht herum, wenn man eine bestimmte Funktion sucht./p>h2 classwp-block-heading>Electron installieren/h2>p>Um electron auf die Festplatte zu bekommen muss nodejs mit npm installiert sein. Unter Ubuntu installiert man die Programme im Terminal über folgenden Befehl:/p>pre classwp-block-preformatted>sudo apt install nodejs npm/pre>p>Damit ist alles bereit um Electron zu direkt installieren. Da wir aber nicht alles von vorne bauen müssen, nutzen wir die von der Projektseite selbst bereitgestellte a hrefhttps://github.com/electron/electron-quick-start>Quick-start/a> Vorlage. Diese lässt sich direkt von Github herunterladen oder besser via git auf die eigene Festplatte clonen./p>p>Sofern git noch nicht installiert ist, holen wir das über diesen Befehl nach:/p>pre classwp-block-preformatted>sudo apt install git/pre>p>Nun kann die Quick-start Vorlage in den Ordner unserer Wahl installiert werden, bei mir unter ~/dev/electron/ über die Anweisung:/p>pre classwp-block-preformatted># Das Quick-Start Repository klonen br>$ git clone https://github.com/electron/electron-quick-start br># Das Repository öffnen br>$ cd electron-quick-start br># Die Abhängigkeiten installieren und ausführen br># hier wird electron installiert und auch gleich ausgeführtbr>$ npm install && npm start/pre>p> Die originalen Anweisungen finden Sie direkt a hrefhttps://electronjs.org/>auf der Electron Startseite./a>/p>p>Das erste Ausführen zeigt in etwa dieses Bild:/p>figure classwp-block-image>img fetchpriorityhigh decodingasync width838 height643 srchttp://vasculum.de/wp-content/uploads/2019/03/image-1.png alt classwp-image-34 srcsethttp://vasculum.de/wp-content/uploads/2019/03/image-1.png 838w, http://vasculum.de/wp-content/uploads/2019/03/image-1-300x230.png 300w, http://vasculum.de/wp-content/uploads/2019/03/image-1-768x589.png 768w sizes(max-width: 838px) 100vw, 838px />/figure>p>Damit läuft unser erstes einfaches Electron Programm./p>p>Hinter dem Menüpunkt „View“ verstecken sich wichtige Werkzeuge: „Refresh“ – damit wird die Anwendung neu geladen und „Toggle Developer Tools“ – darüber erreichen wir die Entwickler Werkzeuge, die in Chromium über F12 zu erreichen sind./p>p>/p> div classclearfix>/div> /div>!-- .entry-content --> footer classentry-meta> div classentry-meta-category-tag> span classcat-links> span classcategories-icon glyphicon glyphicon-th-list titleGepostet in>/span> a hrefhttp://vasculum.de/category/programmierung/ relcategory tag>Programmierung/a> /span> span classtags-links> span classtags-icon glyphicon glyphicon-tags titleTagged>/span> a hrefhttp://vasculum.de/tag/craftyjs/ reltag>Craftyjs/a>, a hrefhttp://vasculum.de/tag/electron/ reltag>electron/a> /span> /div>!--.entry-meta-category-tag--> div classentry-meta-comment-tools> /div>!--.entry-meta-comment-tools--> /footer>!-- .entry-meta -->/article>!-- #post-## --> /main> /div> div classcol-md-3 idsidebar-right> aside idsearch-2 classwidget widget_search>form classsearch-form form rolesearch methodget actionhttp://vasculum.de/> label forform-search-input classsr-only>Suche nach/label> div classinput-group> input idform-search-input classform-control typesearch names value placeholderSuche … titleSuche nach:> span classinput-group-btn> button typesubmit classbtn btn-default>Suchen/button> /span> /div> /form>/aside> aside idrecent-posts-2 classwidget widget_recent_entries> h1 classwidget-title>Neueste Beiträge/h1> ul> li> a hrefhttp://vasculum.de/programmierung/anpassung-des-shopware-6-rule-managers-eine-benutzerdefinierte-regel-zum-ueberpruefen-leerer-kunden-customfields/>Anpassung des Shopware 6 Rule Managers: Eine benutzerdefinierte Regel zum Überprüfen leerer Kunden-CustomFields/a> /li> li> a hrefhttp://vasculum.de/programmierung/projekt-spielereien-mit-electron-und-craftyjs/>Projekt: Spielereien mit electron und craftyjs/a> /li> /ul> /aside>aside idrecent-comments-2 classwidget widget_recent_comments>h1 classwidget-title>Neueste Kommentare/h1>ul idrecentcomments>/ul>/aside>aside idarchives-2 classwidget widget_archive>h1 classwidget-title>Archive/h1> ul> li>a hrefhttp://vasculum.de/2024/07/>Juli 2024/a>/li> li>a hrefhttp://vasculum.de/2019/03/>März 2019/a>/li> /ul> /aside>aside idcategories-2 classwidget widget_categories>h1 classwidget-title>Kategorien/h1> ul> li classcat-item cat-item-2>a hrefhttp://vasculum.de/category/programmierung/>Programmierung/a>/li> /ul> /aside>aside idmeta-2 classwidget widget_meta>h1 classwidget-title>Meta/h1> ul> li>a hrefhttp://vasculum.de/wp-login.php>Anmelden/a>/li> li>a hrefhttp://vasculum.de/feed/>Feed der Einträge/a>/li> li>a hrefhttp://vasculum.de/comments/feed/>Kommentare-Feed/a>/li> li>a hrefhttps://de.wordpress.org/>WordPress.org/a>/li> /ul> /aside> /div> /div>!--.site-content--> footer idsite-footer rolecontentinfo> div idfooter-row classrow site-footer> div classcol-md-6 footer-left> Bereitgestellt von a hrefhttps://wordpress.org relnofollow>WordPress/a> | Theme: a hrefhttps://rundiz.com relnofollow>Bootstrap Basic/a> /div> div classcol-md-6 footer-right text-right> /div> /div> /footer> /div>!--.container page-container--> !--wordpress footer--> script typetext/javascript srchttp://vasculum.de/wp-content/themes/bootstrap-basic/js/vendor/modernizr.min.js?ver3.6.0-20190314 idmodernizr-script-js>/script>!--if lt IE 9>script typetext/javascript srchttp://vasculum.de/wp-content/themes/bootstrap-basic/js/vendor/respond.min.js?ver1.4.2 idrespond-script-js>/script>!endif-->!--if lte IE 9>script typetext/javascript srchttp://vasculum.de/wp-content/themes/bootstrap-basic/js/vendor/html5shiv.min.js?ver3.7.3 idhtml5-shiv-script-js>/script>!endif-->script typetext/javascript srchttp://vasculum.de/wp-includes/js/jquery/jquery.min.js?ver3.7.1 idjquery-core-js>/script>script typetext/javascript srchttp://vasculum.de/wp-includes/js/jquery/jquery-migrate.min.js?ver3.4.1 idjquery-migrate-js>/script>script typetext/javascript srchttp://vasculum.de/wp-content/themes/bootstrap-basic/js/vendor/bootstrap.min.js?ver3.4.1 idbootstrap-script-js>/script>script typetext/javascript srchttp://vasculum.de/wp-content/themes/bootstrap-basic/js/main.js?ver1.2.4 idmain-script-js>/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]