Logo sprachabhängig ausgeben

Bei unterschiedlichem Logo je Sprachprojekt können Sie die Ausgabe über eine Abfrage der Sprachvariablen steuern.

Dieser Artikel führt die Umsetzung eines sprachabhängigen Logo auf Basis eines BASE Classic Projektes an. In einer BASE (Mobile First) gehen Sie grundsätzlich ähnlich über Abfragen vor, was dort im globalen logo.wGlobal.php Template vorgenommen werden kann.

BASE (Mobile First)
BASE Classic
BASE (Mobile First)

Anpassungen in einem BASE (Mobile First) Projekt

In aktuellen Mobile First Projekten finden Sie das Template für das Logo im Verzeichnis der globals-Templates. Nachfolgend finden Sie ein einfaches Beispiel, wie Sie abhängig von der Projektsprache ein anders Logo (z.B. wegen anderem Schriftzug/Text) einbinden können.

Beispiel: Auszug aus /[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/globals/logo.wGlobal.php

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wslPre="http://weblication.de/5.0/wsl" xmlns:wslPost="http://weblication.de/5.0/wsl" xmlns:wslEditorPre="http://weblication.de/5.0/wsl" xmlns:wsl="http://weblication.de/5.0/wsl" xmlns:wd="http://weblication.de/5.0/wd" xmlns:php="http://php.net/xsl" exclude-result-prefixes="wd wslEditorPre wslPre wslPost wsl php" version="1.0">

  <xsl:template name="logo">
    <a id="logo" href="{$wProjectPath}/index.php" title="{php:functionString('wTexts::getText', 'goto_homepage')}">
      <!-- ... -->
      <!-- ### Hier definieren Sie die Variable für den Pfad der sprachabhängigen Logo-Bilddatei (z.B. als png-Grafik) ### --> 
      <xsl:variable name="logoFurtherLanguage"><xsl:value-of select="$wGlobalProjectPath"/>/wGlobal/layout/images/logo-<xsl:value-of select="$wLanguageProject"/>.png</xsl:variable>
      <!-- ### ENDE ### -->
      <xsl:choose>
        <xsl:when test="php:functionString('wVariables::getValue', 'logo_embed', $wGlobalProjectPath) = '1'">
          <wsl:php>          
            try{
              print wStringconverter::prepareXmlToEmbed(wReadWrite::readFile('<xsl:value-of select="php:functionString('wVariables::getValue', 'logo_src', $wGlobalProjectPath)"/>'));
            }
            catch(gException $e){}
          </wsl:php>
        </xsl:when>
        <xsl:otherwise>
          <xsl:choose>
            <!-- ##### Hier wird das sprachabhängige Logo über ein img-Tag eingebunden, wenn der Dateipfad existiert und nicht das de-Projekt aufgerufen ist ##### --> 
            <xsl:when test="$wLanguageProject != 'de' and php:functionString('wRepository::documentExists', $logoFurtherLanguage)">
              <img src="{$logoFurtherLanguage}" alt="Logo {$wLanguageProject}"/>
            </xsl:when>
            <!-- ##### ENDE ##### --> 
            <xsl:when test="php:functionString('wVariables::getValue', 'logo_src_full', $wGlobalProjectPath) != ''">
              <img class="logoImg" src="{php:functionString('wVariables::getValue', 'logo_src', $wGlobalProjectPath)}" alt="{php:functionString('wVariables::getValue', 'logo_alt', $wGlobalProjectPath)}"/>
              <img class="logoImgFull" src="{php:functionString('wVariables::getValue', 'logo_src_full', $wGlobalProjectPath)}" alt="{php:functionString('wVariables::getValue', 'logo_alt', $wGlobalProjectPath)}"/>
            </xsl:when>
            <xsl:otherwise>
              <img src="{php:functionString('wVariables::getValue', 'logo_src', $wGlobalProjectPath)}" alt="{php:functionString('wVariables::getValue', 'logo_alt', $wGlobalProjectPath)}"/>            
            </xsl:otherwise>
          </xsl:choose>
          <xsl:if test="php:functionString('wVariables::getValue', 'logo_src_onscroll', $wGlobalProjectPath, '', 'wDoNotAdd') != ''">
            <img class="logoImgOnScroll" src="{php:functionString('wVariables::getValue', 'logo_src_onscroll', $wGlobalProjectPath, '', 'wDoNotAdd')}" alt="{php:functionString('wVariables::getValue', 'logo_alt', $wGlobalProjectPath)}"/>            
          </xsl:if>         
        </xsl:otherwise>  
      </xsl:choose>
    </a>
  </xsl:template>

</xsl:stylesheet>

Im o.g. Beispiel-Code finden Sie die Anpassungen jeweils zwischen den Kommentaren und können dies an Ihre Umgebung, Pfade und Vorstellungen anpassen.
Gerne können Sie über den Support auch eine Projektdienstleistung für eine Umsetzung in Auftrag geben und ein Angebot anfordern

BASE Classic

Anpassungen in einem BASE Classic Projekt

Soll in den unterschiedlichen Sprachprojekten jeweils ein anderes Logo ausgegeben werden, können Sie dies sehr einfach über eine Variable steuern. Dies wird anhand der BASE Classic Projektbasis beispielhaft angeführt.

Erweitern Sie die globale Template-Datei includes.global.php im Bereich des Logo-Templates, indem Sie das Datenfeld für das Logo um die Sprachvariable ergänzen:

...
  <!-- Logo: Hier wird das Logo aus der logo.php ausgelesen und ausgegeben -->
  <xsl:template name="logo">             
    ...             

    <!-- alt: ... /wd:extension/wd:object/wd:data[@id = 'logo']/text() ...-->
    <xsl:variable name="xPathLogo">/wd:extension/wd:object/wd:data[@id = 'logo_<xsl:value-of select="$wLanguageProject" />']/text()</xsl:variable>
...

Die globale Inhaltsdatei, über die das Logo gepflegt wird (logo.php), erweitern Sie entsprechend um die weiteren Data-IDs und Pfade der Sprachbereiche:

Beispiel: Auszug aus der globalen Datei /[IHR-LAYOUT-PROJEKT]/wGlobal/content/misc/logo.php

...
    <wd:object type="logo">
      <wd:data id="logo" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/logo.png</wd:data>
      <wd:data id="logo_de" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/logo-de.png</wd:data>
      <wd:data id="logo_en" type="src.default">/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/logo-en.png</wd:data>
      <wd:data id="width" type="char.default"/>
    </wd:object>
...

Im letzten Schritt erweitern Sie die Pflegemaske für das Logo um die von Ihnen definierten Sprachpfade:

Beispiel: Inhalt des Bearbeitungstemplates /[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/logo.wDocument.php

...
      <body>      
        <!-- Maske zur Pflege des Logos -->        
        <h3 style="color:#666666;padding:4px 4px 4px 24px;font-size:18px;font-style:italic;background-repeat:no-repeat;background-position:left center;background-image:url(/weblication/grid5/gui/images/icon_medium/element_picture.gif)"><xsl:value-of select="php:functionString('wTexts::showTextUser', 'Logo', 'Logo', 'Logo')"/></h3>

        <div class="wEditorElementConfiguration" style="border:none;background:none">
          <div class="wEditorElementLabel"><xsl:value-of select="php:functionString('wTexts::showTextUser', 'Path', 'Pfad des Bildes', '')"/><span> (<xsl:value-of select="php:functionString('wTexts::showTextUser', 'Select or upload your logo', 'Laden Sie hier ein Bild hoch oder wählen Sie ein bestehendes Bild aus.', 'Sélectionnez ou téléchargez votre logo')"/>)</span></div>
          <div class="wEditorElementValue"><!-- web:text:start extensions="gif|jpg|jpeg|png" validator="/^(|.*\.(gif|jpg|jpeg|png))$/i" editor="file" preview="picture" pathIfEmpty="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images" required="1" upload="1" inputStyle="width:400px"--><xsl:value-of select="wd:extension/wd:object/wd:data[@id = 'logo']/text()"/><!-- web:text:stop --></div>
          
          <!-- weiterer Logo-Pfad eines Sprachbereiches: -->
          <div class="wEditorElementLabel"><xsl:value-of select="php:functionString('wTexts::showTextUser', 'Path', 'Pfad des Bildes (EN)', '')"/><span id="mp4FileInfo_{@uid}"> (<xsl:value-of select="php:functionString('wTexts::showTextUser', 'Select or upload your logo', 'Laden Sie hier ein Bild hoch oder wählen Sie ein bestehendes Bild aus.', 'Sélectionnez ou téléchargez votre logo')"/>)</span></div>
          <div class="wEditorElementValue"><!-- web:text:start extensions="gif|jpg|jpeg|png" validator="/^(|.*\.(gif|jpg|jpeg|png))$/" editor="file" path="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images" required="1"--><xsl:value-of select="wd:extension/wd:object/wd:data[@id = 'logo_en']/text()"/><!-- web:text:stop --></div>
...
...