<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WordPress Archives - Freigiebigkeit</title>
	<atom:link href="https://karsten-reincke.de/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>(Fach-) Informatik vom Dorf</description>
	<lastBuildDate>Sat, 10 Jan 2026 09:51:18 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Ein sauberes Cookie-Management — mit bootScore</title>
		<link>https://karsten-reincke.de/sauberes-cookie-management/</link>
					<comments>https://karsten-reincke.de/sauberes-cookie-management/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Tue, 26 Sep 2023 08:41:00 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9979</guid>

					<description><![CDATA[<p>Einen adäquaten Cookie-Dialog einzublenden ist das eine. Ihm eine echte Bedeutung zu geben, das andere. Denn die Abfrage allein reicht nicht. Wir müssen die Antworten unserer Leserinnen auch auswerten. Wir dürfen ausschließlich solche Cookies auf deren Rechnern ablegen, die zu schreiben sie oder das Gesetz uns erlaubt haben. Ein JavaScript-Funktion, die das gewährleistet, implementiert die [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/sauberes-cookie-management/">Ein sauberes Cookie-Management — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Einen adäquaten Cookie-Dialog einzublenden ist das eine. Ihm eine echte Bedeutung zu geben, das andere. Denn die Abfrage allein reicht nicht. Wir müssen die Antworten unserer Leserinnen auch auswerten. Wir dürfen ausschließlich solche Cookies auf deren Rechnern ablegen, die zu schreiben sie oder das Gesetz uns erlaubt haben. Ein JavaScript-Funktion, die das gewährleistet, implementiert die Semantik des Cookie-Dialogs und etabliert ein sauberes Cookie-Management.<span id="more-9979"></span></p>



<p>Das Plugin <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-Cookie-Settings</a> selbst liefert nur die Cookie-Abfrage. <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Wie man die aktiviert</a>, hatte ich bereits beschrieben. Die entsprechende Semantik zu implementieren, sieht <a href="https://bootscore.me/">bootScore</a> als <a href="https://github.com/orgs/bootscore/discussions/559">Aufgabe der jeweiligen Web-Designerin</a>. Hier eine Variante,  die gern allgemein wiederverwendet werden darf:</p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/properly-managed-cookies">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Lade die <a href="https://github.com/js-cookie/js-cookie">JS-Cookie-Bibliothek</a> von z.B. cdnpkg.com herunter und lege sie (entpackt) unter dem Namen   <code>js/js.cookie.min.js</code> in Deinem Child-Theme-Ordner ab.</li>



<li>Erweitere in Deiner Datei <code>functions.php</code> die Funktion  <code>bootscore_child_enqueue_styles()</code> um den Eintrag</li>
</ul>



<pre class="wp-block-code"><code>wp_enqueue_script('js-cookie',get_stylesheet_directory_uri().'/js/js-cookie-min.js',false, '', true););</code></pre>



<ul class="wp-block-list">
<li>Erweitere die Datei <code>js/custom.js</code> Deines Child-Themes so:</li>
</ul>



<pre class="wp-block-code"><code>jQuery(function ($) {

  $(document).ready(function(){
    const bsCookieSettings='bs_cookie_settings';
    const analytics = 'analytics';
    const advertising = 'advertising';
    const analyticDemoCookie='bsAnalyticCookie';
    const advertisingDemoCookie='bsAdvertisingCookie';
    const necessaryDemoCookie='bsNecessaryCookie';
    const demoCookieValue='demo-cookie';

    // alert("adding cookie writing algorithm");
    const bsv=Cookies.get(bsCookieSettings);
    if (bsv) {
      const allowedCookies=JSON.parse(bsv);
      // alert(allowedCookies.level);

      if (allowedCookies.level.includes(analytics)) {
        // alert("writing analytic cookies");
        if (!(Cookies.get(analyticDemoCookie))) { 
          Cookies.set(analyticDemoCookie, demoCookieValue, { expires: 100, path: '/' });
        };
      };
      if (allowedCookies.level.includes(advertising)) { 
        // alert("writing advertising cookies"); 
        if (!(Cookies.get(advertisingDemoCookie))) { 
          Cookies.set(advertisingDemoCookie, demoCookieValue, { expires: 10, path: '/' });
        };
      };
      // alert("writing necessary cookies"); 
      if (!(Cookies.get(necessaryDemoCookie))) { 
        Cookies.set(necessaryDemoCookie, demoCookieValue, { expires: 14, path: '/' });
      };
    };
  });

  // Do your other stuff here

}); // jQuery End</code></pre>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Cookies könnten wir <a href="https://www.w3schools.com/js/js_cookies.asp">mit nativem Javascript setzen</a> und evaluieren. Mit fertigen Bibliotheken geht es einfacher. WordPress bringt <a href="https://wpengine.com/resources/how-to-add-jquery-wordpress-theme/">jQuery bereits mit</a>. Und <em>bootScore </em>hat dies schon aktiviert und uns eine Möglichkeit geschaffen, eigene JavaScript-/JQuery-Funktionen in unser <a href="https://bootscore.me/documentation/bootscore-child/#JavaScript">bootScore-Childtheme</a> einzubauen.</p>



<p>Früher gab es für das Cookie-Management ein echtes <a href="https://plugins.jquery.com/cookie">jQuery-cookie</a> Plugin. Das ist mittlerweile archiviert und in eine von jQuery unabhängige Javascript-Bibliothek <a href="https://github.com/js-cookie/js-cookie">js-cookie</a> überführt worden. Um die zu nutzen, laden wir Datei js-cookie-min.js herunter und legen sie im JavaScript-Ordner unseres Child-Themes ab. Außerdem erweitern wir die Funktion <code>bootscore_child_enqueue_styles()</code> in unser Datei <code>functions.php</code> so, dass die Bibliothek <code>js/js.cookie.min.js</code> auch geladen wird.</p>



<p>Den Algorithmus zur Evaluation der Cookie-Settings implementieren wir danach in der Datei <code>js/custom.js</code>. Er wirkt so:</p>



<ul class="wp-block-list">
<li>Zuerst versuchen wir den vom bs-Cookie-Plugin unter dem Namen <code>bs_cookie_settings</code> abgelegten Cookie zu lesen.</li>



<li>Wenn es ihn noch nicht gibt, hat unsere Leserin der Nutzung von Cookies noch nicht zugestimmt. Also dürfen wir noch keine schreiben.((Übrigens auch die technisch notwendigen nicht. Die dürfen wir zwar von gesetzeswegen ablegen, wir müssen unsere Leserin aber zuvor informieren, dass wir das tun. Und dass wir das getan haben, können wir wiederum anhand des Cookies  <code>bs_cookie_settings</code> ‘belegen’. ))</li>



<li>Sobald unsere Leserin den Cookie-Dialog in welchem Umfang auch immer ‘bestätigt’ hat, legt das bs-Cookie-Plugin den Cookie  <code>bs_cookie_settings</code> ab. Sein Wert enthält ein JSON-Objekt: </li>
</ul>



<pre class="wp-block-code"><code>{  "level": 
    [   "necessary",
        "analytics",
        "advertising"
    ],
    "revision":0,
    "data":null,
    "rfc_cookie":false
}</code></pre>



<ul class="wp-block-list">
<li>Das müssen wir also erst parsen lassen, bevor wir — auf JavaScript-Ebene — auf die Liste der erlaubten Cookie-Gruppen via <code>allowedCookies.level</code> zugreifen und über die Methode <code>includes</code> eines Listenobjektes abfragen können, welche der Cookie-Gruppen <em>necessary</em>, <em>analytics</em> und /oder <em>advertising</em> uns unsere Leserin zu schreiben erlaubt hat.</li>



<li>Und zu jeder zugelassen Gruppen schreiben wir dann die entsprechenden Cookies.((wobei wir uns bei den technisch notwendigen Cookies auf die gesetzliche Erlaubnis berufen.))</li>
</ul>



<p>Und ein letzter Tipp noch: JavaScript erzeugt Seiten dynamisch. Gecacht werden die Ergebnisse. Deshalb müssen wir gelengtlich den Cache löschen, um die Ergebnisse unserer Veränderungen sehen zu können. </p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="http://127.0.0.1/wpd.kr/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="http://127.0.0.1/wpd.kr/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="http://127.0.0.1/wpd.kr/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="http://127.0.0.1/wpd.kr//">Erstellungen</a> einer
  <a href="http://127.0.0.1/wpd.kr/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="http://127.0.0.1/wpd.kr/bilderverzeichnis/">Zweck</a> eines 
  <a href="http://127.0.0.1/wpd.kr/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="http://127.0.0.1/wpd.kr/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="http://127.0.0.1/wpd.kr/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/sauberes-cookie-management/">Ein sauberes Cookie-Management — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/sauberes-cookie-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ein sauberer Cookie-Dialog — mit bootScore</title>
		<link>https://karsten-reincke.de/saubere-cookie-nutzung/</link>
					<comments>https://karsten-reincke.de/saubere-cookie-nutzung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 15 Sep 2023 11:44:35 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9887</guid>

					<description><![CDATA[<p>Wir dürfen Cookies nicht einfach so auf die Festplatte einer Leserin schreiben (lassen). Denn die gehört ihr, nicht uns. Für die Cookies, die technisch notwendig sind, hat sie mit dem Abruf unserer Seite zwar konkludent ihr Einverständnis gegeben. Denn sie wollte unseren Blogbeitrag ja lesen. Die anderen Cookies dürfen wir jedoch nur dann auf ihrem [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Ein sauberer Cookie-Dialog — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.e-recht24.de/tracking-cookies/8451-hinweispflicht-fuer-cookies.html">Wir dürfen Cookies nicht einfach so auf die Festplatte einer Leserin schreiben (lassen)</a>. Denn die gehört ihr, nicht uns. Für die Cookies, die technisch notwendig sind, hat sie mit dem Abruf unserer Seite zwar konkludent ihr Einverständnis gegeben. Denn sie wollte unseren Blogbeitrag ja lesen. Die anderen Cookies dürfen wir jedoch nur dann auf ihrem Rechner speichern, wenn unsere Leserin es uns explizit erlaubt hat. Und bevor sie das tut, muss sie abfragen können, was die Cookies tun. Dazu dient uns ein sauberer Cookie-Dialog.<span id="more-9887"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/properly-used-cookies">en</a> ]</div></div></div></div>



<p>Den brauchen wirt nicht selbst zu entwickeln . Denn <a href="https://bootscore.me/">bootScore</a> liefert uns mit seinem Plugin <a href="https://bootscore.me/#download">bsCookie</a> einen <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">konfigurierbaren Dialog</a> auf der Höhe der Zeit:</p>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Lade <a href="https://bootscore.me/#download">bsCookie</a> herunter.</li>



<li>Installiere die Zip-Datei über das Plugin-Management Deines WordPress-Backends.</li>



<li>Ermittle die Cookies, die Du auf dem Rechner Deiner Leserin installieren willst.((Wir müssen dabei bedenken, dass auch unsere Plugins Cookies ablegen lassen können. Es reicht also nicht, nur nach den entsprechenden JavaScript-Befehlen in unseren eigenen Posts und Pages zu suchen.))</li>



<li>Ordne jeden dieser Cookies der Gruppe ’<em>necessary</em>’((Cookies, die wir dieser Gruppe zuordnen, werden zuletzt auch ohne explizite Zustimmung auf der Festplatte unserer Leserin abgelegt, eben weil sie technisch notwendig sind. So müssen wir notfalls auch beweisen können, dass diese Cookies tatsächlich technisch notwendig sind.)), ‘<em>advertising</em>’ oder ‘<em>analytics</em>’ zu.</li>



<li>Ziehe im Dialog ‘Appearance/Widgets’ ein Widget ‘Customer HTML’ in die Widget-Gruppe <em>Footer‑4</em></li>



<li>Trage dort die Scriptzeilen ein, wie sie die <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bsCookie-Dokumentation</a> offeriert.</li>



<li>Erzeuge für jedes Deiner Plugins in der entsprechenden Sektion einen Eintrag.</li>



<li>Verlinke Deine Datenschutzseite in den Dialog, indem Du <em>#yourprivacypolicy</em> entsprechend ersetzt.</li>



<li>Übersetze die Texte in die Sprache Deiner Site (bzw. erzeuge einen zusätzlichen Eintrag gemäß Deiner Mehrsprachigkeitsstrategie)</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Das Schreiben der Cookies über einen Dialog erlauben zu lassen, ist nur die eine Seite der Medaille. Denn Cookies können auch (personen-bezogene) (Wiedererkennungs-) Daten speichern, die auf Serverseite akkumuliert und an externe Stellen weitergereicht werden. Deshalb müssen wir solche Cookies außerdem in unserem <a href="https://karsten-reincke.de/datenschutz/">Datenschutzkonzept</a> erwähnen. Damit unsere Leserin dies auch direkt aus dem Cookie-Zustimmugsdialog heraus ausrufen kann, bietet der <em>bsCookie</em>-Dialogtext einen Link, dessen Wert <em>#yourprivacypolice</em> wir entsprechend (um)setzen dürfen.</p>



<p>Es ist mittlerweile gute Tradition, Cookies funktionsbezogen zu gruppieren und für die Gruppen als solche zu fragen, ob die ihr zugeordneten Cookies lokal abgelegt werden dürfen. Rechtlich notwendig ist so ein Clustern nicht. Wir könnten unsere Leserin die Nutzung von Cookies auch ganz generell erlauben oder ablehnen lassen.((Eine stärkere Granularität liegt aber in unserem Interesse. Denn möchte eine Leserin das eine nicht — z.B. Advertising -, könnte sie das andere — z.B. Analytics — immer noch erlauben. Damit würden wir wenigstens noch einen Teil dessen erfahren, was wir insgesamt zu erfahren hofften.)) Oder wir könnten  jeden einzelnen Cookie an- oder abwählbar machen — und den Dialog damit überfrachten.</p>



<p>Wie dem auch sei: Erstmal müssen wir natürlich wissen, welche Cookies unsere Site schreibt und was diese tatsächlich tun. Welche es sind, können wir uns über die Browser anzeigen lassen. Etwa mittels seines ‘Privacy and Security’-Dialoges. Oder mit Hilfe eines Browser-Plugins((z.B. mit dem <a href="https://cookie-editor.cgagnier.ca/">Cookie Editor</a>)), das direkt für jede aufgerufene Site/Seite anzeigt, welche Cookies von ihr geschrieben worden sind. Was unsere Cookies tun, müssen wir dagegen gesondert ermitteln.</p>



<p>Haben wir diese Cookies dann funktional sortiert, brauchen wir im bsCookie-Dialog nur noch die entsprechenden Gruppen als Sektionen anzulegen und in diese für jedes zugehörige Cookie einen Eintrag zu erzeugen. Für die drei gängigen Gruppen ’necessary’, ‘advertising’ und ‘analytics’ bringt <em>bsCookie</em> die nötigen Codegruppen immer schon mit. Hier reicht es mithin, die Cookies in und mit den Einzeleinträgen zu beschreiben. Gesetzt, wir wollten die drei Cookies <em>bsNec­es­saryCook­ie</em>, <em>bsAdver­tis­ing­Cook­ie</em>, und <em>bsAnal­iz­ing­BCook­ie</em> gesetzeskonform ablegen lassen, müsste der Code für den <em>bsCookie-Dialog</em> so aussehen:</p>



<pre class="wp-block-code"><code>&lt;script&gt;
  // Init
  window.addEventListener('load', function () {

    // obtain plugin
    var cc = initCookieConsent();

    // run plugin with your configuration
    cc.run({
      current_lang: 'de',
      autoclear_cookies: true,
      page_scripts: true,

      languages: {
        'de': {
          consent_modal: {
            title: 'Cookie-Zumstimmung:',
            description: 'Wir nutzen Cookies, um Deine Entscheidungen bei zukünftigen Besuche wiederzuverwenden. Wenn Du auf "Alle akzeptieren" klickst, dürfen wir alle Cookies verwenden, die technisch notwendigen und die funktionell hilfreichen. Wenn Du auf "nur notwendige" klickst, untersagst Du uns, die  funktionell hilfreichen Cookies zu verwenden. Eine feinere Auswahl bieten Dir unsere expliziten &lt;a data-bs-toggle="modal" href="#bs-cookie-modal"&gt;Cookie-Einstellungen&lt;/a&gt;.',
            primary_btn: {
              text: 'alle akzeptieren',
              role: 'accept_all'
            },
            secondary_btn: {
              text: 'nur notwendige',
              role: 'accept_necessary'
            }
          },

          settings_modal: {
            title: 'Cookie-Einstellungen',
            save_settings_btn: 'Auswahl sichern',
            accept_all_btn: 'alle akzeptieren',
            reject_all_btn: 'nur notwendige',
            close_btn_label: 'schließen',
            cookie_table_headers: [
              { col1: 'Name' },
              { col2: 'Domain' },
              { col3: 'Verfall' },
              { col4: 'Beschreibung' }
            ],
            blocks: [
              {
                title: 'Cookie-Nutzung',
                description: 
'Wir verwenden Cookies, um zentrale Funktionen unserer Website bereitzustellen und Dein Leseerlebnis zu verbessern. Du kannst für jede Cookie-Gruppe entscheiden, ob Du sie zulässt oder nicht. Weitere Einzelheiten zu Cookies und anderen sensiblen Daten findest Du in unserem &lt;a href="http://karsten-reincke.de/datenschutz"&gt;Datenschutzkonzept&lt;/a&gt;.'
              }, {
                title: 'Notwendige',
                description: 
'Diese Cookies sind essentiell für unsere Website. Ohne sie würde die Site nicht richtig funktionieren.',
                toggle: {
                  value: 'necessary',
                  enabled: true,
                  readonly: true          // cookie categories with readonly=true are all treated as "necessary cookies"
                },
                cookie_table: [
                  {
                    col1: 'bs_cookie_settings',
                    col2: 'bootScore.me',
                    col3: 'wird gelöscht wenn Deine Session beendet wird',
                    col4: 
'Darin speichert bootScore bzw. das Plugin "bsCookies" Deine Cookie-Einstellungen',
                    is_regex: false
                  },
                  {
                    col1: 'bsNec­es­saryCook­ie', 
                    col2: 'http://karsten-reincke.de/',
                    col3: 'nach 100 Tagen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  },                 
                ]
              }, {
                title: 'Analytics',
                description: 
'Diese Art der Cookies erlaubt es uns, Deine Entscheidungen beim nächsten Mal wiederzuverwenden.',
                toggle: {
                  value: 'analytics',     // your cookie category
                  enabled: false,
                  readonly: false
                },
                cookie_table: [           // list of all expected cookies
                  {
                    col1: 'bsAnal­iz­ing­Cook­ie',         
                    col2: 'http://karsten-reincke.de/',
                    col3: 'nach 10 Tagen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  }
                ]
              }, {
                title: 'Advertising',
                description: 
'Solche Cookies vermerken, wie Du unsere Website verwendest, welche Seiten Du besuchts und welche Links Du anklickst. Alle Informationen sind anonymiziert und können nicht benutzt werden, um Dich zu identifizieren.',
                toggle: {
                  value: 'advertising',
                  enabled: false,
                  readonly: false
                },
                cookie_table: [             // list of all expected cookies
                  {
                    col1: 'bsAdver­tis­ing­Cook­ie',
                    col2: 'http://karsten-reincke.de/',
                    col3: '2 Wochen',
                    col4: 'Demo-Cookie für "pimp your BootScore"',
                    is_regex: false
                  }
                ]
              }, {
                title: 'Weitere Informationen',
                description: 
'Bei weiteren Fragen zu unserem Daten-Management, kontaktiere &lt;a href="http://karsten-reincke.de/impressum"&gt;uns&lt;/a&gt; einfach.',
              },

            ]
          }

        }
      }

    });
  });
&lt;/script&gt;</code></pre>



<p>Die Informationen in den Cookie-Zustimmungsdialogs einzubauen, ist das eine. Seinen Code zu aktivieren, das andere. Den angepassten <em><a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-cookie-settings</a></em>-JavaScript-Code tragen wir dazu in ein <em>Custom-HTML-Element</em> ein, das wir dem Widget <em>Footer 4</em> hinzugefügt haben. Prinzipiell könnten wir das <em>Custom-HTML-Element</em> auch in andere Widgets einbetten. <em>bsCookie</em> schlägt <em>Footer 4</em> vor, weil der JavaScript-Code so eher am Ende einer Seite eingebettet und damit direkt ausgeführt wird. Wie auch immer, der Cookie-Zustimmungsdialog wird dann beim Aufruf all der Seiten angezeigt, deren Templates den <em>Footer 4</em> verwenden. Das Problem der ‘Deep-Links’((Es reicht nicht aus, nur unsere Einstiegsseite den Zustimmungsdialog anzeigen zu lassen. Denn gelegentlich reichen unsere Leserinnen auch Links auf tiefer eingebettete Seiten herum. Unsere Site muss auch in deisen Fällen erst um Erlaubnis bitten, bevor sie die Cookies ablegt.)) ist also gelöst, wenn jede Seite ein Template verwendet, das den entsprechenden JavaScript-Code enthält.</p>



<p>Blieben uns noch drei letzte Aufgaben:</p>



<ul class="wp-block-list">
<li>Zum ersten werden wir unseren Zustimmungsdialog oft auch sprachlich anpassen wollen. Auch das geht über die ‘Umprogrammierung’ des erwähnten JavaScript-Codes.</li>



<li>Über <a href="https://karsten-reincke.de/farbkonzept/">das funktionalen Farbkonzept von Bootscore/bootStrap</a> ist der Cookie-Dialog auf ‘Warning’ eingestellt. Wer ihn dennoch anders gestalten will, kann das in ihrer Datei <code>_bscore_custom.scss</code> so tun: <pre class="wp-block-code"><code>// design the bsCookie-Dialog<br>#c-inr {<br>  border-color: darkblue;<br>  border-width: 2px;<br>  border-style: solid;<br>  background-color: #eef;<br>  color: blue($color: #000000);<br>  padding: 5px;<br>}<br><br>#c-p-bn {<br>  border-color: darkblue;<br>}<br><br>#c-s-bn {<br>  border-color: darkblue;<br>}<br></code></pre></li>



<li>Zum dritten müssen wir die <a href="https://karsten-reincke.de/ein-sauberes-cookiemanagement-mit-bootscore/">Semantik des Cookie-Zustimmungsdialoges implementieren</a>. Wenn wir mehr als nur reden wollen, müssen wir unseren ‘Schreibe-Cookie-JavaScript-Code’ so anlegen, dass er ohne Zustimmung nur die technischen notwendigen Cookies schreibt und dass er ansonsten nur die Cookies aus den Gruppen ablegt, für die eine Zustimmung vorliegt.</li>
</ul>



<p>Diesen letzten Punkt werde ich <a href="https://karsten-reincke.de/ein-sauberes-cookiemanagement-mit-bootscore/">in einem gesonderten Post aufgreifen</a> …</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="http://127.0.0.1/wpd.kr/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="http://127.0.0.1/wpd.kr/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="http://127.0.0.1/wpd.kr/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="http://127.0.0.1/wpd.kr//">Erstellungen</a> einer
  <a href="http://127.0.0.1/wpd.kr/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="http://127.0.0.1/wpd.kr/bilderverzeichnis/">Zweck</a> eines 
  <a href="http://127.0.0.1/wpd.kr/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="http://127.0.0.1/wpd.kr/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="http://127.0.0.1/wpd.kr/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Ein sauberer Cookie-Dialog — mit bootScore</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/saubere-cookie-nutzung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mein ‘googlierter’ Schreibstil</title>
		<link>https://karsten-reincke.de/schreibgestaltung/</link>
					<comments>https://karsten-reincke.de/schreibgestaltung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 26 Aug 2023 16:20:00 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9821</guid>

					<description><![CDATA[<p>Beim letzten Mal tat’s nicht mehr weh: Binnen zweier Tage war mein Post über meinen ‘Reset’ wegen mangelnder ‘Innere Verlinkung’ und über den ‘richtigen Weg, gecrawlt und indexiert zu werden’ von Google verarbeitet worden. Wieder hatte ich ihn YOAST-gemäß gestaltet. Und damit auch Googles ‘unausgesprochenen’ Vorgaben berücksichtigt. Denn das ist ja der Anspruch von YOAST. [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/schreibgestaltung/">Mein ‘googlierter’ Schreibstil</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Beim letzten Mal tat’s nicht mehr weh: Binnen zweier Tage war mein Post über meinen ‘Reset’ wegen mangelnder ‘Innere Verlinkung’ und über den ‘richtigen Weg, gecrawlt und indexiert zu werden’ von Google verarbeitet worden. Wieder hatte ich ihn YOAST-gemäß gestaltet. Und damit auch Googles ‘unausgesprochenen’ Vorgaben berücksichtigt. Denn das ist ja der Anspruch von YOAST. Allerdings bin ich damit auch eingeknickt vor der stilistischen Übermacht von Google und YOAST:<span id="more-9821"></span></p>



<p>Um die Konsequenzen ihres Diktats zu verstehen, hier zuerst noch einmal meine aus dem YOAST-Angebot extrahierten 11 Gebote, mit deren Umsetzung ich YOAST bisher stets grüne Ampeln abringen konnte, eine für ‘SEO’ und eine für die Lesbarkeit. Unnötig zu erwähnen, dass ich di so aufbereiteten Seiten Google habe erfolgreich zum Indexieren((als Einzellinks via Search-Konsole, nicht per Sitemap allein)) übergeben können.</p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/writing-style">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Definiere Dir eine Key-Phrase, die das Topik Deiner Seite((Der <em><a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">wolf-of-seo</a></em> sagt, dass die Key-Phrase nicht erfassen sollte, worum es in Deinem Beitrag gehe, sondern wofür er perfekt sei. Wendet man jedoch die Regeln 2 und 3 an, schrumpft der Unterschied zwischen diesen Standpunkten erheblich.)) wiedergibt.((Achtung: 2 Wörter, allenfalls drei. Denn diese Key-Phrase muss in dieser Form an den Anfang des Titels passen und auch in den Fließtext eingebunden werden können. Vertraue nicht darauf, dass YOAST die syntaktischen Feinheiten der deutschen Sprache analysieren kann — auch wenn es das zu tun verspricht.))</li>



<li>Setze die Key-Phrase((so, wie definiert)) an den Anfang Deines Seitentitels.((Wenn Du den so entstehenden slug’ Deiner Seite verkürzt, bleibe in Deiner URL wenigstens bei sprechende Syntagmen.))</li>



<li>Integriere diese Key-Phrase((so, wie definiert)) in den ersten Absatz Deiner Seite.</li>



<li>Baue die Key-Phrase((möglichst so, wie definiert)) in die mindestens 120 und höchstens 156 Zeichen lange Meta-Description Deiner Seite ein.</li>



<li>Verlinke Deine Seite auf andere Seiten Deines Blogs zu dem Thema.</li>



<li>Verlinke Deine Seite auf fremde Seiten zu dem Thema.</li>



<li>Schreibe nur wenig Sätze mit mehr als 25 Wörtern.</li>



<li>Nutze (logische) Konjunktionen, um (kurze) (Haupt)Sätze miteinander zu verknüpfen.</li>



<li>Lasse Deine Absätze nicht über 150 Wörter ‘anschwellen’, bleib aber auf jeden Fall unter 200.</li>



<li>Nutze nur wenig Passivkonstruktionen, mache aktive Aussagen.</li>



<li>Beantrage in der Search-Konsole für Deine neue Seite explizit, dass Google sie indexiert((Verlass Dich nicht nur auf Deine aktualisierte Sitmap.))</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Eins gleich vorab: Wem jetzt schon schwant, dass dieser Post diesen Geboten nicht so richtig folgt, dem sei gleich gesagt: Yeep. Absichtlich. Testen wir doch einfach mal, was passiert, wenn wir unsere Posts nicht dem vereinheitlichenden Diktat von Google und YOAST unterwerfen.</p>



<p>Aus diesen ‘Empfehlungen’ ergibt sich nämlich ein anderer Schreibstil, als er Dir und mir (gelegentlich) vorschwebt. Dass passive Satzkonstruktionen schwieriger zu verstehen sind und damit mehr Lese<strong>arbeit</strong> erfordern, ist nachvollziehbar.((Wer’s nicht glaubt’, mag sich bewusst durch diesen absichtlich passivierten Absatz ‘quälen’)) Dass unser Lese(er)leben durch kurze Sätze erleichtert wird, ebenso. Werden wir von den Suchmaschinen gezwungen, so zu schreiben, tun sie unseren Leserinnen etwas Gutes. Auch wenn wir über die Drohung, unsere Texte würden nicht indexiert, ’sanft’ vom akademischen Schreibstil weggebracht werden. </p>



<p>Dies ärgert mich also nicht. Die Sache mit der Key-Phrase aber schon. Denn die verhindert, dass ich mit einem nur andeutenden Titel Leselust wecken und seine konkrete Bedeutung und seinen Kontext erst aus den ersten Sätzen erwachsen lassen kann. Freie Fahrt den Assoziationen — damit arbeite ich gern. Eigentlich. Darf es aber nicht, wenn ich die Gebote befolgen will. Ein Beispiel: Früher hatte ich meinen Artikel ‘Wolken und Listen — Zwei auf einen Streich!’ nur ‘Zwei auf einen Streich’ betitelt — und damit sogar ein wenig assoziative Nähe zum ‘tapferen Schneiderlein’ hergestellt.((Auch wenn mir das jetzt, wo ich das Märchen noch einmal ganz gelesen habe, selbst etwas unangenehm aufstößt. Es ist schon ein arger Blender, das kleine Schneiderlein, nicht nur ein Schlitzohr. Eigentlich kein Kontext, in den ich mich eingeordnet wehen möchte.)) Nur <em>Zwei auf einen Streich</em>, das ist ein eleganter Titel. Ihm die Key-Phrase ‘Wolken und Listen’ voranzustellen, nimmt dem Titel den Witz und macht ihn sperrig. Und spätestens, wenn wir die Key-Phrase im ersten Absatz noch einmal wiederholen, werden wir zu aufdringlichen Plapperinnen — nur um unsere grünen YOAST-Ampeln zu bekommen, will sagen: um indexiert zu werden.</p>



<p>Als ein aus SEO Sicht gutes Beispiel mag die Seite <a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">https://wolf-of-seo.de/was-ist/fokus-keyphrase/</a> betrachtet werden. Hier wird die Key-Phrase <em>Fokus Keyword</em> an den Anfang des Titels gestellt und gleich noch einmal im ersten, sehr kurzen Absatz wiederholt — zusammen mit ihrem Zwilling <em>Fokus Keyphrase</em>. Und in den ersten 6 Sätzen((was hier gleichbedeutend ist mit: in den ersten 6 Absätzen)) kommen die dann mehr als 10 ‘mal vor. Der ‘wolf of seo’ wird keine Schwierigkeit gehabt haben, seine Seite indexiert zu bekommen. Und mehr noch: inhaltlich ist dieser Artikel richtig gut! Nur stilistisch — stilistisch ist er grottig. Lest ihn einfach mal langsam, und Euch fällt dieses redundante Wortgeklingel sicher auch auf. Das Ärgerliche an dem Diktat einer guten SEOzität ist, dass wir offensichtlich so schreiben müssen, wenn wir indexiert werden wollen. Denn nur das, was indexiert ist, kann ja überhaupt gefunden und gerankt werden.</p>



<p>Habt Ihr den ’seo-wölfischen’ Text langsam gelesen, lest auch meinen Artikel so. Und es wird Euch direkt auffallen, dass er noch viel grottiger ist, als jener. Ich habe hier nämlich absichtlich viele der o.a. Gebote verletzt:</p>



<ul class="wp-block-list">
<li>Meine Key-Phrase ‘StilXpolizei’ kommt weder im Titel noch im ersten Absatz oder sonst wo vor, also auch nicht im slug.((Ich kann das Wort nicht riochtig schreiben, sonst meint YOAST: ”The keyphrase was found 1 time. That’s less than the recommended minimum of 3 times for a text of this length.”))</li>



<li>Ich habe eine ‘Metadescription’ eingebaut, die absichtlich zu kurz ist und am Thema vorbeigeht.((Einfach mal den Sourcecode ansehen.))</li>



<li>Dieser Post verwendet zwar Links nach extern, aber keine auf andere Seiten meiner Site.</li>



<li>Mein Text verwendet zu viele Passivkonstruktionen((“15% of the sentences contain passive voice”)) und hat einen zu langen Absatz.((“1 of the paragraphs contains more than the recommended maximum of 150 words.”))</li>
</ul>



<p>So bekomme ich für diesen Post eine orange YOAST-Ampel in Sachen SEO und eine rote in Sachen Lesbarkeit. </p>



<p>Damit können wir jetzt einfach mal testen, wie lange Google braucht, um diesen Artikel zu indexieren.((Um nicht Birnen mit Äpfeln zu vergleichen, werde ich Google zuerst nur über die Sitemap von dem neuen Post informieren. Und erst nach ein paar Monaten beantrage ich bei Google die Indexierung dieses Posts auch manuell.)) Sobald er im Index aufgenommen worden ist, sage ich Euch hier Bescheid. Ihr könnt es aber auch selbst testen. Sucht einfach nach SEOzität. Das Wort gibt es nämlich (bisher) nur in diesem Artikel.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<ul class="wp-block-list">
<li>Sitemap aktualisiert: 2023-08-27 / evaluiert: 2023-08-28 </li>



<li>Post gefunden: 2023-08-28 / gecrawlt: 2023-08-28  / indexiert: 2023-08-28  </li>
</ul>



<p>Erstaunlich. So schnell. Ohne manuelle Bitte um Indexierung, ohne innere Verlinkung.  Und das englische Pendant ist am 30.08. immer noch nicht gefunden, gecrawlt</p>



<hr class="wp-block-separator has-alpha-channel-opacity">
<p>The post <a href="https://karsten-reincke.de/schreibgestaltung/">Mein ‘googlierter’ Schreibstil</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/schreibgestaltung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Innere Verlinkung — ein Reset</title>
		<link>https://karsten-reincke.de/innere-verlinkung/</link>
					<comments>https://karsten-reincke.de/innere-verlinkung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 23 Aug 2023 09:40:21 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=9769</guid>

					<description><![CDATA[<p>Zweimal hatte ich bereits über ‘SEO’ geschrieben. Alles halb so schlimm, hatte ich gemeint. bootScore zeichne seine Seiten dankenswerterweise ja von Haus aus mit semantischen HTML-Tags aus. Es reiche also, die eigene Sitemap bei Google &#38; Co einzureichen. Die darin erfassten Seiten noch mit Keywords anzureichern, sei nicht nötig, wenn nicht gar schädlich. Denn das [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/innere-verlinkung/">Innere Verlinkung — ein Reset</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Zweimal hatte ich bereits über ‘SEO’ geschrieben. Alles halb so schlimm, hatte ich gemeint. <a href="https://bootscore.me/">bootScore</a> zeichne seine Seiten dankenswerterweise ja <a href="https://karsten-reincke.de/bootscore-plus-seo/">von Haus aus mit semantischen HTML-Tags</a> aus. Es reiche also, die eigene Sitemap bei Google &amp; Co einzureichen. Die darin erfassten Seiten noch mit Keywords anzureichern, sei nicht nötig, wenn nicht gar schädlich. Denn das lege ja eh nur einen zweiten Text hinter den eigentlichen. Sei dieser inhaltlich gut, reiche das. Dachte ich. Und meinte, die innere Verlinkung gar nicht ansprechen zu müssen. Selten hat mich Google auf peinlichere Weise eines Besseren belehrt:<span id="more-9769"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/internal-linking">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Ersetze alle schematischen Slugs durch sprechende.</li>



<li>Verlinke jeden Post und jede Seite mit allen anderen internen verwandten Posts oder Seiten.</li>



<li>Installiere <a href="https://yoast.com/wordpress/plugins/seo/">YoastSEO</a>.</li>



<li>Setze so viele seiner Verbesserungsvorschläge um, dass seine Ampeln auf grün springen.</li>



<li>Beantrage bei Google für jede Seite und jeden Post gesondert die Indexierung.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>


<div class="wp-block-image"><figure class="alignleft size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-problem-900x1100-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-problem-900x1100-1-245x300.png" alt="Google Search Console Problem" width="300"></a></figure></div>



<p>Was hatte mich zu dieser Einsicht getrieben? Nach der Anmeldung meiner Sitemap irgendwann im April hatte Google in 3 Monaten nur 6 meiner 109 Seiten indexiert. Über deren Qualität hatte es nicht gemeckert. Nur schlicht verkündet, dass es 81 Seiten oder Posts zwar gefunden und 17 zwar gecrawlt, aber nicht indexiert habe. Offensichtlich hielt Google meine Texte des Indexierens nicht für würdig. Trotz meines an sich ja interessanten Themas ‘bootScore’. Und trotz der ja immerhin so relevanten Artikel, dass sie das Projekt ‘bootScore’ zu Verbesserungen angeregt hatten. Über ein gutes Ranking brauchte ich also vorerst nicht nachzudenken. Ich musste mich ‘findbar’ machen.</p>



<p>Es hat mich eine Weile gekostet, zu verstehen, was passiert war. Und noch eine größere, es zu bereinigen:</p>



<p>Mit meiner Migration nach bootScore wollte ich auch meine Site verdichten. Sie leserinnen-freundlicher gestalten. Ihr die Redundanz austreiben. Weniger Schnick-Schnack sollte sie enthalten. Darum hatte ich meine thematischen Cluster sauber auf Kategorien und Tags abgebildet und denen meine Texte zugeordnet. Denn bootScore bot ja von Haus aus auf jeder Seite an, sich für jedes Schlagwort die zugehörigen Artikel anzeigen zu lassen. Warum also sollte ich in den einzelnen Seiten/Posts zusätzlich auf thematische verwandte Seiten/Posts verweisen? Warum händisch Seiten und Posts verlinken? Zu viel Schnick! Und warum sollte ich in mein Menü einzelne Seiten oder Posts einhängen? Zu viel Schnack! Ein Leitsystem aus den Kategorien und Tags sollte reichen. Damit hätten meine Leserinnen immer auf die zu diesem Thema auch relevanten Artikel zugreifen können. Eine zusätzliche ‘innere Verlinkung’ im Text, das wäre doch redundant. Dachte ich.</p>



<p>Genau das aber sieht Google anders! Seiten, auf die nicht einmal andere eigene Seiten verlinken, sind doch offensichtlich nicht einmal der Autorin wichtig. Sonst würde sie doch ihre Leserinnen dahinführen wollen. Warum also sollte Google sie indexieren? Darauf hatten meine Lehrbücher immer schon hingewiesen.((Pars pro toto: vgl. Czysch, Stephan: SEO mit Google Search Console, 2. Aufl., Heidelberg 2017, S. 168ff)) Mein Fehler, es zu ignorieren.</p>



<p>Wie der Fehler, meine Beiträge mit nichtssagenden ‘Slugs’ zu gruppieren. Wenn ich — zum Beispiel — ein Cluster ‘image’ benutzte, dachte ich, ich könnte meine Beiträge ‘image‑a’ , … ‘image‑i’. So hatte ich die gleichen Seitennamen auf der deutschen und der englischen Site. An sich keine schlechte Idee. Nur veranlasste da Google dazu, die Beiträge für unwichtig zu halten.((pars pro toto: vgl. Dziki, Julian: Suchmaschinenoptomierung für dummies, 2. Aufl., Weinheim 2021, S. 62)) Sie waren mir ja nicht mal einer Botschaft wert.</p>



<p>Nachdem ich diese Nebeneffekte verstanden hatte, überarbeitete ich alles. Ich ersetzte die symbolischen Seitennamen durch sprechende. Ich installierte YoastSeo und setzte so viele seiner Maßnahmen zu den Themen ‘SEO’ und ‘Lesbarkeit’ um, dass die entsprechenden Ampeln von rot auf grün wechselten. Oder zumindest auf gelb. Alles in allem eine sehr zeitaufwendige Arbeit.</p>



<p>Trotzdem fehlte damit noch die innere Verknüpfung. So schrieb ich für jedes Themencluster eine Zusammenfassung und verlinkte deren Wörter mit den verwandten Beiträgen und Seiten. Und da ich diese Zusammenfassungen in Zukunft absehbar häufiger würde aktualisieren müssen, erleichterte ich mir diese Tipparbeit, indem ich je Zusammenfassungen als ShortCodes implementierte. Jetzt reichte eine einfache Zeichenkette am Ende eines jedes Beitrags und er wäre intern passend verlinkt.</p>


<div class="wp-block-image"><figure class="alignright size-medium is-resized is-style-default "><a href="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-success-900x1100-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/08/search-console-success-900x1100-1-245x300.png" alt="Google Search Console Success" width="300"></a></figure></div>



<p>Den wirklichen Durchbruch in Sachen Indexierung erlebte ich aber erst, als ich jeden Post und jede Seite einzeln und händisch in der Google-Search-Konsole zur Indexierung angemeldet hatte — was auch hieß, jedes Mal zeitaufwendig die Indexierbarkeit überprüfen zu lassen. Heute hat Google von meinen 74 Artikeln und 18 Seiten meiner deutschen Site 84 indexiert. Und was nicht indexiert ist, muss — aus Leserinnensicht — nicht über Google gefunden werden. Wie z.B. meine Datenschutzseite oder der Bildernacheweis. Auf meiner englischen Site sieht es sogar noch besser aus: von den 53 Post und 15 Seiten sind 114 indexiert — was nur besagt, dass auch noch veraltete Links im Index enthalten sind. Diesmal bin ich den diesbzgl. Empfehlungen der Lehrbücher aber gleich gefolgt und habe die entsprechenden Weiterleitungen((pars pro toto: vgl. Eisenmenger, Richard u. Florian Brinkmann: WordPress 6. Das umfassende Handbuch, 2. Aufl., Bonn 2022, S. 517)) aktiviert — hier mit dem Plugin ‘<a href="https://wordpress.org/plugins/quick-301-redirects/">Quick 301 Redirects</a>’.</p>



<p>Was war nun die entscheidende Maßnahme für den Erfolg? Ich fürchte, es braucht alle. Auch wenn ich dafür meinen Schreibstil ändern musste. Vor allem bei der Umsetzung der YoastSEO-Empfehlungen. Aber dazu später mehr. So bald Google diese Artikel indexiert hat. Immer das Wichtigste zuerst.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang …</h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun: Muss eine Web-Designerin ihr bisheriges 
  <a href="http://127.0.0.1/wpd.kr/yaml-css/">WordPress-Theme aufgeben</a>, braucht sie Ersatz. Ein freies 
  <a href="https://github.com/bootscore">Theme von der Stange</a> wird sie 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">personalisieren</a> wollen. Zuerst 
  <a href="http://127.0.0.1/wpd.kr/bootscore-font-awesome-shortcode/">etwas</a> 
  <a href="http://127.0.0.1/wpd.kr/font-awesome-checklist/">kosmetisch</a>, dann in Sachen 
  <a href="http://127.0.0.1/wpd.kr/silbentrennung/">Grauwert</a>, 
  <a href="http://127.0.0.1/wpd.kr/mehrsprachigkeit/">Mehrsprachigkeit</a> und innerer
  <a href="http://127.0.0.1/wpd.kr/fussnoten/">Verweistechnik</a> und 
  <a href="http://127.0.0.1/wpd.kr/innere-verlinkung/">Verlinkung</a>. Schließlich wird sie besondere 
  <a href="http://127.0.0.1/wpd.kr/nachrangiger-footer-kram/">Footer</a> aktivieren, ein 
  <a href="http://127.0.0.1/wpd.kr/sekundaer-menue/">Zweitmenü</a> oder einen 
  <a href="http://127.0.0.1/wpd.kr/copyright-line/">Copyright-Hinweis</a>, bevor sie die 
  ‘<a href="http://127.0.0.1/wpd.kr/bootscore-plus-seo/">SEO-zität</a>’ 
  <a href="http://127.0.0.1/wpd.kr/keine-toten-links-bitte/">überprüft</a>. 
  Diesen Weg unterstützt auch dieser Post.</p>
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>



<p></p>
<p>The post <a href="https://karsten-reincke.de/innere-verlinkung/">Innere Verlinkung — ein Reset</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/innere-verlinkung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>bootScore pimpen</title>
		<link>https://karsten-reincke.de/bootscore-pimpen/</link>
					<comments>https://karsten-reincke.de/bootscore-pimpen/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 22:29:56 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=4866</guid>

					<description><![CDATA[<p>bootScore verbindet Bootstrap und WordPress — als Theme mit ‘responsivem Design’. Dies bringt mit, was die Web-Designerin oft nicht selbst programmieren will. Jetzt kann sie stattdessen auf eine MIT lizenzierte Vorarbeit zurückgreifen, gehostet auf GitHub. Deren ‘Standard-Outfit’ personalisiert sie dann, — als Web-Designerin. Adaptiert werde das Theme — so bootScore -, indem frau dessen “[…] [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/bootscore-pimpen/">bootScore pimpen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em><a href="https://bootscore.me/">bootScore</a></em> verbindet <em><a href="https://getbootstrap.com/">Bootstrap</a></em> und <em><a href="https://de.wordpress.org/">WordPress</a></em> — als Theme mit ‘responsivem Design’. Dies bringt mit, was die Web-Designerin oft nicht selbst programmieren will. Jetzt kann sie stattdessen auf eine MIT lizenzierte Vorarbeit zurückgreifen, <a href="https://github.com/bootscore/bootscore">gehostet auf GitHub</a>. Deren ‘Standard-Outfit’ personalisiert sie dann, — als Web-Designerin. Adaptiert werde das Theme — so <em>bootScore</em> -, indem frau dessen “[…] .scss, .php and .js Dateien angepasse”. Hier meine 13 Schritte vom puren <em>bootScore</em> hin zur neuen ‘Homepage’:<span id="more-4866"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/pimp-your-bootscore">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-solid fa-play"></i></h2>



<p>Als Ausgangspunkt hatte ich (bereits) WordPress installiert<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_1_4866" id="identifier_1_4866" class="footnote-link footnote-identifier-link" title="Anleitung dazu gibt es zu Hauf, auch eine von WordPress selbst.">1</a></sup>, (Test-) Daten eingegeben<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_2_4866" id="identifier_2_4866" class="footnote-link footnote-identifier-link" title="z.B. mit denen der zu migrierenden Site oder des Theme Unit Tests">2</a></sup>, <em>bootScore</em> installiert und es als Theme aktiviert<sup><a href="https://karsten-reincke.de/bootscore-pimpen/#footnote_3_4866" id="identifier_3_4866" class="footnote-link footnote-identifier-link" title="z.B. gemäß bootScore-Anleitung">3</a></sup>. So entstand — als <i class=" fa-solid fa-list"></i> Reihe von <strong><em>pimp your bootScore</em></strong> posts — folgender Weg: </p>



<p class="has-text-align-center"> <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-bs-pure-1200x718-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-bs-pure-1200x718-1-300x180.png" alt="bootScore + Landing Page" width="200"></a> <i class=" fa-solid fa-forward"></i> <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-mylap-1490x1372-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-mylap-1490x1372-1-300x276.png" alt="bootScore + Landing Page" width="200"></a>  <i class=" fa-solid fa-forward"></i>  <a href="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-myplp-1490x1372-1.png" data-fancybox><img decoding="async" src="https://karsten-reincke.de/wp-content/uploads/2023/04/krde-myplp-1490x1372-1-300x276.png" alt="bootScore + Landing Page" width="200"></a> </p>



<p></p>



<h2 class="wp-block-heading"><i class=" fa-solid fa-shoe-prints"></i></h2>



<ol class="wp-block-list">
<li>Font Awesome — ein Symbol sagt mehr als 100 Worte: <a href="https://karsten-reincke.de/bootscore-font-awesome-shortcode/">ShortCodes</a> und <a href="https://karsten-reincke.de/font-awesome-checklist/">CSS-Klassen</a></li>



<li>SEO von Anfang an: <a href="https://karsten-reincke.de/bootscore-plus-seo/">HTML-Semantik, Schlagwörter und Sitemaps</a> und <a href="https://karsten-reincke.de/seo-b/">keine toten Links, bitte!</a></li>



<li>Das ‘(Un)Wichtige’ nach unten: Der dezente und umfassende Footer-Bereich für den ’nachrangigen’ <a href="https://karsten-reincke.de/nachrangiger-footer-kram/">Legalkram</a>, das nachrangige <a href="https://karsten-reincke.de/sekundaer-menue/">Zweitmenü</a> und die eigene <a href="https://karsten-reincke.de/copyright-line/">Copyrightline</a></li>



<li>Mehrsprachigkeit mitdenken: <a href="https://karsten-reincke.de/bilingual/">Bilingualität ohne WP-Globus</a></li>



<li>Die Übersichtlichkeit: Das <a href="https://karsten-reincke.de/tiefer-verschachtelte-menues/">tiefer verzweigte Menü </a>mit <a href="https://karsten-reincke.de/shortcodes-im-menue/">integrierten Shortcodes</a>, <a href="https://karsten-reincke.de/saubere-menues/">sauberen Ebenen</a> und <a href="https://karsten-reincke.de/menue-stapel/">lesbarer Stapelung</a>, das dennoch kein <a href="https://karsten-reincke.de/keine-hover-menues/">H‑OVER-Menü</a> sein muss.</li>



<li>Nicht frickeln, sondern automatisieren: Die <a href="https://karsten-reincke.de/silbentrennung/">eingebaute Silbentrennung</a></li>



<li>Ein Bild sagt mehr als 1000 Worte:
<ul class="wp-block-list">
<li>Das kann ein ‘manuell’ mit einer <a href="https://karsten-reincke.de/fancy-boxes/">fancy Box</a> in den Text eingefügtes Bild sein — gerne auch beschleunigt ausgeliefert <a href="https://karsten-reincke.de/bilder-beschleunigen/">per WordPress vorberechneter Bildgröße</a> oder als <a href="https://karsten-reincke.de/fancy-svgs/">SVG</a>.</li>



<li>Oder ein automatisiert verwaltetes ‘<a href="https://karsten-reincke.de/verwischte-primaere-beitragsbilder/">Primäres Beitragsbild</a>’. Nur sollte es möglichst <a href="https://karsten-reincke.de/weniger-verwischte-bilder/">wenig verwischt </a>sein, wenn es des Responsiv-Designs wegen angepasst wird. Das organisiert <a href="https://karsten-reincke.de/ganz-ohne-verwischte-bilder/">das moderne IMG-Tag mit den Source-Angaben</a> wohl am Besten. Schneller umzusetzen, aber weniger effektiv wäre es, WordPress <a href="https://karsten-reincke.de/groessere-bild-quadrate/">eine weitere Bildgröße</a> im Voraus berechnen zu lassen.</li>



<li>Wirklich <a href="https://karsten-reincke.de/bilder-datenbanken/">freie Bilder </a>gibt es im Netz, wenn wir ein <a href="https://karsten-reincke.de/bilderverzeichnis/">Bildverzeichnis</a> vorsehen, um die Lizenzvorgabn zu erfüllen.</li>



<li>Und die kleinen Browserbildchen neben der Url? Oder das Logo? Dafür nutzen wir<a href="https://karsten-reincke.de/logos-und-favicons/"> <em>bootScoores</em> Logo- und Favicon-System</a>.</li>
</ul>
</li>



<li>Das Finden erleichtern: <a href="https://karsten-reincke.de/zwei-auf-einen-streich/">TAG-Wolken und Beitragslisten</a> in der Sidebar</li>



<li>Der ‘gemauerte’ Überblick: <a href="https://karsten-reincke.de/masonry-ueberblick/">Die Masonry-Beitragsliste</a></li>



<li>Das Wichtigste zuerst: <a href="https://karsten-reincke.de/eine-eigene-landingpage/">eine eigene Landing-Page</a> — <a href="https://karsten-reincke.de/verschlankte-landingpage/">selbst gestaltet -</a> und dann <a href="https://karsten-reincke.de/weg-was-stoert/">weg mit dem, was ablenkt</a>, auch mittels <a href="https://karsten-reincke.de/kontext-sensitive-sidebars/">kontextsensitiven Sidebars</a> und <a href="https://karsten-reincke.de/dezente-post-verlinkung/">dezenterem Hinweise auf jüngere Posts</a></li>



<li>Designte Lesbarkeit: <em>bootScore</em> und <a href="https://karsten-reincke.de/passende-web-fonts/">der eigene generelle Font</a> und <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">ein Font für besondere Anlässe</a></li>



<li>Recht muss Recht bleiben: <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a>, der <a href="https://karsten-reincke.de/saubere-cookie-nutzung/">Cookie-Dialog</a> und <a href="https://karsten-reincke.de/sauberes-cookie-management/">seine Semantik </a>mit bootScore</li>



<li>Der erste Eindruck: <a href="https://karsten-reincke.de/farbkonzept/">das Nutzerinnen orientierte Farbkonzept</a></li>
</ol>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i></h2>



<p>So entsteht eine bootScore-basierte Website mit Responsive Design, die den Weg dorthin in sich selbst dokumentiert, auf dass ich auch in Zukunft nachschlagen kann, wie ich es in der Vergangenheit gemacht habe. Wenn dies auch anderen nützt, wäre das ein willkommener Nebeneffekt.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<p class="has-text-align-right">Im Übrigen: <i class=" fa-solid fa-venus-mars"></i> <a href="https://karsten-reincke.de/maenner-sind-mitgemeint/">Männer</a> sind <a href="https://karsten-reincke.de/genderismus/">mitgemeint</a>.</p>
<ol class="footnotes"><li id="footnote_1_4866" class="footnote">Anleitung dazu gibt es zu Hauf, auch <a href="https://developer.wordpress.org/advanced-administration/before-install/howto-install/">eine von WordPress selbst</a>.</li><li id="footnote_2_4866" class="footnote">z.B. mit denen der zu migrierenden Site oder des <a href="https://codex.wordpress.org/Theme_Unit_Test">Theme Unit Tests</a></li><li id="footnote_3_4866" class="footnote">z.B. gemäß <em><a href="https://bootscore.me/documentation/installation/">bootScore-Anleitung</a></em></li></ol><p>The post <a href="https://karsten-reincke.de/bootscore-pimpen/">bootScore pimpen</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/bootscore-pimpen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Datenschutz, DSGVO und Cookies</title>
		<link>https://karsten-reincke.de/datenschutz-dsgvo/</link>
					<comments>https://karsten-reincke.de/datenschutz-dsgvo/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 09:17:38 +0000</pubDate>
				<category><![CDATA[Lizenzkonformität]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=6392</guid>

					<description><![CDATA[<p>Datenschutz sei komplex und müsse von Expertinnen organisiert werden, wird der WEB-Site-Betreiberin gerne bedeutet. Was aber, wenn sie das Geld dafür nicht hat? Wenn es irgendwie unsinnig erscheint, mit der Kanone eines bezahlten Expertinnenteams auf einen Spatzenblog zu schießen? Dann wird sie sich vielleicht via Google irgendein gerne genutztes WordPress-Plugin für Datenschutz und/oder Cookies organisieren [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://karsten-reincke.de/datenschutz/">Datenschutz</a> sei komplex und müsse von Expertinnen organisiert werden, wird der WEB-Site-Betreiberin gerne bedeutet. Was aber, wenn sie das Geld dafür nicht hat? Wenn es irgendwie unsinnig erscheint, mit der Kanone eines bezahlten Expertinnenteams auf einen Spatzenblog zu schießen? Dann wird sie sich vielleicht via Google irgendein gerne genutztes WordPress-Plugin für Datenschutz und/oder Cookies organisieren — und hoffen, dass alles gut geht. Oder sie wird dem genauer nachgehen. Und sich am Ende vielleicht auch Daumenregeln für das Thema ‘Datenschutz und DSGVO’ zusammenstellen, aus und mit denen sich wenigstens ein gut gangbarer Weg ergibt. Hier meine 3.7 Faustregeln:<span id="more-6392"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/privacy-dsgvo">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>I. Verwende nur die personenbezogenen Daten, die Du für das Funktionieren Deines Systems wirklich benötigst.</li>



<li>II. Wenn Du personenbezogene Daten erhebst, dann sage den Besitzerinnen,
<ul class="wp-block-list">
<li>dass Du das tust,</li>



<li>zu welchem Zweck Du die Daten verwendest,</li>



<li>welche Rechtsgrundlage Dich dazu berechtigt,</li>



<li>an wen Du die Daten weitergibst,</li>



<li>wie lange Du sie bei Dir speicherst,</li>



<li>wie sie bei der erfragen können, welche Daten Du über die Zeit gespeichert hast</li>



<li>wie sie die Daten wieder löschen lassen können.</li>
</ul>
</li>



<li>III. Wenn Du Daten auf dem Rechner Deiner Nutzerinnen speicherst, die sie nicht direkt oder indirekt angefordert haben (könnten), frage sie vorher um Erlaubnis.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Gehe ich danach vor — so mache ich immer wieder glauben — werde ich meine Sites so gestalten, dass ich die gröbsten Fallen<sup><a href="https://karsten-reincke.de/datenschutz-dsgvo/#footnote_1_6392" id="identifier_1_6392" class="footnote-link footnote-identifier-link" title="vgl. https://www.e-recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html">1</a></sup> und Fehler<sup><a href="https://karsten-reincke.de/datenschutz-dsgvo/#footnote_2_6392" id="identifier_2_6392" class="footnote-link footnote-identifier-link" title="vgl. https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten--4854218">2</a></sup> vermeide. Denn eines habe ich immer im Kopf: mit einem bloßen Cookie-Banner ist es nicht getan:</p>



<ol class="wp-block-list">
<li>Als Erstes überlege ich mir, wo mein Blog als System personenbezogene Daten erhebt. Die, die ich in und mit Formularen explizit abfrage, fallen mir am leichtesten auf und ein. Bei denen weiß ich — ‘qua Amt’ -, wofür ich sie nutze und an wen ich sie weitergebe etc.</li>



<li>Außerdem ist mir klar, dass auch IP-Adressen als personenbezogenen Daten gelten — obwohl das Internet ohne sie gar nicht funktionieren würde.</li>



<li>Zudem können WordPress, die von mir aktivierten Plugins, Javascript-Bibliotheken, Google-Fonts u.Ä.m.  Daten erheben, notieren und an Dritte versenden.</li>



<li>Schließlich werden meine Kommentatorinnen üblicherweise über das gängige Gravatar-System wiedererkennbar gemacht.</li>
</ol>



<p>Dieses Gemenge muss ich ordnen:</p>



<ul class="wp-block-list">
<li>Regel (I) sagt mir, dass Weniger im Mehr ist: Je weniger Daten ich erfrage, je weniger Plugins ich verwende, desto schlanker wird mein Datenschutzkonzept. Also miste ich hier aus, z.B., in dem ich Produktiv- und Developsytsem unterschiedlich behandele.</li>



<li>Regel (II) sagt mir, dass ich die verbleibenden Datensets aber auch tatsächlich im Datenschutzkonzept beschreiben muss. Also ermittle ich nach bestem Wissen und Gewissen, welche Daten meine Plugins, Font-Requests und andere technische Komponenten erheben, wie sie sie speichern und wohin sie sie weitergeben.</li>



<li>Regel (III) sagt mir, dass ich es ich es mir erlauben lassen muss, Dateien, will sagen: Cookies auf den Rechner meiner Nutzerin schreiben zu dürfen, sei es — wie bei technisch notwendigen Cookies — gesetzlich, sei es — wie bei den anderen — per Zustimmung durch meiner Nutzerin. Und um die gewährt zu bekommen, ist es hilfreich, Zweck und Auswirkung anzugeben.</li>
</ul>



<p>Weitere Posts beschreiben, wie ich das konkret umgesetzt habe.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, zuletzt muss die Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> auch 
  rechtliche Vorgaben beachten, seien es die der
  <a href="http://127.0.0.1/wpd.kr/datenschutz-dsgvo/">DSGVO</a>, die für eine
  <a href="http://127.0.0.1/wpd.kr/saubere-cookie-nutzung/">Cookie-Zustimmung</a> und deren
  <a href="http://127.0.0.1/wpd.kr/sauberes-cookie-management/">Beachtung</a> oder die zur 
  <a href="http://127.0.0.1/wpd.kr//">Erstellungen</a> einer
  <a href="http://127.0.0.1/wpd.kr/datenschutz/">Datenschutzerklärung</a>.
  In diesen Kontext gehören dann auch die Fragen nach dem 
  <a href="http://127.0.0.1/wpd.kr/bilderverzeichnis/">Zweck</a> eines 
  <a href="http://127.0.0.1/wpd.kr/bildnachweise/">Bildverzeichnisses</a>, nach einem
  <a href="http://127.0.0.1/wpd.kr/impressum/">adäquaten Impressum</a> oder nach einer hinreichenden
  <a href="http://127.0.0.1/wpd.kr/license-compliance/">Open-Source-Lizenzerfüllung</a>.
  Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<ol class="footnotes"><li id="footnote_1_6392" class="footnote">vgl. <a href="https://www.e-recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html">https://www.e‑recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html</a></li><li id="footnote_2_6392" class="footnote">vgl. <a href="https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten--4854218">https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten–4854218</a></li></ol><p>The post <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutz, DSGVO und Cookies</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/datenschutz-dsgvo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fonts für besondere Anlässe</title>
		<link>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/</link>
					<comments>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 08:52:06 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=6377</guid>

					<description><![CDATA[<p>Bootstrap* und bootScore verwenden SCSS-Variablen — wie wir wissen. Um Schriften zu gruppieren, bietet die Datei bootstrap/_variables.scss die Variablen $font-family-base, $font-family-sans-serif, $font-family-monospace und $font-family-code. Eine Variable $font-family-serif existiert nicht. Überschreiben wir family-base in unserer Datei _bscore_variables.scss, legen wir den Default neu fest. Wollen wir für unsere Überschriften einen abweichenden Font verwenden, müssen wir die Variablen [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">Fonts für besondere Anlässe</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Bootstrap* und <em>bootScore</em> verwenden SCSS-Variablen — <a href="https://karsten-reincke.de/passende-web-fonts/">wie wir wissen</a>. Um Schriften zu gruppieren, bietet die Datei <code>bootstrap/_variables.scss</code> die Variablen <code>$font-family-base</code>, <code>$font-family-sans-serif</code>, <code>$font-family-monospace</code> und <code>$font-family-code</code>. Eine Variable <code>$font-family-serif</code> existiert nicht. Überschreiben wir <em>family-base</em> in unserer Datei <code>_bscore_variables.scss</code>, legen wir den Default neu fest. Wollen wir für unsere Überschriften einen abweichenden Font verwenden, müssen wir die Variablen <code>$headings-font-family</code> und <code>$display-font-family</code> umdefinieren. <a href="https://bootscore.me/documentation/google-fonts/">Das reicht aus, wenn wir <em>nur zwei Schriftfamilien</em> benutzen wollen</a>. Möchten wir hingegen auch andere Fonts für besondere Anlässe verwenden, z.B. einen dritten Font für unsere Menüs, dann müssen wir anders aktiv werden:<span id="more-6377"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/fonts-for-special-occasions">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Definiere in Deiner Child-Theme-Datei <code>scss/_bscore_variables.scs</code> noch die Variable <code>$menu-font-family: 'PT Sans', sans-serif, !default;</code> (mit einem Menufont Deiner Wahl.)</li>



<li>Trage in Deiner Child-Theme-Datei <code>scss/_bsscore-custom.scs</code> die folgenden Zeilen ein:</li>
</ul>



<pre class="wp-block-code"><code>#bootscore-navbar{
  font-family: $menu-font-family;
}

.footerSubMenu {
  font-family: $menu-font-family;
}</code></pre>



<ul class="wp-block-list">
<li>Weise über das WP-Backend den Widgets <code>Footer 1</code> bis <code>Footer 4</code>, die eine Liste als Menü enthalten, mit <code>&lt;ul class="footerSubMenu"&gt;</code> die neue Klasse zu.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Noch einmal kurz: Wie kann dieser Bedarf eigentlich entstehen?</p>



<p>Menüs sehen in der Regel mit serifenlosen Fonts besser aus. Haben wir in der Variable <code>$font-family-base</code> eh einen serifenlosen Default-Font festgelegt, ist alles gut. Verwenden wir aber einen Serifenfont, müssen wir — wenn wir es denn so wollen — nicht nur den Überschriften einen serifenlosen Font zuweisen, sondern auch die Menüs. Das Hauptmenu ist seitens <em>bootScore</em> in einem Bereich mit der ID <code>bootscore-navbar</code> eingebettet. Diese ID können wir weiterverwenden. Für die Submenüs im Footerbereich müssen wir uns eine entsprechende Klasse definieren und den Listen manuell zuweisen.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, hat Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> die Frage einer 
  <a href="http://127.0.0.1/wpd.kr/ganz-ohne-verwischte-bilder/">guten Bebilderung</a> beantwortet, kann sie entspannt 
  <a href="http://127.0.0.1/wpd.kr/zwei-auf-einen-streich/">Tags und Wolken</a> in ihre Site einbinden, ihre 
  <a href="http://127.0.0.1/wpd.kr/masonry-ueberblick/">Überblicksseite</a> 
  <a href="http://127.0.0.1/wpd.kr/masonry-mit-drei-spalten/">verbessern</a> und 
  <a href="http://127.0.0.1/wpd.kr/eine-eigene-landingpage/">eine eigene Landingpage</a> gestalten. 
  Ob die entstandene <a href="http://127.0.0.1/wpd.kr/weg-was-stoert/">Fülle</a> der eigenen Leserin wirklich 
  nutzt, ob es nicht <a href="http://127.0.0.1/wpd.kr/kontext-sensitive-sidebars/">schlanker</a> geht und 
  <a href="http://127.0.0.1/wpd.kr/verschlankte-landingpage/">wie</a>, ob 
  <a href="http://127.0.0.1/wpd.kr/dezente-post-verlinkung/">dezentere Verweise</a> und 
  <a href="http://127.0.0.1/wpd.kr/passende-web-fonts/">spezielle Fonts</a> auch 
  <a href="http://127.0.0.1/wpd.kr/fonts-fuer-besondere-anlaesse/">für besondere Anlässe</a> 
  die Lesbarkeit erhöhen, all das gilt es zu bedenken. Das tut auch dieser Post.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">Fonts für besondere Anlässe</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Passende Web-Schriften</title>
		<link>https://karsten-reincke.de/passende-web-fonts/</link>
					<comments>https://karsten-reincke.de/passende-web-fonts/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 05 Apr 2023 10:20:34 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=6186</guid>

					<description><![CDATA[<p>Schrift gehört zum Design, passende Web-Schriften zum Web-Design — nicht nur zu besonderen Anlässen. Mit bootScore können wir Google Fonts direkt einbauen. Uns wird sogar erklärt, wie wir sie lokal hosten und so die Erwähnung im Datenschutzkonzept umgehen. Gleichwohl müssen wir uns dazu ein wenig auch auf Bootstrap einlassen: Lösung Hintergrund Schriften sind — begrifflich [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/passende-web-fonts/">Passende Web-Schriften</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Schrift gehört zum Design, passende Web-Schriften zum Web-Design — nicht nur <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse/">zu besonderen Anlässen</a>. Mit <em>bootScore</em> können wir Google Fonts direkt einbauen. Uns wird sogar erklärt, <a href="https://bootscore.me/documentation/google-fonts/">wie wir sie lokal hosten</a> und so die <a href="https://karsten-reincke.de/datenschutz/">Erwähnung</a> im <a href="https://karsten-reincke.de/datenschutz-dsgvo/">Datenschutzkonzept</a> umgehen. Gleichwohl müssen wir uns dazu ein wenig auch auf <em>Bootstrap</em> einlassen:<span id="more-6186"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/suitable-web-fonts">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Wähle aus den <a href="https://fonts.google.com/">Google Fonts</a> Deine Schriften aus:
<ul class="wp-block-list">
<li>eine Schrift mit Serifen (z.B. pt-serif oder noto-serif),</li>



<li>eine dazu passenden serifenlose Schrift (z.B. pt-sans oder noto-sans),</li>



<li>eine dazu passende Monospace-Schrift (pt-mono oer noto-sans-mono)</li>



<li>und vielleicht noch eine spezielle Schrift für Überschriften (z.B. arima-madurai oder eb-garamond)</li>
</ul>
</li>



<li>Wähle jede Schrift im <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a> an und
<ul class="wp-block-list">
<li>belasse den Zeichensatz (charset) auf <em>latin</em></li>



<li>selektiere — so weit vorhanden — die Größen 400 und 700.</li>



<li>selektiere dazu — so weit vorhanden, die Stile regular, regular italic, bold und bold italic.</li>



<li>kopiere den im <em>google-webfonts-helper</em> dazu erzeugten <code>font-face-code</code> in die Datei <code>scss/_bscore_custom.scss</code></li>



<li>lade das Zip-Paket aus dem <em>google-webfonts-helper</em> herunter.</li>
</ul>
</li>



<li>Erzeuge einen Ordner <code>fonts</code> in Deinem Child-Thema.</li>



<li>Entpacke alle heruntergeladenen Zip-Pakete im Ordner <code>fonts</code></li>



<li>Erweitere die Datei <code>scss/_bscore_variables.scss</code> um die Zeilen:</li>
</ul>



<pre class="wp-block-code"><code>  $font-family-base: 'Noto sans', Verdana, sans-serif !default;
  $font-family-sans-serif: 'Noto Sans', Verdana, sans-serif, !default;
  $font-family-monospace: 'Noto Sans Mono', 'Courier New', monospace, !default;
  $font-family-code: 'Noto Sans Mono', 'Courier New', monospace, !default;
  $headings-font-family: 'EB Garamond', Garamond, serif !default;
  $display-font-family: 'EB Garamond', Garamond, serif !default;</code></pre>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p><em>Schriften</em> sind — begrifflich und inhaltlich gesehen — <em>ein weites Feld</em><sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_1_6186" id="identifier_1_6186" class="footnote-link footnote-identifier-link" title="vgl. https://kinsta.com/de/blog/html-fonts/">1</a></sup>:</p>



<p>In der Typografie ist es üblich zwischen Serifen-Schriften und serifenlosen Schriften zu unterscheiden. Serifenschriften seien — heißt es — für gedruckten Fließtext besser, weil sie durch ihre horizontalen Verlängerungen am Buchstaben das Auge besser führen. Im Web galt dagegen lange, dass seriflose Schriften am Bildschirm lesebarer seien. Je feiner aber die Bildschirme über die Zeit wurden, desto feiner ließen sich auch die Serifen darstellen. Das Auge ermüdete weniger. Und so wird heute gesagt, es gäbe von der Lesbarkeit her <a href="https://www.website-freiburg.de/leitfaden_fuer_schrift_kombinationen_auswahl_der_besten_webfonts_und_schriftarten_fuer_deine_website/">keinen wirklich Unterschied mehr</a>: Serifenschriften und serifenlose Schriften können gleichermaßen verwendet werden.</p>



<p>Für alles nur eine einzige Schrift zu verwenden, langweilt allerdings. Wenigstens die Überschriften und die Textkörper sollten sich unterscheiden. Andererseits reduzieren zu viele Schriften — der Unruhe im Gesamtbild wegen — die Lesbarkeit. Und Lesbarkeit und unmittelbare Wahrnehmbarkeit ist nun einmal der Qualitätsmaßstab. So arbeitet die moderne Web-Designerin mit Paaren, mit einem Font für die Überschrift, einem für den Fließtext. Und eben deshalb werden uns heute so oft <a href="https://www.fontpair.co/all">Fontpaare</a> ‘empfohlen’, bei denen die Fonts doch recht <a href="https://www.pagecloud.com/blog/best-google-fonts-pairings">wild kombiniert</a> werden.</p>



<p>In diesem Kontext wichtig ist auch die Unterscheidung zwischen <em>font-familiy</em> und <em>font-face</em>. Mit der CSS-Anweisung <code>font-family: XYZ;</code> teilen wir dem Browser — ungenau gesprochen — mit, dass er den Text in einem HTML-Tag mit dem Font <em>XYZ</em> darstellen solle. Tatsächlich weisen wir ihn aber an, den Text mit einem passenden Font aus der <strong>Font-Familie</strong> <em>XYZ</em> darzustellen. Mit der CSS-Anweisung <code>@font-face {...}</code><sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_2_6186" id="identifier_2_6186" class="footnote-link footnote-identifier-link" title="vgl. https://www.w3schools.com/cssref/css3_pr_font-face_rule.php">2</a></sup> haben wir ihm zuvor gesagt, dass eine bestimmte durchgestaltete Schrift aus einer bestimmten Schriftfamilie (<code>font-family: XYZ</code>) mit einem bestimmten Stil (<code>font-style: [normal|italic]</code>) und einer bestimmten Stärke (<code>font-weight: [&lt;400&lt;...&lt;700&lt;]</code>) zur Verfügung steht und wo er sie findet. Es ist dann Aufgabe des Browsers, die für eine bestimmte Stelle im HTML-Quelltext am besten passende Schrift konkret herauszusuchen. Denn er muss ja nicht nur die Schrift selbst darstellen, sondern auch die Spezifikationen <em>normal, italic, bold, bold-italic</em> berücksichtigen.<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_3_6186" id="identifier_3_6186" class="footnote-link footnote-identifier-link" title="vgl. https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/">3</a></sup></p>



<p>Wenn ein spezifizierter Font doch nicht zu Verfügung steht — etwa, weil der Browser ihn nicht hat herunterladen oder verstehen können -, dann wählt der Browser einen anderen, möglichst ‘ähnlichen’ Font aus seinem Bestand. Und ‘ähnlich’ meint hier nur, ob es sich dabei auch um einen serifenlosen Font oder auch um eine serifenlose Schrift handelt. Wenn für die anderen geforderten Eigenschaften kein genau passender Font einer Familie bereitsteht, kann der Browser diese Eigenschaften ‘herstellen’, indem er den gewählten Font rechnerisch kippt oder verstärkt. Solche ‘berechneten’ Schriftypen sehen aber schlechter aus, als die explizit so gestalteten.<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_4_6186" id="identifier_4_6186" class="footnote-link footnote-identifier-link" title="Deshalb ist es wichtig, die gewünschte Schriftfamilie mindestens in den Stärken '400' und '700' und die jeweils in den Typen 'regular' und 'italic' bereitzustellen.">4</a></sup></p>



<p>Im Prinzip kann die Web-Designerin also nicht sicher sein, wie ihr Text auf dem Rechner einer Leserin tatsächlich aussieht. Um die Wahrscheinlichkeit zu erhöhen, dass die Designerin ihrer Leserin das liefern kann, was sie vorhat, dürfen in der CSS-Anweisung <code>font-family: XYZ;</code> mehrere Font-Familien kombiniert werden — bis hin zur generischen Familie <code>serif</code>, <code>sans-serif</code> oder <code>monospace</code>. Der Browser sichert zu, — für jeden Buchstaben — den ersten Font aus einer der Familien zu nehmen, mit dem er den Buchstaben wie gefordert darstellen kann. Ob und wie gut das klappt, hängt auch von Art und Güte des Browsers ab. Und um der Designerin noch mehr Gewissheit zu bieten, ist das Konzept der <em>Web Safe Fonts</em> entstanden<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_5_6186" id="identifier_5_6186" class="footnote-link footnote-identifier-link" title="vgl. https://www.w3schools.com/cssref/css_websafe_fonts.php">5</a></sup>: Fonts, von denen frau weiß, dass sie auf den Geräten (meistens) zur Verfügung stehen. Aus diesen wählt sie ersatzweise die, die ihren Designvorstellungen zwar nicht optimal, aber noch gut gerecht werden.</p>



<p>Damit entsteht eine Strategie, Google-Fonts lokal zu integrieren<sup><a href="https://karsten-reincke.de/passende-web-fonts/#footnote_6_6186" id="identifier_6_6186" class="footnote-link footnote-identifier-link" title="Die Alternative wäre, die Fonts fallweise direkt von Google-Font-Servern hinzuladen zu lassen. Das erleichtert Deine Arbeit. Und kompliziert Dein Datenschutzkonzept: Denn beim Herunterladen fragt Google Nutzerdaten ab, also die Deiner Leserin. Das verursacht Deine Site. Mithin müsstest in Deinem Datenschutzkonzept darauf hinweisen. Besser also, Du lädst die Fonts selbst herunter, integrierst sie in Deine Site und lieferst sie selbst mit aus.">6</a></sup>:</p>



<p>Wir entscheiden uns für eine Font-Paar und nutzen — wie von <em>bootScore</em> empfohlen — den <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a>, um die entsprechenden Google-Fonts herunterzuladen und die auch generierten <code>@font-face</code>-Anweisungen in Datei <code>scss/_bscore_custom.scss</code> einzufügen.</p>



<p>In der Datei <code>scss/_bscore_variables.scss</code> legen wir dann fest, wofür die Schriften überhaupt verwendet werden sollen. Dazu nutzen wir die <em>Boostrap</em>-Methodik:</p>



<p>Bei <em>Bootstrap</em> legen wir über die Variable <code>$font-family-base</code> die ‘Hauptschrift’ fest. Das kann die Familie einer Serifenschrift oder einer serifenlosen Schrift sein. Über die Variable <code>$font-family-sans-serif</code> legen wir die serifenlosen Hauptschrift fest. Eine Variable <code>$font-family-serif</code> gibt es nicht. Wollen wir für die Überschriften eine andere Familie nehmen, als die der generellen Hauptschrift, wären dafür die Variablen <code>$headings-font-family</code> und <code>$display-font-family</code> zuständig. So lassen sich alle Kombinationen einfach abbilden.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, hat Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> die Frage einer 
  <a href="http://127.0.0.1/wpd.kr/ganz-ohne-verwischte-bilder/">guten Bebilderung</a> beantwortet, kann sie entspannt 
  <a href="http://127.0.0.1/wpd.kr/zwei-auf-einen-streich/">Tags und Wolken</a> in ihre Site einbinden, ihre 
  <a href="http://127.0.0.1/wpd.kr/masonry-ueberblick/">Überblicksseite</a> 
  <a href="http://127.0.0.1/wpd.kr/masonry-mit-drei-spalten/">verbessern</a> und 
  <a href="http://127.0.0.1/wpd.kr/eine-eigene-landingpage/">eine eigene Landingpage</a> gestalten. 
  Ob die entstandene <a href="http://127.0.0.1/wpd.kr/weg-was-stoert/">Fülle</a> der eigenen Leserin wirklich 
  nutzt, ob es nicht <a href="http://127.0.0.1/wpd.kr/kontext-sensitive-sidebars/">schlanker</a> geht und 
  <a href="http://127.0.0.1/wpd.kr/verschlankte-landingpage/">wie</a>, ob 
  <a href="http://127.0.0.1/wpd.kr/dezente-post-verlinkung/">dezentere Verweise</a> und 
  <a href="http://127.0.0.1/wpd.kr/passende-web-fonts/">spezielle Fonts</a> auch 
  <a href="http://127.0.0.1/wpd.kr/fonts-fuer-besondere-anlaesse/">für besondere Anlässe</a> 
  die Lesbarkeit erhöhen, all das gilt es zu bedenken. Das tut auch dieser Post.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<ol class="footnotes"><li id="footnote_1_6186" class="footnote">vgl. <a href="https://kinsta.com/de/blog/html-fonts/">https://kinsta.com/de/blog/html-fonts/</a></li><li id="footnote_2_6186" class="footnote">vgl. <a href="https://www.w3schools.com/cssref/css3_pr_font-face_rule.php">https://www.w3schools.com/cssref/css3_pr_font-face_rule.php</a></li><li id="footnote_3_6186" class="footnote">vgl. <a href="https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/">https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/</a></li><li id="footnote_4_6186" class="footnote">Deshalb ist es wichtig, die gewünschte Schriftfamilie mindestens in den Stärken ‘400’ und ‘700’ und die jeweils in den Typen ‘regular’ und ‘italic’ bereitzustellen.</li><li id="footnote_5_6186" class="footnote">vgl. <a href="https://www.w3schools.com/cssref/css_websafe_fonts.php">https://www.w3schools.com/cssref/css_websafe_fonts.php</a></li><li id="footnote_6_6186" class="footnote">Die Alternative wäre, die Fonts fallweise direkt von Google-Font-Servern hinzuladen zu lassen. Das erleichtert Deine Arbeit. Und kompliziert Dein Datenschutzkonzept: Denn beim Herunterladen fragt Google Nutzerdaten ab, also die Deiner Leserin. Das verursacht Deine Site. Mithin müsstest in Deinem Datenschutzkonzept darauf hinweisen. Besser also, Du lädst die Fonts selbst herunter, integrierst sie in Deine Site und lieferst sie selbst mit aus.</li></ol><p>The post <a href="https://karsten-reincke.de/passende-web-fonts/">Passende Web-Schriften</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/passende-web-fonts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dezente Hinweise auf frühere Posts</title>
		<link>https://karsten-reincke.de/dezente-post-verlinkung/</link>
					<comments>https://karsten-reincke.de/dezente-post-verlinkung/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 31 Mar 2023 10:23:13 +0000</pubDate>
				<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.kr/?p=6178</guid>

					<description><![CDATA[<p>Zwei schlanke Landing-Pages hatte ich unter den Toppings für bootScore ja schon angeboten: mylap-sp1rp1 und mylap-sp0rp1. Beide zeigen das Wichtige zuerst: Das Blog-Thema. Und den jüngsten Post. Die eine stellt dem auch noch den zuletzt veröffentlichten Sticky Post voran. Wenn wir unsere Leserin nur dezente Hinweise auf frühere Posts vorfinden soll, braucht es eine andere [&#8230;]</p>
<p>The post <a href="https://karsten-reincke.de/dezente-post-verlinkung/">Dezente Hinweise auf frühere Posts</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Zwei schlanke Landing-Pages hatte ich unter den <a href="https://github.com/kreincke/bsToppings">Toppings für <em>bootScore</em></a> ja schon angeboten: <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp0rp1">mylap-sp1rp1</a> und <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp1rp1">mylap-sp0rp1</a>. Beide zeigen das Wichtige zuerst: Das Blog-Thema. Und den jüngsten Post. Die eine stellt dem auch noch den zuletzt veröffentlichten <em>Sticky Post</em> voran. Wenn wir unsere Leserin nur  <strong>dezente Hinweise</strong> auf frühere Posts vorfinden soll, braucht es eine andere Lösung:<span id="more-6180"></span></p>



<p class="has-text-align-right"></p><div class="container"><div class="d-flex justify-content-end sample-row"><div class="col-xs"><div class="text-right">[ de | <a href="http://127.0.0.1/wpd.fd/understated-post-links">en</a> ]</div></div></div></div>



<h2 class="wp-block-heading"><i class=" fa-regular fa-face-smile"></i> Lösung</h2>



<ul class="wp-block-list">
<li>Installiere das Plugin <a href="https://wordpress.org/plugins/recent-posts-widget-with-thumbnails/">Recent Posts Widget With Thumbnails</a>.</li>



<li>Öffne <code>Appearance/Widgets</code>.</li>



<li>Kopiere das Widget <code>Recent Posts with Thumbnails</code> in Dein allgemeines <code>Sidebar Widget</code> und konfiguriere es:
<ul class="wp-block-list">
<li>Setze die Nummer der zu zeigenden Posts auf 1, höchstens 2.</li>



<li>Wähle <em>Show only sticks posts</em> an.</li>



<li>Aktiviere <em>Show excerpt</em>.</li>



<li>Setze die Anzahl der zu zeigenden Zeichen auf 144.</li>



<li>Setze die Breite des zu zeigenden Thumbnails auf 120, die Höhe auf 75.</li>



<li>Aktiviere die Option <em>Use aspect ratios of original thumbnails</em>.</li>
</ul>
</li>



<li>Stelle Deine Site auf <a href="https://karsten-reincke.de/eine-eigene-landingpage/">eine eigene Landingpage</a> um.</li>



<li>Lade die Landingpage <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp0rp1">mylap-sp0rp1</a> herunter.</li>



<li>Kopiere sie unter dem Namen <em>mylap.php</em> in Dein Child-Theme.</li>
</ul>



<h2 class="wp-block-heading"><i class=" fa-regular fa-lightbulb"></i> Hintergrund</h2>



<p>Die Idee dieser Änderung ist einfach: Als Sticky-Posts markieren wir ja eh nur die, die die Aktualität überstrahlen. Deshalb wollen wir sie unseren Leserinnen besonders ans Herz legen. Aber wir belassen es bei ein oder zwei Posts. Sie sollen unsere sonstigen nicht verdrängen.((Und ja, das heißt auch, dass wir unsere Sticky-Tags immer wieder umsetzen. Sonst wird es langweilig.)) Unsere bisherige Landingpage <code>mylap-sp1rp1</code> stellte die uns übergreifend wichtigen Posts den zeitlich jüngsten voran. Das geht eleganter und dezenter:</p>



<p>Dazu installieren wir das Plugin <a href="https://wordpress.org/plugins/recent-posts-widget-with-thumbnails/">Recent Posts Widget With Thumbnails</a>. Es sagt von sich, es sei Open Source Software, die Datei <a href="https://plugins.trac.wordpress.org/browser/recent-posts-widget-with-thumbnails/trunk/README.txt">Readme.txt</a> im Repository verweist auf die GPL‑2.0 und <a href="https://plugins.trac.wordpress.org/browser/recent-posts-widget-with-thumbnails/trunk/LICENSE.txt">der GPL‑2.0‑Lizenztext</a> liegt auch dort. Damit sind wir hier auf der Seite der Guten.</p>



<p>Danach konfigurieren wir das Plugin so, dass es unserer Leserin hilft. Treu der Maxime, weniger ist mehr. Und weil wir damit die Stick-Posts in unserer allgemeinen Sidebar verschoben haben, brauchen wir auch die Landingpage nicht mehr, die beide Arten zeigt. Wir können also zu <em>my-landing-page-stickposts-0-recentposts‑1</em> wechseln. Bingo.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-link"></i> Und in welchem Zusammenhang … </h5>
  <p class="myPageContext">… steht das mit unserer <a href="http://127.0.0.1/wpd.kr/bootscore-migration/">Migration</a> 
  zu <a href="https://bootscore.me/">bootScore</a>? Nun, hat Web-Designerin 
  <a href="http://127.0.0.1/wpd.kr/bootscore-pimpen/">im Rahmen ihrer Anpassungen</a> die Frage einer 
  <a href="http://127.0.0.1/wpd.kr/ganz-ohne-verwischte-bilder/">guten Bebilderung</a> beantwortet, kann sie entspannt 
  <a href="http://127.0.0.1/wpd.kr/zwei-auf-einen-streich/">Tags und Wolken</a> in ihre Site einbinden, ihre 
  <a href="http://127.0.0.1/wpd.kr/masonry-ueberblick/">Überblicksseite</a> 
  <a href="http://127.0.0.1/wpd.kr/masonry-mit-drei-spalten/">verbessern</a> und 
  <a href="http://127.0.0.1/wpd.kr/eine-eigene-landingpage/">eine eigene Landingpage</a> gestalten. 
  Ob die entstandene <a href="http://127.0.0.1/wpd.kr/weg-was-stoert/">Fülle</a> der eigenen Leserin wirklich 
  nutzt, ob es nicht <a href="http://127.0.0.1/wpd.kr/kontext-sensitive-sidebars/">schlanker</a> geht und 
  <a href="http://127.0.0.1/wpd.kr/verschlankte-landingpage/">wie</a>, ob 
  <a href="http://127.0.0.1/wpd.kr/dezente-post-verlinkung/">dezentere Verweise</a> und 
  <a href="http://127.0.0.1/wpd.kr/passende-web-fonts/">spezielle Fonts</a> auch 
  <a href="http://127.0.0.1/wpd.kr/fonts-fuer-besondere-anlaesse/">für besondere Anlässe</a> 
  die Lesbarkeit erhöhen, all das gilt es zu bedenken. Das tut auch dieser Post.</p> 
<hr class="wp-block-separator has-alpha-channel-opacity">
<p class="has-text-align-right">Im Übrigen: <i class="fa-solid fa-venus-mars"></i> 
<a href="http://127.0.0.1/wpd.kr/wpd.kr/maenner-sind-mitgemeint/">Männer</a> 
sind <a href="http://127.0.0.1/wpd.kr/genderismus/">mitgemeint</a>.</p>
<p>The post <a href="https://karsten-reincke.de/dezente-post-verlinkung/">Dezente Hinweise auf frühere Posts</a> appeared first on <a href="https://karsten-reincke.de">Freigiebigkeit</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://karsten-reincke.de/dezente-post-verlinkung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
