So integrieren Sie den Facebook-/Twitter-Publisher nachträglich

18. Feb 2011

Weblication® CMS verfügt im aktuellen Beispielprojekt (BASE) bereits standardmässig über die integrierte Schnittstelle zu Twitter und Facebook (Facebook-/Twitter-Publisher). Individuell aufgebaute oder ältere Projekte können Sie natürlich ebenso nachrüsten.

Bei vorhandener Lizenz für diese Schnittstellen können Sie somit diese Funktionalität auch in Ihrem Projekt nutzen.

Schritt 1: Ablegen der globalen Skripte für Twitter und Facebook

Kopieren Sie aus BASE folgende Dateien aus dem globalen Projekt:

  • /wGlobalProject/wGlobal/scripts/php/wPublishOnFacebook.php
  • /wGlobalProject/wGlobal/scripts/php/wTweetMessage.php

Fügen Sie diese Dateien in Ihr globales Projekt unter dem entsprechenden Dateipfad ein. Vergessen Sie nicht, die Pfade in den Dateien auf Ihr globales Projekt anzupassen.

Schritt 2: Variablendatei erweitern

Ergänzen Sie die Variablendatei innerhalb Ihres globalen Projektes um die erforderlichen Variablen für den Facebook-/Twitter-Publisher.

Sofern Sie die Funktionalitäten innerhalb von Listen gleich aktivieren wollen, setzen Sie die Auswahlboxen auf "yes".

Tipp:
Sie können die aktuellen Code-Fragmente auch aus dem aktuellen Beispielprojekt kopieren!

Beispiel: Auszug aus der default.wVariables.php des globalen Projektes

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<wVariables version="5.0">
  ...
  <headline text="Twitter"/>
  <variable description="Twittern von Meldungen aktivieren" key="tweet_news_active" type="char.yesno">no</variable>
  <variable description="Twitter Name" key="twitter_name" type="char.default"/>
  <variable description="Twitter Kunden Schlüssel" key="twitter_consumer_key" type="char.password"/>
  <variable description="Twitter Kunden Geheimnis" key="twitter_consumer_secret" type="char.password"/>
  <headline text="Facebook"/>
  <variable description="Meldungen bei Facebook veröffentlichbar machen" key="facebook_news_active" type="char.yesno">no</variable>
  <variable description="Facebook Name" key="facebook_name" type="char.default"/>
  <variable description="Facebook Kunden Schlüssel" key="facebook_consumer_key" type="char.password"/>
  <variable description="Facebook Kunden Geheimnis" key="facebook_consumer_secret" type="char.password"/>
  ...
</wVariables>

Schritt 3: Zeilentemplate der Liste erweitern

Fügen Sie innerhalb des Zeilentemplates der betreffenden Liste die Schaltflächen für Twitter und Facebook hinzu. Das Beispiel ist so vorbereitet, dass die Schaltflächen für den Objekttyp "news" gesetzt werden. Sollten Ihre Listeneinträge einem anderen Objekttyp zugeordnet sein, passen Sie dies entsprechend an.
Passen Sie die Pfade des globalen Projektes (z.B.: /IhrGlobalesProject) auf Ihr globales Projekt an.

Tipp:
Sie können die aktuellen Code-Fragmente auch aus dem aktuellen Beispielprojekt kopieren! In der aktuellsten BASE ist dies mittlerweile über CSS-Only Funktionalität umgesetzt. Verwenden Sie den nachfolgend gelisteten Code daher nur in älteren Projekten, die noch kein CSS-Only unterstützen (z.B. BASE 1.x Projekte)!

Beispiel: Auszug aus der default.wFilelist.php des globalen Projektes

...
  <xsl:template match="/wFilelist">
    <div>
      <ul class="listDefault">
        <!-- Schleife über alle Dateien -->
        <xsl:for-each select="files/file">
          <li class="listEntry clickable" onclick="location.href='{@path}';">
            <!-- Schaltflächen zum Bearbeiten und löschen der Dateien -->
            <wsl:buttonDelete path="{@path}" caption="" title="" icon="delete" style="float:right" questionConfirm="Soll die Datei endgültig gelöscht werden?"/>
            <wsl:buttonEdit path="{@path}" caption="" title="" icon="edit" style="float:right"/>
            <xsl:if test="php:functionString('wVariables::getValue', 'tweet_news_active', '/IhrGlobalesProject') = 'yes'">
              <xsl:if test="wd:extension/wd:object[@type = 'news']">
                <wsl:button path="{@path}" caption="" title="{php:functionString('wTexts::getTextUser', 'be_tweet_this_message')}" onclick="wShowMaskTweetMessage('/IhrGlobalesProject/wGlobal/scripts/php/wTweetMessage.php', '{php:functionString('wVariables::getValue', 'twitter_name', '/IhrGlobalesProject')}', '{php:functionString('wStringconverter::removeLinebreaks', php:functionString('wStringconverter::maskAposJS', php:functionString('htmlspecialchars', wd:extension/wd:meta/wd:description/text())))}', '{$wHostURL}{@path}')" icon="add_twitter" class="wglButton beButtonEditRow" hideInEditor="1"/>
              </xsl:if>
            </xsl:if>   
            <xsl:if test="php:functionString('wVariables::getValue', 'facebook_news_active', '/IhrGlobalesProject') = 'yes'">
              <xsl:if test="wd:extension/wd:object[@type = 'news']">
                <wsl:button path="{@path}" caption="" title="{php:functionString('wTexts::getTextUser', 'be_publish_on_facebook')}" onclick="wShowMaskShareOnFacebook('/IhrGlobalesProject/wGlobal/scripts/php/wPublishOnFacebook.php', '{php:functionString('wVariables::getValue', 'facebook_name', '/IhrGlobalesProject')}', '{php:functionString('wStringconverter::removeLinebreaks', php:functionString('wStringconverter::maskAposJS', php:functionString('htmlspecialchars', wd:extension/wd:meta/wd:description/text())))}', '{$wHostURL}{@path}')" icon="add_facebook" class="wglButton beButtonEditRow" hideInEditor="1"/>
              </xsl:if>
            </xsl:if>
...

Schritt 4: Textbausteine erweitern

Erweitern Sie die Textdatei des globalen Projektes um die im Beispiel verwendeten Textbausteine.

Beispiel: Auszug aus der de.wTexts.php des globalen Projektes

<?php $version="1.0"; $encoding="UTF-8"; ?>
<?php exit; ?>
<wTexts version="5.0">
  ...
  <text key="be_tweet_this_message">Diese Meldung bei Twitter einstellen</text>
  <text key="be_publish_on_facebook">Auf Facebook veröffentlichen</text>
  ...
</wTexts>

Sie können nun bei vorhandener Lizenz in eingeloggtem Zustand die Funktionalitäten zum veröffentlichen von  Beiträgen in Twitter und Facebook nutzen. Über die weiterführenden Links unten erhalten Sie weitere Informationen hierzu.