<?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 - FODINA 4 FOSS</title>
	<atom:link href="https://fodina.de/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://fodina.de/tag/wordpress/</link>
	<description>a treasure trove for free software, techniques, and ideas</description>
	<lastBuildDate>Mon, 13 May 2024 10:11:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>Cookies — properly managed by bootScore</title>
		<link>https://fodina.de/properly-managed-cookies/</link>
					<comments>https://fodina.de/properly-managed-cookies/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 04 Oct 2023 19:01:35 +0000</pubDate>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=7709</guid>

					<description><![CDATA[<p>Displaying an appropriate cookie dialog is one thing. Giving it a real meaning is another. Because asking permission alone is not enough. We also need to evaluate the responses: We must only store those cookies on our reader’s computers they — or the law — have consented to. A JavaScript function that implements this requirement [&#8230;]</p>
<p>The post <a href="https://fodina.de/properly-managed-cookies/">Cookies — properly managed by bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Displaying an appropriate cookie dialog is one thing. Giving it a real meaning is another. Because asking permission alone is not enough. We also need to evaluate the responses: We must only store those cookies on our reader’s computers they — or the law — have consented to. A JavaScript function that implements this requirement sets the semantics of the cookie dialog. Based on such a function, we use properly managed cookies.<span id="more-7709"></span></p>



<p>The plugin <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-cookie-settings</a> itself only provides us with the cookie query. <a href="https://fodina.de/properly-used-cookies/">How to activate this</a>, I had already described in a previous post. However, the bootScore developers leave the implementation of the corresponding semantics to the <a href="https://github.com/orgs/bootscore/discussions/559">respective web designer</a>. Here is a variant that can be freely reused:</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">[ en | <a href="https://karsten-reincke.de/sauberes-cookie-management">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>Download the <a href="https://github.com/js-cookie/js-cookie">JS cookie library</a> from <a href="https://www.cdnpkg.com/js-cookie/file/js.cookie.min.js/" class="broken_link">cdnpkg.com</a> (or wherever) and place it (unpacked) under the name   <code>js/js.cookie.min.js</code>  into your child-theme folder.</li>



<li>In your file <code>functions.php</code> extend the function <code>bootscore_child_enqueue_styles()</code> by the line</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>Expand the file <code>js/custom.js</code> of your child theme in the following manner:</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> Background</h2>



<p>We could set and <a href="https://www.w3schools.com/js/js_cookies.asp">evaluate cookies with native JavaScript</a>. Nevertheless, it’s easier with ready-made libraries. WordPress already <a href="https://wpengine.com/resources/how-to-add-jquery-wordpress-theme/">brings jQuery with it</a>. For using that, bootScore offers us <a href="https://bootscore.me/documentation/bootscore-child/#JavaScript">a way to add custom JavaScript/jQuery functions</a> to our bootScore child theme.</p>



<p>There used to be a <a href="https://plugins.jquery.com/cookie">real jQuery-Cookie-Plugin</a> for cookie management. This has since been archived and migrated to <a href="https://github.com/js-cookie/js-cookie">an independent js-cookie-JavaScript</a> library. To use that, we must <a href="https://www.cdnpkg.com/js-cookie/file/js.cookie.min.js/" class="broken_link">download it</a> and place it into the JavaScript folder of our child theme — under the name <code>js/js.cookie.min.js</code>. As described above, we also must enforce the function <code>bootscore_child_enqueue_styles()</code> of our file <code>functions.php</code> to load that library.</p>



<p>Eventually, we should implement an algorithm for evaluating the cookie settings by expanding the file <code>js/custom.js</code>.  That algorithm should work like this:</p>



<ul class="wp-block-list">
<li>First, we try to read the cookie bootScore-Cookie-plugin stores under the name <code>bs_cookie_settings</code>.</li>



<li>If it doesn’t exist yet, our reader hasn’t agreed to use cookies. So we are not allowed to write any yet.<sup><a href="https://fodina.de/properly-managed-cookies/#footnote_0_7709" id="identifier_0_7709" class="footnote-link footnote-identifier-link" title="Yes, formally we may write the technically necessary cookies without our reader's consent. But before we do that, we must inform her that we are going to do so. And the only way to convince ourselves that she has indeed read it is to wait for the written cookie.">1</a></sup></li>



<li>Once our reader has ‘confirmed’ the cookie dialog to whatever extent, the bs cookie plugin stores the cookie <code>bs_cookie_settings</code>. Its value contains a JSON object:</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>Thus, we must parse that JSON object before we can — on the JavaScript level — access the list of allowed cookie groups via <code>allowedCookies.level</code> and use the method <code>includes</code> of a list object to query which of the cookie groups <em>necessary</em>, <em>analytics, </em>and /or <em>advertising </em>our reader has allowed us to write.</li>



<li>And for each allowed group we now may write the corresponding cookies.<sup><a href="https://fodina.de/properly-managed-cookies/#footnote_1_7709" id="identifier_1_7709" class="footnote-link footnote-identifier-link" title="whereby we refer to the legal permission for the technically necessary cookies">2</a></sup></li>
</ul>



<p>And a last hint: JavaScript modifies pages dynamically. But the cache stores the respective results. Thus, sometimes it’s helpful if we delete the cache for getting the results of our modifications run.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  besides her <a href="http://fodina.de/pimp-your-bootscore/">normal design work</a>,
  the web-designer must deal with some legal requirements, as — for example — 
  those of the <a href="http://fodina.de/privacy-dsgvo/">DSGVO privacy</a>, of having a 
  <a href="http://fodina.de/properly-used-cookies/">cookie consent dialog</a> 
  and the respective <a href="http://fodina.de/properly-managed-cookies/">semantic</a>, 
  of having a <a href="http://fodina.de/ds-compliance/">data privacy page</a>,
  an <a href="http://fodina.de/imprint/">imprint</a>, 
  an <a href="http://fodina.de/picture-credits/">image reference page</a>, and
  a <a href="http://fodina.de/foss-compliance/">FOSS compliance page</a>.
  This post shall support you to manage your legal issues. 
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<ol class="footnotes"><li id="footnote_0_7709" class="footnote">Yes, formally we may write the technically necessary cookies without our reader’s consent. But before we do that, we must inform her that we are going to do so. And the only way to convince ourselves that she has indeed read it is to wait for the written cookie.</li><li id="footnote_1_7709" class="footnote">whereby we refer to the legal permission for the technically necessary cookies</li></ol><p>The post <a href="https://fodina.de/properly-managed-cookies/">Cookies — properly managed by bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/properly-managed-cookies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cookies — properly used in bootScore</title>
		<link>https://fodina.de/properly-used-cookies/</link>
					<comments>https://fodina.de/properly-used-cookies/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 15 Sep 2023 10:03:01 +0000</pubDate>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=7616</guid>

					<description><![CDATA[<p>Without permission, we may not write cookies to the hard disk of our reader. Because it belongs to her, not to us. By accessing our site, she has already implicitly given her consent to store our technically necessary cookies. Because they are technically necessary to read our post. But she must explicitly permit us to [&#8230;]</p>
<p>The post <a href="https://fodina.de/properly-used-cookies/">Cookies — properly used in bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.cookiebot.com/en/cookie-law/">Without permission, we may not write cookies to the hard disk of our reader</a>. Because it belongs to her, not to us. By accessing our site, she has already implicitly given her consent to store our technically necessary cookies. Because they are technically necessary to read our post. But she must explicitly permit us to save the other cookies on her computer before we are going to do so. Moreover, we must have enabled her to query what these cookies are for before we offer her to answer our request. That’s the meaning if we talk about properly used cookies.<span id="more-7616"></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">[ en | <a href="https://karsten-reincke.de/saubere-cookie-nutzung">de</a> ]</div></div></div></div>



<p>For this, <a href="https://bootscore.me/">bootScore</a> offers us a configurable <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">cookie approval dialogue</a> evaluated by the <a href="https://bootscore.me/#download">bsCookie-plugin</a>:</p>



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



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



<li>Install the zip file via the plugin management of your WordPress backend.</li>



<li>Determine the cookies you want to install on your reader’s computer.<sup><a href="https://fodina.de/properly-used-cookies/#footnote_0_7616" id="identifier_0_7616" class="footnote-link footnote-identifier-link" title="We have to keep in mind that our plugins can also try to store cookies. So it's not enough to just look for the corresponding JavaScript commands in our own posts and pages">1</a></sup></li>



<li>Assign each of these cookies to one of the groups ‘necessary’<sup><a href="https://fodina.de/properly-used-cookies/#footnote_1_7616" id="identifier_1_7616" class="footnote-link footnote-identifier-link" title="Cookies that we assign to this group will lastly be placed on our reader's hard drive even without explicit consent, precisely because they are technically necessary. So we must be able to prove if necessary that these cookies are indeed technically necessary.">2</a></sup>, ‘advertising’ or ‘analytics’.</li>



<li>In the dialog ‘Appearance/Widgets’ drag a widget ‘Customer HTML’ into the widget group <em>Footer‑4</em>.</li>



<li>Enter the script lines into that sub-widget as offered by <a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bsCookie documentation</a>.</li>



<li>For each of your plugins add an entry into the corresponding section.</li>



<li>Link your privacy page into the dialog by replacing <em>#yourprivacypolicy</em> accordingly.</li>



<li>Translate the texts into the language of your site (or create an additional entry according to your multilingual strategy).</li>
</ul>



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



<p>Asking for permission to write cookies via a dialogue is only one side of the coin. Cookies can also store (personal) (identification) data. So, the respective web server can ask for that information and hand it over to third parties. Hence, we must mention such cookies in our <a href="https://fodina.de/ds-compliance/">data protection concept</a> additionally. To enable our readers to call this page directly from the cookie consent dialogue, the <em>bsCookie</em> dialogue text contains a link whose value <em>#yourprivacypolice</em> we should aling accordingly.</p>



<p>It has become a good tradition to group cookies functionally and to ask once for the complete group whether we may file the respective cookies. That’s legally not necessary: We could also let the use of cookies agree or disagree quite generally.<sup><a href="https://fodina.de/properly-used-cookies/#footnote_2_7616" id="identifier_2_7616" class="footnote-link footnote-identifier-link" title="However, greater granularity is in our interest. Because if a reader doesn't want one thing - e.g. advertising - she could still allow the other - e.g. analytics. That way, we would still learn at least a part of what we hoped to learn overall.">3</a></sup> Or we could make every single cookie selectable or deselectable — which would overload the dialogue.</p>



<p>However, at first, we need to know which cookies our site writes and what the cookies actually do. Our browsers can support us. For example, by means of its ‘Privacy and Security’ dialog. Or with the help of a browser plugin<sup><a href="https://fodina.de/properly-used-cookies/#footnote_3_7616" id="identifier_3_7616" class="footnote-link footnote-identifier-link" title="e.g. with the Cookie Editor">4</a></sup>, which shows directly for each called site/page, which cookies have been written by it. But what our cookies do, we have to determine separately.</p>



<p>Once we have grouped our cookies functionally, we only need to create the appropriate groups as sections in the bsCookie dialog. Then we must insert for each cookie — associated with that group — an entry in the respective section. For the three common groups ‘necessary’, ‘advertising’, and ‘analytics’ <em>bsCookie</em> already provides the respective code. If these groups fit our needs, it is sufficient for us  to describe the cookies in and with the single entries. Assuming we wanted to get permission to write the three cookies <em>necessaryBsCookie</em>, <em>advertisingBsCookie</em>, and <em>analizingBsCookie</em>, the JavaScript code of the bsCookie consent dialogue should look like this:</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: 'en',
      autoclear_cookies: true,
      page_scripts: true,

      languages: {
        'en': {
          consent_modal: {
            title: 'Cookie Consent Request',
            description: 
'We use cookies to remember and reuse your preferences for future visits. By clicking “Accept all”, you permit us to use all cookies, technically necessary as well as functionally helpful. By clicking “necessary only”, you forbid us to use the functionally helpful, but technically not necessary cookies. For a more detailed consent, visit &lt;a data-bs-toggle="modal" href="#bs-cookie-modal"&gt;Cookie Settings&lt;/a&gt;.',
            primary_btn: {
              text: 'accept all',
              role: 'accept_all'
            },
            secondary_btn: {
              text: 'necessary only',
              role: 'accept_necessary'
            }
          },

          settings_modal: {
            title: 'Cookie settings',
            save_settings_btn: 'Save settings',
            accept_all_btn: 'accept all',
            reject_all_btn: 'necessary only',
            close_btn_label: 'close',
            cookie_table_headers: [
              { col1: 'Name' },
              { col2: 'Domain' },
              { col3: 'Expiration' },
              { col4: 'Description' }
            ],
            blocks: [
              {
                title: 'Cookie usage',
                description: 
'We use cookies to provide core website functions and to enhance your reading experience. For each category, you can choose to use them or not. For more details about cookies and other sensitive data, please read our &lt;a href="https://karsten-reincke.de/datenschutz"&gt;Privacy Policy&lt;/a&gt;.'
              }, {
                title: 'Necessary',
                description: 
'These cookies are essential for our website. Without them, the website would not work properly',
                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: 'deleted if your session becomes invalid',
                    col4: 
'cookie into which bootScore and the plugin bsCookies stores your cookie preferences',
                    is_regex: false
                  },
                  {
                    col1: 'nec­es­saryB­sCook­ie', 
                    col2: 'https://karsten-reincke.de',
                    col3: 'next 100 days',
                    col4: 'demo cookie of "pimp your BootScore"',
                    is_regex: false
                  },                 
                ]
              }, {
                title: 'Analytics',
                description: 
'These cookies allow the website to remember the choices you have made in the past',
                toggle: {
                  value: 'analytics',     // your cookie category
                  enabled: false,
                  readonly: false
                },
                cookie_table: [           // list of all expected cookies
                  {
                    col1: 'anal­iz­ing­B­sCook­ie',         
                    col2: 'https://karsten-reincke.de',
                    col3: 'next 10 Days',
                    col4: 'demo cookie of "pimp your BootScore"',
                    is_regex: false
                  }
                ]
              }, {
                title: 'Advertising',
                description: 
'These cookies collect information about how you use the website, which pages you visited and which links you clicked on. All data is anonymized and cannot be used to identify you',
                toggle: {
                  value: 'advertising',
                  enabled: false,
                  readonly: false
                },
                cookie_table: [             // list of all expected cookies
                  {
                    col1: 'adver­tis­ing­B­sCook­ie',
                    col2: 'https://karsten-reincke.de',
                    col3: '2 weeks',
                    col4: 'demo cookie of pimp your BootScore',
                    is_regex: false
                  }
                ]
              }, {
                title: 'More information',
                description: 
'For further questions concerning our data management, feel free to &lt;a href="https://karsten-reincke.de/impressum"&gt;contact us&lt;/a&gt;.',
              },

            ]
          }

        }
      }

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



<p>Entering the information into the code of the cookie consent dialogue is one thing. Activating the code is another. To do that, we put the customized <em><a href="https://bootscore.me/documentation/plugin/bs-cookie-settings/">bs-cookie-settings</a></em> JavaScript code into a <em>Custom HTML element</em> that we added to the <em>Footer 4</em> widget. In principle, we could embed the <em>Custom HTML element</em> in other widgets as well. However, <em>bsCookie</em> suggests <em>Footer 4</em> because the JavaScript code should be embedded at the end of a page. Anyway, all pages using a template containing the  <em>Footer 4</em> widget will then display the cookie. That’s the method of how we solve the problem of ‘deep links’.<sup><a href="https://fodina.de/properly-used-cookies/#footnote_4_7616" id="identifier_4_7616" class="footnote-link footnote-identifier-link" title="We must keep in mind that our readers could directly call links to deeper embedded pages. Even in this case, we may only write cookies, if we are allowed to do so.">5</a></sup></p>



<p>That left us with three final tasks:</p>



<ul class="wp-block-list">
<li>First, we will often want to linguistically customize our consent dialogue as well. For that purpose, we can modify the JavaScript code mentioned above.</li>



<li>Secondly, the dialog color is determined by the definition of the <a href="https://fodina.de/customized-colors/">functional color</a> $warning. Those who nevertheless want to customize the dialog may use her file  &lt;code&gt;_bscore_custom.scss&lt;/code&gt;: <pre class="wp-block-code"><code><br>// 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> <br></code></pre></li>



<li>Third, we need to implement the semantics of the cookie consent dialog. If we want to walk the talk, we need to implement our ‘storing the cookie JavaScript code’ in a way that it writes only the technically necessary cookies without consent, and that it otherwise stores only the cookies from the groups for which there is consent.</li>
</ul>



<p>I will take up this last point in a separate post …</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  besides her <a href="http://fodina.de/pimp-your-bootscore/">normal design work</a>,
  the web-designer must deal with some legal requirements, as — for example — 
  those of the <a href="http://fodina.de/privacy-dsgvo/">DSGVO privacy</a>, of having a 
  <a href="http://fodina.de/properly-used-cookies/">cookie consent dialog</a> 
  and the respective <a href="http://fodina.de/properly-managed-cookies/">semantic</a>, 
  of having a <a href="http://fodina.de/ds-compliance/">data privacy page</a>,
  an <a href="http://fodina.de/imprint/">imprint</a>, 
  an <a href="http://fodina.de/picture-credits/">image reference page</a>, and
  a <a href="http://fodina.de/foss-compliance/">FOSS compliance page</a>.
  This post shall support you to manage your legal issues. 
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<ol class="footnotes"><li id="footnote_0_7616" class="footnote">We have to keep in mind that our plugins can also try to store cookies. So it’s not enough to just look for the corresponding JavaScript commands in our own posts and pages</li><li id="footnote_1_7616" class="footnote">Cookies that we assign to this group will lastly be placed on our reader’s hard drive even without explicit consent, precisely because they are technically necessary. So we must be able to prove if necessary that these cookies are indeed technically necessary.</li><li id="footnote_2_7616" class="footnote">However, greater granularity is in our interest. Because if a reader doesn’t want one thing — e.g. advertising — she could still allow the other — e.g. analytics. That way, we would still learn at least a part of what we hoped to learn overall.</li><li id="footnote_3_7616" class="footnote">e.g. with the <a href="https://cookie-editor.cgagnier.ca/">Cookie Editor</a></li><li id="footnote_4_7616" class="footnote">We must keep in mind that our readers could directly call links to deeper embedded pages. Even in this case, we may only write cookies, if we are allowed to do so.</li></ol><p>The post <a href="https://fodina.de/properly-used-cookies/">Cookies — properly used in bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/properly-used-cookies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>My Googlized Writing Style</title>
		<link>https://fodina.de/writing-style/</link>
					<comments>https://fodina.de/writing-style/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sun, 27 Aug 2023 08:39:56 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=7563</guid>

					<description><![CDATA[<p>Last time it wasn’t hard anymore: Within two days my post about my ‘reset’ because of lacking an ‘inner linking’ and about the ‘right way to be crawled and indexed’ had been processed by Google. Like my revised posts, I had designed it in accordance with the recommendations of YOAST that take into account Google’s [&#8230;]</p>
<p>The post <a href="https://fodina.de/writing-style/">My Googlized Writing Style</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Last time it wasn’t hard anymore: Within two days my post about my ‘reset’ because of lacking an ‘<a href="https://backlinko.com/hub/seo/internal-links">inner linking’</a> and about the ‘right way to be crawled and indexed’ had been processed by Google. Like my revised posts, I had designed it in accordance with the recommendations of YOAST that take into account Google’s ‘unspoken’ specifications — as proclaimed by YOAST. However, by following these rules, I had also given in to the stylistic superiority of Google and YOAST:<span id="more-7563"></span></p>



<p>To clarify the consequences of their force, let me first summarize the eleven commandments that I had taken from YOAST and with the implementation of which I have so far always been able to get green YOAST ‘traffic’-lights — one for “SEO” and one for readability. Just for the sake of completeness, let me second note that I could successfully apply for indexing at Google for the pages prepared accordingly.<sup><a href="https://fodina.de/writing-style/#footnote_0_7563" id="identifier_0_7563" class="footnote-link footnote-identifier-link" title="by using the option of the search console to hand over a URL manually.">1</a></sup></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">[ en | <a href="https://karsten-reincke.de/schreibstil">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>Define a key phrase that reflects the subject<sup><a href="https://fodina.de/writing-style/#footnote_1_7563" id="identifier_1_7563" class="footnote-link footnote-identifier-link" title="The wolf of seo says that the keyword phrase should not capture what your post is about, but what your post is perfect for. But if you apply the rules 2 and 3, the difference between these viewpoints shrinks considerably.">2</a></sup> of your page.<sup><a href="https://fodina.de/writing-style/#footnote_2_7563" id="identifier_2_7563" class="footnote-link footnote-identifier-link" title="Keep in mind: Use only 2 words, at most 3. Because in that form, the key phrase must be placed at the beginning of the title and integrated into the body text. Do not trust YOAST to be able to understand syntactic variants - even if it promises to do so">3</a></sup></li>



<li>Just as defined, put that key phrase at the beginning of your page title.<sup><a href="https://fodina.de/writing-style/#footnote_3_7563" id="identifier_3_7563" class="footnote-link footnote-identifier-link" title="If you shorten the resulting slug of your page, use at least speaking syntagms in your URL.">4</a></sup></li>



<li>Just as defined, integrate that key phrase somewhere into the first paragraph of your page, too.</li>



<li>Include that key phrase in the meta description of your page, which must have at least 120 and no more than 156 characters</li>



<li>Link your post to other pages on your blog about the respective topic.</li>



<li>Link your post to external pages about that topic.</li>



<li>Write only a few sentences with more than 25 words.</li>



<li>Link your (short) (main) sentences by (logical) conjunctions.</li>



<li>Do not let your paragraphs ‘swell’ over 150 words, or at least stay under 200.</li>



<li>Use only a few passive constructions, and make active statements.</li>



<li>Explicitly request Google to index your new page in the Search Console.<sup><a href="https://fodina.de/writing-style/#footnote_4_7563" id="identifier_4_7563" class="footnote-link footnote-identifier-link" title="Don't rely only on your updated sitmap.">5</a></sup></li>
</ul>



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



<p>One thing in advance: If you already think that this post does not follow these rules, let me tell you: Yes, it doesn’t. Intentionally. Let us test by this article what happens if we don’t submit our posts to the unifying dictates of Google and YOAST.</p>



<p>The result of these ‘recommendations’ is a different writing style than you and I (occasionally) prefer. It’s known that passive sentence constructions are more difficult to understand and thus require more reading work.<sup><a href="https://fodina.de/writing-style/#footnote_5_7563" id="identifier_5_7563" class="footnote-link footnote-identifier-link" title="If you don't believe that, you may deliberately 'torture' yourself through this intentionally passivated paragraph">6</a></sup> And it’s known, that our reading life is made easier by short sentences. If we are forced by search engines to write this way, they are doing our readers some good. Even if we are ‘gently’ moved away from the academic writing style via the threat that our texts will not be indexed.</p>



<p>Hence, this does not annoy me. The thing with the key phrase, however, does. Because it prevents me from arousing a desire to read the following article by a merely suggestive title, and from letting concrete meaning and context of the headline grow out of the first sentences. Free associations — that’s what I like to work with. Actually. But I can’t, if I want to obey the commandments. An example: In my first run, I had titled my article ‘Clouds and Lists — 2 on 1 Stroke’ as ‘2 in 1 Stroke’ by which I hoped to open a little associative space linking my post to the fairy tale <em><a href="https://en.wikipedia.org/wiki/The_Brave_Little_Tailor">brave little tailor</a></em>.<sup><a href="https://fodina.de/writing-style/#footnote_6_7563" id="identifier_6_7563" class="footnote-link footnote-identifier-link" title="Unfortunately - after having read story again in its entirety - it makes me a little uncomfortable myself. It is already a bad dazzler, that brave little tailor, not only a sly one. So, the story does not open an associative space into which I would like to blow myself">7</a></sup> ‘2 in 1 Stroke’ — that is an elegant title. Prefixing it with the key phrase ‘Clouds and Lists’ takes the point out of the title and makes it unwieldy. Additionally, repeating the key phrase in the first paragraph turns us into pushy babblers — just to get our green YOAST traffic lights and become part of the Google index.</p>



<p>A good example — from a SEO point of view — is the page <a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">https://wolf-of-seo.de/was-ist/fokus-keyphrase/</a>. Here, the key phrase <em>focus keyword</em> is placed at the beginning of the title and immediately repeated in the first, very short paragraph — together with its twin focus <em>key phrase</em>. And in the first six sentences<sup><a href="https://fodina.de/writing-style/#footnote_7_7563" id="identifier_7_7563" class="footnote-link footnote-identifier-link" title="which - in this case - is equivalent to: in the first 6 paragraphs">8</a></sup>, these phrases occur more than 10 times. The ‘wolf of seo’ should not have any problems getting his page indexed. And even more: the content of his article is very informative! Only stylistically — stylistically it is grotty. If you read the post slowly, you will surely notice its redundant verbiage. The annoying thing about the dictates of good SEOcity is that we obviously have to write like this if we want to be indexed. Because only what is indexed can be found and ranked at all.</p>



<p>If you’ve read the wolf-of-seo’s article slowly, read my article in the same way. And you will notice that it is even more grotty than his! Because I have intentionally violated the above commandments:</p>



<ul class="wp-block-list">
<li>My key phrase ‘styleXpolice’ does not appear in the title, in the first paragraph, or anywhere else, hence not even in the slug.<sup><a href="https://fodina.de/writing-style/#footnote_8_7563" id="identifier_8_7563" class="footnote-link footnote-identifier-link" title="Inside of the post, I can not write this word as I've really used it (without an X), because otherwise, YOAST says &quot;The keyphrase was found 1 time. That's less than the recommended minimum of 5 times for a text of this length.&quot;">9</a></sup></li>



<li>I’ve included a ‘meta description’ that is intentionally too short and misses the topic.</li>



<li>This post uses links to external sites, but internal links to other pages on my site.</li>



<li>My text uses too many passive constructions<sup><a href="https://fodina.de/writing-style/#footnote_9_7563" id="identifier_9_7563" class="footnote-link footnote-identifier-link" title="&quot;17% of the sentences contain passive voice&quot;">10</a></sup>, has one too-long paragraph<sup><a href="https://fodina.de/writing-style/#footnote_10_7563" id="identifier_10_7563" class="footnote-link footnote-identifier-link" title="&quot;1 of the paragraphs contains more than the recommended maximum of 150 words.&quot;">11</a></sup>, and uses too long sentences<sup><a href="https://fodina.de/writing-style/#footnote_11_7563" id="identifier_11_7563" class="footnote-link footnote-identifier-link" title="&quot;31.9% of the sentences contain more than 20 words, which is more than the recommended maximum of 25%&quot;">12</a></sup>.</li>
</ul>



<p>Because of these deviations from the rules, I got an orange YOAST traffic light for this post in terms of SEO and a red one in terms of readability.</p>



<p>Thus, we can now test, how long Google takes to index this article.<sup><a href="https://fodina.de/writing-style/#footnote_12_7563" id="identifier_12_7563" class="footnote-link footnote-identifier-link" title="In order not to compare pears with apples, I will first inform Google about this new post only by an update of my sitemap. Some months later, I will also request Google manually to index this post.">13</a></sup> As soon as it has been indexed, I will let you know. But you can also try it by yourself. Just ‘google’ for ‘SEOcity’. This word exists as a noun (so far) only in this article.</p>



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



<ul class="wp-block-list">
<li>Sitemap updated: 2023-08-27 / evaluated: 2023-08-27 (maybe earlier than updated)</li>



<li>Post found: ????-??-?? / crawled: ????-??-??  / indexed: ????-??-?? </li>



<li>Indexing manually ordered: ????-??-?? </li>



<li>Post found: ????-??-?? / crawled: ????-??-?? / indexed: ????-??-??</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity">
<ol class="footnotes"><li id="footnote_0_7563" class="footnote">by using the option of the search console to hand over a URL manually.</li><li id="footnote_1_7563" class="footnote">The <em><a href="https://wolf-of-seo.de/was-ist/fokus-keyphrase/">wolf of seo</a></em> says that the keyword phrase should not capture what your post is about, but what your post is perfect for. But if you apply the rules 2 and 3, the difference between these viewpoints shrinks considerably.</li><li id="footnote_2_7563" class="footnote">Keep in mind: Use only 2 words, at most 3. Because in that form, the key phrase must be placed at the beginning of the title and integrated into the body text. Do not trust YOAST to be able to understand syntactic variants — even if it promises to do so</li><li id="footnote_3_7563" class="footnote">If you shorten the resulting slug of your page, use at least speaking syntagms in your URL.</li><li id="footnote_4_7563" class="footnote">Don’t rely only on your updated sitmap.</li><li id="footnote_5_7563" class="footnote">If you don’t believe that, you may deliberately ‘torture’ yourself through this intentionally passivated paragraph</li><li id="footnote_6_7563" class="footnote">Unfortunately — after having read story again in its entirety — it makes me a little uncomfortable myself. It is already a bad dazzler, that brave little tailor, not only a sly one. So, the story does not open an associative space into which I would like to blow myself</li><li id="footnote_7_7563" class="footnote">which — in this case — is equivalent to: in the first 6 paragraphs</li><li id="footnote_8_7563" class="footnote">Inside of the post, I can not write this word as I’ve really used it (without an X), because otherwise, YOAST says “The keyphrase was found 1 time. That’s less than the recommended minimum of 5 times for a text of this length.”</li><li id="footnote_9_7563" class="footnote">“17% of the sentences contain passive voice”</li><li id="footnote_10_7563" class="footnote">“1 of the paragraphs contains more than the recommended maximum of 150 words.”</li><li id="footnote_11_7563" class="footnote">“31.9% of the sentences contain more than 20 words, which is more than the recommended maximum of 25%”</li><li id="footnote_12_7563" class="footnote">In order not to compare pears with apples, I will first inform Google about this new post only by an update of my sitemap. Some months later, I will also request Google manually to index this post.</li></ol><p>The post <a href="https://fodina.de/writing-style/">My Googlized Writing Style</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/writing-style/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Internal Linking — a Reset</title>
		<link>https://fodina.de/internal-linking/</link>
					<comments>https://fodina.de/internal-linking/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 23 Aug 2023 11:54:25 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=7526</guid>

					<description><![CDATA[<p>It’s a while ago, that I wrote about SEO. That should not be a big deal, I thought at that time. In its templates, bootScore thankfully uses semantic HTML tags by default. Thus, it should be sufficient to submit one’s own sitemap to Google &#38; Co. Enriching the pages themselves with additional keywords should be [&#8230;]</p>
<p>The post <a href="https://fodina.de/internal-linking/">Internal Linking — a Reset</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>It’s a while ago, that I wrote about SEO. That should not be a big deal, I thought at that time. In its templates, <a href="https://bootscore.me/">bootScore</a> thankfully <a href="https://fodina.de/bootscore-plus-seo/">uses semantic HTML tags by default</a>. Thus, it should be sufficient to submit one’s own sitemap to Google &amp; Co. Enriching the pages themselves with additional keywords should be superfluous. A good primary content would be enough. No need for a second text behind the actual one. That’s the way, I thought. Moreover, I saw no reason to talk about internal linking. Rarely has <em>Google</em> so embarrassingly proven me wrong:<span id="more-7526"></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">[ en | <a href="https://karsten-reincke.de/innere-verlinkung">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>Replace all schematic slugs with talking ones.</li>



<li>Link every post and page to all other internal, related posts or pages.</li>



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



<li>Implement so many improvements suggested by YoastSEO that its traffic lights turn green.</li>



<li>For every single page and post, explicitly ask Google via the <a href="https://search.google.com/search-console">Google Search Console</a> to index that text.</li>
</ul>



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


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



<p>What has happened, that I changed my mind? After submitting my sitemap sometime in April, Google had indexed only 6 of my 109 pages over 3 months. It did not grumble about the quality. It simply announced that it had found 81 pages or posts and had crawled 17, but had not indexed any of them. Google did not consider my texts worthy of indexing. Despite my interesting topic, ‘bootScore’. And in spite of the articles being so relevant, they could inspire the project ‘bootScore’. In this situation, trying to improve my ranking was nonsense: what’s not indexed, is not found at all.</p>



<p>It took me a while to understand what had happened. And it took me even more time to fix that:</p>



<p>While migrating to bootScore, I wanted to condense my site. It should become more reader-friendly with less redundancy. Fewer bells and whistles. That’s why I mapped my thematic clusters onto categories and tags and properly assigned my texts to them. I wanted to take advantage of what bootScore brings to the table on its own. On each page, our readers can call the related posts by clicking on the assigned keywords. So why should I additionally link a post to related ones manually? Why should I hook individual pages or posts into my menu? A clever guiding system of categories without any additional inner linking should be enough.</p>



<p>But that’s exactly what Google sees differently! Pages that are not linked to other pages on the same site are not important — apparently, even in the eyes of the author. Otherwise, she would want to lead her readers there. So why should Google index them? My textbooks((Pars pro toto: cf. Czysch, Stephan: SEO mit Google Search Console, 2. Ed., Heidelberg 2017, pp. 168ff))  had always pointed out that! It was my fault to ignore that.</p>



<p>Just, as my fault for grouping my posts with nonspeaking ‘slugs’: If I — for example — used a cluster ‘image’, I thought I could name my posts ‘image‑a’ , … ‘image‑i’. So, I had the same page names on the German and the English sites. Also, a bad idea that causes Google to take the posts as unimportant.((pars pro toto: cf. Dziki, Julian: Suchmaschinenoptomierung für dummies, 2. Ed., Weinheim 2021, p. 62)</p>



<p>After having understood these side effects, I reworked everything. I replaced the symbolic page names with speaking ones. I installed YoastSeo and implemented so many of its measures concerning the topics ‘SEO’ and ‘readability’ that the respective traffic lights switched from red to green. Or at least to yellow. All in all a very time-consuming work.</p>



<p>Nevertheless, there was still no inner linking with it. That’s why I wrote a summary for each of my thematic clusters and linked its words to the intended ‘siblings’ of posts and pages. Moreover, because — in the Future — I would have to update these summaries often, I reduced my typing work by implementing these summaries as ShortCodes. So, a simple string at the end of each post and page would integrate the respective internal linking.</p>


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



<p>Nevertheless, the real indexing breakthrough came only after I had submitted each post and page individually and manually to Google Search Console for indexing — including the time-consuming indexability checks for each text. Now Google has indexed 84 of my 74 articles and 18 pages of my German site. What still is not indexed is indeed less important, like my privacy page or the image proof. And on my English site it looks even better: of the currently offered 53 posts and 15 pages, 114 are indexed — from which we may derive that the Google index still contains outdated links. For those, however, I preferred to follow the recommendations of the textbooks right away. I implemented respective redirects with the plugin ‘<a href="https://wordpress.org/plugins/quick-301-redirects/">Quick 301 Redirects</a>’.</p>



<p>So what was the decisive measure for success? I’m afraid it takes all of them. Even if I had to change my writing style to do it. Especially in the implementation of YoastSEO recommendations. But more about that later. As soon as Google has indexed this post. Always first things first.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>?  Well,
  if a web designer must <a href="http://fodina.de/yaml-css/">abandon her current WordPress theme</a>, 
  she needs a replacement. A <a href="https://github.com/bootscore">free ‘off-the-shelf’ theme</a>, 
  she probably wants to <a href="http://fodina.de/pimp-your-bootscore/">personalize</a>. 
  First <a href="http://fodina.de/bootscore-font-awesome-shortcode/">a bit</a> 
  <a href="http://fodina.de/font-awesome-checklist/">cosmetically</a>, then in 
  terms of <a href="http://fodina.de/hyphenation/">the gray value of her pages</a>, 
  <a href="http://fodina.de/bilingualism/">multilingualism</a> and internal
  <a href="http://fodina.de/footnotes/">reference techniques</a> and
  <a href="http://fodina.de/internal-linking/">linking</a>. Finally, 
  she perhaps enables  <a href="http://fodina.de/minor-footer-stuff/">special footers</a>, 
  <a href="http://fodina.de/subordinated-menu/">a secondary menu</a> or 
  a <a href="http://fodina.de/copyright-line/">copyright notice</a> before 
  <a href="http://fodina.de/no-broken-links-please/">checking</a>
  the <a href="http://fodina.de/bootscore-plus-seo/">SEO</a> features 
  of the selected theme. This is a way that this post supports too.
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<p>The post <a href="https://fodina.de/internal-linking/">Internal Linking — a Reset</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/internal-linking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pimp Your bootScore</title>
		<link>https://fodina.de/pimp-your-bootscore/</link>
					<comments>https://fodina.de/pimp-your-bootscore/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Sun, 23 Apr 2023 21:52:07 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=4525</guid>

					<description><![CDATA[<p>Linking Bootstrap and WordPress to get a responsive design is the task of bootScore, a WP-theme bringing along what the web designer actually does not want to program herself. Instead, she can now rely on an MIT-licensed preliminary work hosted on GitHub. But its ‘standard outfit’ still must be personalized, ‘pimped’ — by the work [&#8230;]</p>
<p>The post <a href="https://fodina.de/pimp-your-bootscore/">Pimp Your bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Linking Bootstrap and WordPress <a href="https://fodina.de/bootscore-migration/">to get a responsive design is the task of bootScore, a WP-theme </a>bringing along what the web designer actually does not want to program herself. Instead, she can now rely on an MIT-licensed preliminary work <a href="https://github.com/bootscore/bootscore">hosted on GitHub</a>. But its ‘standard outfit’ still must be personalized, ‘pimped’ — by the work of a Web Designer? The theme is adapted — so <em>bootScore</em> — by modifying its “[…] .scss, .php, and .js files”. So you can pimp your bootScore easily. Here are my 13 steps from a pure <em>bootScore</em> to my personal ‘homepage’:<span id="more-4525"></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">[ en | <a href="https://karsten-reincke.de/bootscore-pimpen">de</a> ]</div></div></div></div>



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



<p>As a starting point, I had (already) </p>



<ul class="wp-block-list">
<li>installed WordPress<sup><a href="https://fodina.de/pimp-your-bootscore/#footnote_0_4525" id="identifier_0_4525" class="footnote-link footnote-identifier-link" title="instructions on how to do this are aplenty, including one from WordPress itself.">1</a></sup>, </li>



<li>entered (test) data<sup><a href="https://fodina.de/pimp-your-bootscore/#footnote_1_4525" id="identifier_1_4525" class="footnote-link footnote-identifier-link" title="e.g. with those of the site to be migrated or the Theme Unit Test">2</a></sup>, </li>



<li>installed <em>bootScore,</em> and activated it as my theme<sup><a href="https://fodina.de/pimp-your-bootscore/#footnote_2_4525" id="identifier_2_4525" class="footnote-link footnote-identifier-link" title="e.g. according to bootScore instructions">3</a></sup>. </li>
</ul>



<p></p>



<p>Eventually, this results in a way</p>



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



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



<ol class="wp-block-list">
<li>Font Awesome — one symbol says more than 100 words: <a href="https://fodina.de/bootscore-font-awesome-shortcode/">ShortCodes</a> and <a href="https://fodina.de/font-awesome-checklist/">CSS classes</a></li>



<li>SEO from the beginning: <a href="https://fodina.de/bootscore-plus-seo/">HTML semantics, keywords, and sitemaps</a>, and <a href="https://fodina.de/no-broken-links-please/">no dead links</a>, please.</li>



<li>The ‘(un)important’ at the bottom: The discreet and comprehensive footer area for the ‘subordinated’ <a href="https://fodina.de/minor-footer-stuff/">legal stuff</a>, the subordinated <a href="https://fodina.de/subordinated-menu/">secondary menu</a>, and the custom <a href="https://fodina.de/copyright-line/">copyright line</a>.</li>



<li>Thinking multilingualism: <a href="https://fodina.de/bilingual/">bilingualism without WP globe</a></li>



<li>For clarity: the <a href="https://fodina.de/deeper-nested-menus/">deeper branched menu</a> with <a href="https://fodina.de/shortcodes-in-menu/">integrated shortcodes</a>, clean layers, and <a href="https://fodina.de/menu-stack/">readable stacking</a>, which nevertheless has to be <a href="https://fodina.de/no-hover-menus/">no H‑OVER menu</a>.</li>



<li>Don’t fiddle, automate: The <a href="https://fodina.de/hyphenation/">built-in hyphenation</a></li>



<li>A picture says more than 1000 words, for example, 
<ul class="wp-block-list">
<li><strong>an image with a <a href="https://fodina.de/fancy-boxes/">fancy box</a></strong> manually inserted into the text — gladly accelerated delivered <a href="https://fodina.de/speed-up-images/">via WordPress pre-calculated image sizes</a> or as <a href="https://fodina.de/fancy-svgs/">SVG</a>.</li>



<li><strong>an automatically managed ‘<a href="https://fodina.de/blurred-featured-images/">primary post image</a>’</strong>, not <a href="https://fodina.de/less-blurred-images/">(less) blurred</a> when adjusted for Responsive Design’s sake: That organizes the <a href="https://fodina.de/without-any-blurred-images/">modern IMG tag with the source information</a> probably best. Faster to implement, but less effective, would be to have WordPress calculate <a href="https://fodina.de/larger-image-squares/">another image size</a> in advance.</li>



<li>images, <strong>that are offered on the web as <a href="https://fodina.de/image-databases/">really free images</a></strong> if we <a href="https://fodina.de/picture-credit-page/">provide an image directory</a> to meet licensing requirements.</li>



<li>And the little browser images next to the URL? Or the logo? <strong>For that, we use <a href="https://fodina.de/logos-and-favicons/"><em>bootScoore’s</em> logo and favicon system</a></strong>.</li>
</ul>
</li>



<li>Easing the finding: <a href="https://fodina.de/two-on-one-stroke/">TAG clouds and post lists</a> in the sidebar</li>



<li>The walled overview: The <a href="https://fodina.de/masonry-survey/">Masonry Contribution List</a>.</li>



<li>First things first: a <a href="https://fodina.de/an-own-landingpage/">dedicated landing page</a> — <a href="https://fodina.de/a-leaner-landing-page/">self-designed</a> — and then <a href="https://fodina.de/away-what-distracts/">get rid of what’s distracting</a>, use <a href="https://fodina.de/context-sensitive-sidebars/">context-sensitive sidebars</a> and more <a href="https://fodina.de/understated-post-links/">discreet references to recent posts</a>.</li>



<li>Readability: <em>bootScore</em> and <a href="https://fodina.de/suitable-web-fonts/">the custom general font</a> and the <a href="https://fodina.de/fonts-for-special-occasions/">font for special occasions</a></li>



<li>Respecting the law is a need: <a href="https://fodina.de/privacy-dsgvo/">data protection</a>, a proper <a href="https://fodina.de/properly-used-cookies/">cookie dialog</a>, and <a href="https://fodina.de/properly-managed-cookies/">cookie management</a>.</li>



<li>The first impression counts: <a href="https://fodina.de/customized-colors/">customizing the color concept</a>.<a href=")"></a></li>
</ol>



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



<p>By following these steps, a bootScore-based website in responsive design is created, that documents the way to it in itself. So that I can also lookup in the future, how I have done it in the past. If this also benefits others, that would be a welcome side effect.</p>
<ol class="footnotes"><li id="footnote_0_4525" class="footnote">instructions on how to do this are aplenty, including <a href="https://developer.wordpress.org/advanced-administration/before-install/howto-install/">one from WordPress itself</a>.</li><li id="footnote_1_4525" class="footnote">e.g. with those of the site to be migrated or the <a href="https://codex.wordpress.org/Theme_Unit_Test">Theme Unit Test</a></li><li id="footnote_2_4525" class="footnote">e.g. according to <em><a href="https://bootscore.me/documentation/installation/">bootScore instructions</a></em></li></ol><p>The post <a href="https://fodina.de/pimp-your-bootscore/">Pimp Your bootScore</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/pimp-your-bootscore/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Data Privacy, DSGVO, and Cookies</title>
		<link>https://fodina.de/privacy-dsgvo/</link>
					<comments>https://fodina.de/privacy-dsgvo/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 09:33:10 +0000</pubDate>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=6073</guid>

					<description><![CDATA[<p>Often the website operator is told, that Data protection is complex and has to be organized by experts. But what if she doesn’t have the money for that? If it seems somehow nonsensical to shoot at a sparrow blog with the cannon of a paid team of experts? Then — maybe and with the help [&#8230;]</p>
<p>The post <a href="https://fodina.de/privacy-dsgvo/">Data Privacy, DSGVO, and Cookies</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Often the website operator is told, that Data protection is complex and has to be organized by experts. But what if she doesn’t have the money for that? If it seems somehow nonsensical to shoot at a sparrow blog with the cannon of a paid team of experts? Then — maybe and with the help of Google — she installs some popular WordPress plugins for data privacy and DSGVO and/or cookies — in the hope that all goes well. Or she investigates it in more detail. And in the end, she perhaps gathers rules of thumb, from which at least one well-workable way results. Here are my 3.7 rules of thumb, applied to my own <a href="https://fodina.de/ds-compliance/">data privacy file</a>:<span id="more-6073"></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">[ en | <a href="https://karsten-reincke.de/datenschutz-dsgvo">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>I. Use only the personal data that you really need for the functioning of your system.</li>



<li>II. If you collect personal data, tell the owners,
<ul class="wp-block-list">
<li>that you are going to do so,</li>



<li>for what purpose you use the data,</li>



<li>what legal basis authorizes you to do so,</li>



<li>with whom you share the data,</li>



<li>how long you will store it,</li>



<li>how they can ask you which data you have stored over time</li>



<li>how they can have the data deleted again.</li>
</ul>
</li>



<li>III. If you store data on the computer of your users, which they did not request directly or indirectly, ask them beforehand for permission.</li>
</ul>



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



<p>If I proceed according to this — so I make myself believe again and again — I will design my sites in a way that I avoid the roughest traps<sup><a href="https://fodina.de/privacy-dsgvo/#footnote_0_6073" id="identifier_0_6073" class="footnote-link footnote-identifier-link" title="cf. https://www.e-recht24.de/artikel/datenschutz/8451-hinweispflicht-fuer-cookies.html">1</a></sup> and errors<sup><a href="https://fodina.de/privacy-dsgvo/#footnote_1_6073" id="identifier_1_6073" class="footnote-link footnote-identifier-link" title="cf. https://www.ihk.de/halle/recht/datenschutz/sonstige-rechtsinformationen/cookie-banner-fuenf-fehler-die-sie-vermeiden-sollten--4854218">2</a></sup>. Because I always have one thing in mind: with a mere cookie banner it is not done:</p>



<ol class="wp-block-list">
<li>The first thing I consider is where my blog as a system collects personal data. The ones that I explicitly request in and with forms are the easiest for me to notice and remember. Here I know — qua office — what I do with them and to whom I pass them etc.</li>



<li>Furthermore, I am aware that IP addresses are also considered personal data — although the internet would not function without them.</li>



<li>Additionally, WordPress can collect, note, and send data to third parties — as well as the plugins I’ve activated, the JavaScript libraries I’ve installed, the Google fonts I’ve integrated, etc., etc.</li>



<li>Eventually, my commenters are usually made recognizable via the common Gravatar system.</li>
</ol>



<p>I have to sort out this mishmash:</p>



<ul class="wp-block-list">
<li>Rule (I) tells me that less is more: the fewer data I ask for and the fewer plug-ins I use, the leaner my data protection concept can be. So I clean out here, e.g. by treating productive and developing systems differently.</li>



<li>Rule (II) tells me that I must actually describe the remaining data sets in the data protection concept. So I also determine what data my plugins, font requests, and other technical components collect, how they store it, and where they pass it on.</li>



<li>Rule (III) tells me that I have to get permission to write files, i.e. cookies, to my user’s computer — either by law, as in the case of technically necessary cookies, or by consent of my user. And to get this consent, it is helpful to specify the purpose and effect.</li>
</ul>



<p></p>



<p>My next posts describe how I have implemented this in my <em>bootScore</em>-based site concretely.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  besides her <a href="http://fodina.de/pimp-your-bootscore/">normal design work</a>,
  the web-designer must deal with some legal requirements, as — for example — 
  those of the <a href="http://fodina.de/privacy-dsgvo/">DSGVO privacy</a>, of having a 
  <a href="http://fodina.de/properly-used-cookies/">cookie consent dialog</a> 
  and the respective <a href="http://fodina.de/properly-managed-cookies/">semantic</a>, 
  of having a <a href="http://fodina.de/ds-compliance/">data privacy page</a>,
  an <a href="http://fodina.de/imprint/">imprint</a>, 
  an <a href="http://fodina.de/picture-credits/">image reference page</a>, and
  a <a href="http://fodina.de/foss-compliance/">FOSS compliance page</a>.
  This post shall support you to manage your legal issues. 
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<ol class="footnotes"><li id="footnote_0_6073" class="footnote">cf. <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_1_6073" class="footnote">cf. <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://fodina.de/privacy-dsgvo/">Data Privacy, DSGVO, and Cookies</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/privacy-dsgvo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Extra Fonts for Specific Cases</title>
		<link>https://fodina.de/fonts-for-special-occasions/</link>
					<comments>https://fodina.de/fonts-for-special-occasions/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 08:37:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=6058</guid>

					<description><![CDATA[<p>bootstrap and bootScore use SCSS variables — as we know. Grouping fonts is done by variables. And we can define two groups. This is sufficient if we want to use only two font families. But if we want to use extra fonts — for example, a special google font in our menus -, we need [&#8230;]</p>
<p>The post <a href="https://fodina.de/fonts-for-special-occasions/">Extra Fonts for Specific Cases</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em>bootstrap</em> and <em>bootScore</em> use SCSS variables — as <a href="https://fodina.de/suitable-web-fonts/">we know</a>. Grouping fonts is done by variables. And we can define two groups. This is sufficient if we want to <a href="https://bootscore.me/documentation/google-fonts/">use <em>only two font families</em></a>. But if we want to use extra fonts — for example, <a href="https://fonts.google.com/">a special google font</a> in our menus -, we need to do things differently:<span id="more-6058"></span></p>



<p>To group fonts, the file <code>bootstrap/_variables.scss</code> provides the variables <code>$font-family-base</code>, <code>$font-family-sans-serif</code>, <code>$font-family-monospace</code> and <code>$font-family-code</code>. A variable <code>$font-family-serif</code> does not exist. If we overwrite <em>family-base</em> in our <code>_bscore_variables.scss</code> file, we redefine the default. If we want to use a deviant font for our headings, we have to redefine the variables <code>$headings-font-family</code> and <code>$display-font-family</code>. This is sufficient if we want to use <em>only two font families</em>. Here is a way to use more groups:</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">[ en | <a href="https://karsten-reincke.de/fonts-fuer-besondere-anlaesse">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>Define the variable <code>$menu-font-family: 'PT Sans', sans-serif, !default;</code> in your child theme file <code>scss/_bscore_variables.scs</code></li>



<li>Add the following lines to your child theme file <code>scss/_bsscore-custom.scs</code>:</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>Assign the new class to the widgets <code>Footer 1</code> to <code>Footer 4</code> containing a menu list via <code>&lt;ul class="footerSubMenu"&gt;</code>.</li>
</ul>



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



<p>Again, briefly, about the need to do that:</p>



<p>Menus usually look better with sans-serif fonts. If we have already assigned a sans-serif font to the <code>$font-family-base</code> variable, everything is fine. But if we have assigned a serif font and want to have a deviant font for our selectors, we must select a sans-serif font for the headlines and for the menus. <em>bootScore</em> has embedded the main menu into a <em>div</em> with the ID <code>bootscore-navbar</code>. We can reuse that. But for the submenus in the footer area, we must define a corresponding class and assign it to the lists manually.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  when the web designer has completed her <a href="http://fodina.de/pimp-your-bootscore/">work</a>
  on <a href="http://fodina.de/without-any-blurred-images/">good illustrations</a>, 
  she can relax and integrate <a href="http://fodina.de/two-on-one-stroke/">tags and clouds</a> 
  into her site, <a href="http://fodina.de/masonry-with-three-colums/">improve</a> 
  her <a href="http://fodina.de/masonry-survey/">overview page</a> 
  and design <a href="http://fodina.de/an-own-landingpage/">her own landing page</a>. 
  Whether the <a href="http://fodina.de/away-what-distracts/">resulting fullness</a> 
  really benefits her own reader, 
  whether it can  <a href="http://fodina.de/a-leaner-landing-page/">become slimmer</a> 
  and <a href="http://fodina.de/context-sensitive-sidebars/">how</a>, 
  whether more <a href="http://fodina.de/understated-post-links/">discreet references</a> 
  and <a href="http://fodina.de/fonts-for-special-occasions/">specific</a> 
  <a href="http://fodina.de/suitable-web-fonts/">fonts</a> 
  also increase the readability, 
  all this she should nevertheless consider while implementing these features. This post supports 
  these steps towards a personalized bootScore site.
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<p>The post <a href="https://fodina.de/fonts-for-special-occasions/">Extra Fonts for Specific Cases</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/fonts-for-special-occasions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Suitable Web-Fonts</title>
		<link>https://fodina.de/suitable-web-fonts/</link>
					<comments>https://fodina.de/suitable-web-fonts/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Wed, 05 Apr 2023 10:24:43 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=5952</guid>

					<description><![CDATA[<p>Selecting good fonts is a matter of design, getting suitable web-fonts a matter of knowledge. Not only, if we need some for special cases. With bootScore we can incorporate Google Fonts directly. We are even told how to host them locally, so we can bypass the notice in the privacy policy. Nevertheless, we have to [&#8230;]</p>
<p>The post <a href="https://fodina.de/suitable-web-fonts/">Suitable Web-Fonts</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Selecting good fonts is a matter of design, getting suitable web-fonts a matter of knowledge. Not only, if we need <a href="https://fodina.de/fonts-for-special-occasions/">some for special cases</a>. With <em>bootScore</em> we can incorporate Google Fonts directly. We are even told <a href="https://bootscore.me/documentation/google-fonts/">how to host them locally</a>, so we can bypass the <a href="https://fodina.de/ds-compliance/">notice</a> in the <a href="https://fodina.de/ds-compliance/">privacy policy</a>. Nevertheless, we have to get a little involved with <em>Bootstrap</em> as well:<span id="more-5952"></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">[ en | <a href="https://karsten-reincke.de/passende-web-fonts">de</a> ]</div></div></div></div>



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



<ul class="wp-block-list">
<li>Choose from the <a href="https://fonts.google.com/">Google Fonts</a>:
<ul class="wp-block-list">
<li>a font with serifs (e.g. pt-serif or noto-serif),</li>



<li>a matching sans-serif font (e.g. pt-sans or noto-sans),</li>



<li>a matching monospace font (pt-mono or noto-sans-mono)</li>



<li>and maybe a special font for headlines (e.g. arima-madurai or eb-garamond)</li>
</ul>
</li>



<li>Select each font after another in the <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a> and
<ul class="wp-block-list">
<li>leave the charset on <em>latin</em> * select — if available</li>



<li>select — if available — the sizes 400 and 700.</li>



<li>select — if available — the styles regular, regular italic, bold and bold italic.</li>



<li>copy the <code>font-face-code</code> created in <em>google-webfonts-helper</em> into the file <code>scss/_bscore_custom.scss</code>.</li>



<li>download the zip-package from *google-webfonts-helper</li>
</ul>
</li>



<li>Create a folder <code>fonts</code> in your child theme.</li>



<li>Unzip all downloaded zip packages in the folder <code>fonts</code>.</li>



<li>Extend the file <code>scss/_bscore_variables.scss</code> with the lines:</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> Background</h2>



<p>Dealing with <em>Fonts</em> is — in terms of concept and content — <em>a wide field</em><sup><a href="https://fodina.de/suitable-web-fonts/#footnote_0_5952" id="identifier_0_5952" class="footnote-link footnote-identifier-link" title="cf. https://kinsta.com/de/blog/html-fonts/">1</a></sup>:</p>



<p>In typography, it is common to distinguish between <em>serif fonts</em> and <em>sans-serif fonts</em>. Serif fonts are better for printed running text because their horizontal extensions on the letter lead the eye in a better way. On the other hand, it was long thought that sans-serif fonts were more readable on screens. However, the finer the screens became over time, the finer the serifs could be displayed. The readability increased, and the eyes tired less. Thus — today — it is said that there is <a href="https://www.website-freiburg.de/leitfaden_fuer_schrift_kombinationen_auswahl_der_besten_webfonts_und_schriftarten_fuer_deine_website/">no longer any real difference in legibility</a>: Serif fonts and sans-serif fonts can be used equally.</p>



<p>Using only one font for all, however, gets boring. At least the headings and body text should differ. On the other hand, too many fonts reduce readability due to the graphical unrest. And readability and immediate perceptibility is the measure of quality. Thus, the modern web designer works with pairs, one font for the headline, and one for the body text. This is why we are so often ‘recommended’ <a href="https://www.fontpair.co/all">font pairs</a> today, where the fonts are quite <a href="https://www.pagecloud.com/blog/best-google-fonts-pairings">wildly combined</a>.</p>



<p>In this context, the distinction between <em>font-family</em> and <em>font-face</em> is also important. With the CSS statement <code>font-family: XYZ;</code> we tell the browser — imprecisely speaking — that it should display the text in an HTML tag with the font <em>XYZ</em>. In fact, however, we are telling it to display the text with a suitable font from the <strong>font family</strong> <em>XYZ</em>. With the CSS statement <code>@font-face {...}</code><sup><a href="https://fodina.de/suitable-web-fonts/#footnote_1_5952" id="identifier_1_5952" class="footnote-link footnote-identifier-link" title="cf. https://www.w3schools.com/cssref/css3_pr_font-face_rule.php">2</a></sup>, we have previously told it that a certain well-designed font from a certain font family (<code>font-family: XYZ</code>) with a certain style (<code>font-style: [normal|italic]</code>) and a certain weight (<code>font-weight: [&lt;400&lt;...&lt;700&lt;]</code>) is available and where to find it. It is then up to the browser to pick the most suitable font out of the group <em>font-family XYZ</em> for a particular place in the HTML source code. After all, it must not only display the font itself but also take into account the specifications ‘<em>normal, italic, bold, bold-italic</em>’.<sup><a href="https://fodina.de/suitable-web-fonts/#footnote_2_5952" id="identifier_2_5952" class="footnote-link footnote-identifier-link" title="cf. https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/">3</a></sup></p>



<p>If a specified font is not available — for example, because the browser could not download or understand it — then the browser chooses another ‘sans-serif’ resp. ‘serif’ font from those that are accessible. If a font of a font family does not exactly fit the other required properties, the browser can ‘produce’ them by tilting or amplifying a font computationally. However, such ‘calculated’ fonts look worse than those explicitly designed that way.<sup><a href="https://fodina.de/suitable-web-fonts/#footnote_3_5952" id="identifier_3_5952" class="footnote-link footnote-identifier-link" title="Therefore it is important to provide the desired font family at least in the weights '400' and '700' and respectively in the types 'regular' and 'italic'">4</a></sup>.</p>



<p>So, in principle, the web designer cannot be sure how her text will actually look on a reader’s computer. To increase the likelihood that the designer will be able to provide her reader with what she intends, the CSS statement <code>font-family: XYZ;</code> may combine several font families — up to the generic <code>serif</code>, <code>sans-serif</code>, or <code>monospace</code> family. The browser assures — for each letter — to take the first font from that family, with which it can display the letter as requested. Whether and how well this works also depends on the type and quality of the browser. To offer the designer even more certainty, the concept of <em>Web Safe Fonts</em> has emerged<sup><a href="https://fodina.de/suitable-web-fonts/#footnote_4_5952" id="identifier_4_5952" class="footnote-link footnote-identifier-link" title="cf. https://www.w3schools.com/cssref/css_websafe_fonts.php">5</a></sup>: Fonts from that she knows that they are (mostly) available on the devices. From these fonts, she can choose a substitute that does not meet her design ideas optimally, but still well.</p>



<p>With respect to our context <em>bootScore</em> and <em>Bootstrap</em>, this creates a strategy for integrating Google fonts locally<sup><a href="https://fodina.de/suitable-web-fonts/#footnote_5_5952" id="identifier_5_5952" class="footnote-link footnote-identifier-link" title="The alternative would be to load the fonts directly from Google font servers on a case-by-case basis. That makes your work easier. And complicates your privacy concept: Because when downloading, Google asks for user data, i.e. your reader's data. The cause for that is your site. Therefore you have to point this out in your data protection concept. So it's better if you download the fonts yourself, integrate them into your site, and deliver them yourself.">6</a></sup>:</p>



<p>We choose our preferred font pair and use — as recommended by <em>bootScore</em> — the <a href="https://gwfh.mranftl.com/fonts">google-webfonts-helper</a> to download the corresponding Google fonts and insert the also generated <code>@font-face</code> instructions into file <code>scss/_bscore_custom.scss</code>.</p>



<p>In the file <code>scss/_bscore_variables.scss</code> we then apply the <em>Bootstrap</em> methodology to decide for which HTML elements the fonts should be used:</p>



<p>With <em>Bootstrap</em>, we specify the ‘main font’ via the variable <code>$font-family-base</code>. This can be the family of a serif font or a sans-serif font. Via the variable, <code>$font-family-sans-serif</code> we specify the main sans-serif font. There is no variable <code>$font-family-serif</code>. If we want to use a different family for the headings than the general main font, the variables <code>$headings-font-family</code> and <code>$display-font-family</code> would be responsible for this. Using this way, we easily can combine all combinations.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  when the web designer has completed her <a href="http://fodina.de/pimp-your-bootscore/">work</a>
  on <a href="http://fodina.de/without-any-blurred-images/">good illustrations</a>, 
  she can relax and integrate <a href="http://fodina.de/two-on-one-stroke/">tags and clouds</a> 
  into her site, <a href="http://fodina.de/masonry-with-three-colums/">improve</a> 
  her <a href="http://fodina.de/masonry-survey/">overview page</a> 
  and design <a href="http://fodina.de/an-own-landingpage/">her own landing page</a>. 
  Whether the <a href="http://fodina.de/away-what-distracts/">resulting fullness</a> 
  really benefits her own reader, 
  whether it can  <a href="http://fodina.de/a-leaner-landing-page/">become slimmer</a> 
  and <a href="http://fodina.de/context-sensitive-sidebars/">how</a>, 
  whether more <a href="http://fodina.de/understated-post-links/">discreet references</a> 
  and <a href="http://fodina.de/fonts-for-special-occasions/">specific</a> 
  <a href="http://fodina.de/suitable-web-fonts/">fonts</a> 
  also increase the readability, 
  all this she should nevertheless consider while implementing these features. This post supports 
  these steps towards a personalized bootScore site.
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<ol class="footnotes"><li id="footnote_0_5952" class="footnote">cf. <a href="https://kinsta.com/de/blog/html-fonts/">https://kinsta.com/de/blog/html-fonts/</a></li><li id="footnote_1_5952" class="footnote">cf. <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_2_5952" class="footnote">cf. <a href="https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/" class="broken_link">https://technicalcommunicationcenter.com/2020/06/10/whats-a-font-font-family-typeface-font-face/</a></li><li id="footnote_3_5952" class="footnote">Therefore it is important to provide the desired font family at least in the weights ‘400’ and ‘700’ and respectively in the types ‘regular’ and ‘italic’</li><li id="footnote_4_5952" class="footnote">cf. <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_5_5952" class="footnote">The alternative would be to load the fonts directly from Google font servers on a case-by-case basis. That makes your work easier. And complicates your privacy concept: Because when downloading, Google asks for user data, i.e. your reader’s data. The cause for that is your site. Therefore you have to point this out in your data protection concept. So it’s better if you download the fonts yourself, integrate them into your site, and deliver them yourself.</li></ol><p>The post <a href="https://fodina.de/suitable-web-fonts/">Suitable Web-Fonts</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/suitable-web-fonts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Discreet References to Previous Posts</title>
		<link>https://fodina.de/understated-post-links/</link>
					<comments>https://fodina.de/understated-post-links/#respond</comments>
		
		<dc:creator><![CDATA[Karsten Reincke]]></dc:creator>
		<pubDate>Fri, 31 Mar 2023 14:42:29 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bootScore]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://127.0.0.1/wpd.fd/?p=5946</guid>

					<description><![CDATA[<p>In bootScore Toppings, I’ve already offered two slim landing pages: mylap-sp1rp1 and mylap-sp0rp1. Both show the important things first: The blog topic. And the most recent post. One of them additionally puts the most recent Sticky Post in front of the other. But if we nevertheless want to show our readers the one or other [&#8230;]</p>
<p>The post <a href="https://fodina.de/understated-post-links/">Discreet References to Previous Posts</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In <a href="https://github.com/kreincke/bsToppings"><em>bootScore Toppings</em></a>, I’ve already offered two slim landing pages: <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp1rp1">mylap-sp1rp1</a> and <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp0rp1">mylap-sp0rp1</a>. Both show the important things first: The blog topic. And the most recent post. One of them additionally puts the most recent <em>Sticky Post</em> in front of the other. But if we nevertheless want to show our readers the one or other sticky post more, we need a solution for integrated discreet references to previous posts:<span id="more-5947"></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">[ en | <a href="https://karsten-reincke.de/dezente-post-verlinkung">de</a> ]</div></div></div></div>



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



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



<li>Open <code>Appearance/Widgets</code>.</li>



<li>Copy the widget <code>Recent Posts with Thumbnails</code> into your general <code>Sidebar Widget</code> and configure it:
<ul class="wp-block-list">
<li>Set the number of posts to show to 1, maximum 2.</li>



<li>Select <em>Show only sticks posts</em>.</li>



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



<li>Set the number of characters to show to 144.</li>



<li>Set the width of the thumbnail to show to 120, the height to 75.</li>



<li>Enable the option <em>Use aspect ratios of original thumbnails</em>.</li>
</ul>
</li>



<li>Set up your site to <a href="https://fodina.de/an-own-landingpage/">use your own specific landing page</a>.</li>



<li>Download the landing page <a href="https://github.com/kreincke/bsToppings/tree/main/mylap-sp0rp1">mylap-sp0rp1</a>.</li>



<li>Copy it into your child theme under the name <em>mylap.php</em>.</li>
</ul>



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



<p>The idea of this change is simple:</p>



<p>We only mark posts as sticky posts that outshine topicality anyway. That’s why we also want to point them to our readers. But we leave it at one or two posts. Sticky posts should not displace our recent posts.<sup><a href="https://fodina.de/understated-post-links/#footnote_0_5947" id="identifier_0_5947" class="footnote-link footnote-identifier-link" title="And yes, that also means that we implement our sticky tags over and over again. Otherwise, it gets boring.">1</a></sup> Our previous landing page <code>mylap-sp1rp1</code> put the sticky posts in front of the most recent ones. This can be done more elegantly and discreetly:</p>



<p>We install the plugin <a href="https://wordpress.org/plugins/recent-posts-widget-with-thumbnails/">Recent Posts Widget With Thumbnails</a>. It claims to be Open-Source software, in the repository the file <a href="https://plugins.trac.wordpress.org/browser/recent-posts-widget-with-thumbnails/trunk/README.txt">Readme.txt</a> refers to the GPL‑2.0 and <a href="https://plugins.trac.wordpress.org/browser/recent-posts-widget-with-thumbnails/trunk/LICENSE.txt" class="broken_link">the GPL‑2.0 license text</a> is also located there. So we are on the side of the good guys here.</p>



<p>After that, we configure the plugin to help our reader. True to the maxim, less is more. And because we’ve thus moved the sticky posts to our general sidebar, we no longer need the landing page that shows both. So we can move to <em>my-landing-page-stickposts-0-recentposts‑1</em>. </p>



<p>Bingo.</p>


<hr class="wp-block-separator has-alpha-channel-opacity">
<h5 class="wp-block-heading"><i class="fa-solid fa-road"></i> And how does this …</h5>
  <p class="myPageContext">… support our 
  <a href="http://fodina.de/bootscore-migration/">migration</a> to 
  <a href="https://bootscore.me/">bootScore</a>? Well,
  when the web designer has completed her <a href="http://fodina.de/pimp-your-bootscore/">work</a>
  on <a href="http://fodina.de/without-any-blurred-images/">good illustrations</a>, 
  she can relax and integrate <a href="http://fodina.de/two-on-one-stroke/">tags and clouds</a> 
  into her site, <a href="http://fodina.de/masonry-with-three-colums/">improve</a> 
  her <a href="http://fodina.de/masonry-survey/">overview page</a> 
  and design <a href="http://fodina.de/an-own-landingpage/">her own landing page</a>. 
  Whether the <a href="http://fodina.de/away-what-distracts/">resulting fullness</a> 
  really benefits her own reader, 
  whether it can  <a href="http://fodina.de/a-leaner-landing-page/">become slimmer</a> 
  and <a href="http://fodina.de/context-sensitive-sidebars/">how</a>, 
  whether more <a href="http://fodina.de/understated-post-links/">discreet references</a> 
  and <a href="http://fodina.de/fonts-for-special-occasions/">specific</a> 
  <a href="http://fodina.de/suitable-web-fonts/">fonts</a> 
  also increase the readability, 
  all this she should nevertheless consider while implementing these features. This post supports 
  these steps towards a personalized bootScore site.
  </p><hr class="wp-block-separator has-alpha-channel-opacity">

<ol class="footnotes"><li id="footnote_0_5947" class="footnote">And yes, that also means that we implement our sticky tags over and over again. Otherwise, it gets boring.</li></ol><p>The post <a href="https://fodina.de/understated-post-links/">Discreet References to Previous Posts</a> appeared first on <a href="https://fodina.de">FODINA 4 FOSS</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fodina.de/understated-post-links/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
