Einzelne Elemente publizieren

von Thomas Huber 20. Juni 2009 19:10

Nach dem ich nun den ReSharper auf das sharpcms-Projekt los gelassen habe, startete ich wieder durch mit meinem alten Vorhaben. Die einzelnen Elemente einer sharpcms-Seite sollten ausgeblendet werden können. Genauer gesagt, sollen die Elemente erste dann auf der website sichtbar sein, wenn der Admin diese publizieren will.

Im Backend muss man nun für jedes neu angelegte Element die Checkbox "Publish" anhaken, um dieses zu veröffentlichen. Diese neue Funktion hat keine negativen Auswirkungen auf ältere, bestehende Websites. Die Funktion selber kommt erst dann zu tragen, wenn man seine eigenen Templates anpasst.

Der Publish-Status kann in den XSLT-Templates über die Variable @publish abgerufen werden.

Beispiel:


<!-- (-PageContentl.xslt) //-->
<xsl:template mode="show" match="element[@type='publishsample']">
  <xsl:if test="@publish = '' or @publish = 'true'">
    <xsl:if test="not(text = '') and text">
      <xsl:value-of disable-output-escaping="yes" select="text" />
    </xsl:if>
  </xsl:if>
</xsl:template>


<!-- (Settings.xml) //-->
<publishsample>
  <item name="Text" attribute="text" type="textarea" />
</publishsample>

In diesem Beispiel nenne ich das Template "publishsample". Die ertse If-Anweisung überprüft den Status für die Veröffentlichung. Damit bei bestehenden Websites nicht gleich alle Elemente ausgeblendet werden, ignoriere ich das Ganze wenn der Status leer ist (@publish = '').

Tags: , ,

sharpcms