SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




In SharePoint Blog-Beiträgen die Anzeige des Textkörpers auf einige Zeilen begrenzen

Unbeantwortet Dieser Beitrag hat 9 Antworten

Ohne Rang
11 Beiträge
Olga erstellt 4 Dez. 2012 15:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe eine Frage.

Im SharePoint gibt es ja eine Blog-Webseite. Die eingestellten Beiträge werden dann auf der Blog-Webseite als Webpart dargestellt. Die ausgewählte Ansicht des Beiträge-Webparts ist ja die Überblickansicht, damit man nicht nur den Titel des Beitrags, sondern auch evtl. Bilder, Textkörper usw. sehen kann.

Meine Frage ist es jetzt. ob man dieses Textkörper auf eine bestimmte Anzahl der Zeichen/oder Zeilen begrenzen kann. Damit z.B. nur die ersten 5 Zeilen des Textkörpers angezeigt werden und dann einfach nur wieter steht, um weiterlesen zu können.

Ich hoffe, ich habs verständlich erklärt. Würde mich über die Hilfe freuen.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 5 Dez. 2012 08:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das geht durch Anpassungen im XSL: http://sympmarc.com/2009/01/20/displaying-the-first-n-words-of-a-long-text-column-with-xsl/

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
11 Beiträge
Olga Als Antwort am 6 Dez. 2012 12:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

wenn ich einfach den Textkürper auf 250 Zeichen begrenzen will, muss ich im XSL diese Zeile einfügen.

<xsl-value-of disable-output-escaping="yes" select="ddwrt:Limit(string(@Body), 250, '...')">

Da ist ein kleiner Ausschnitt der XSL. Im rot markierten Bereich ist ja dieses Teil mit dem Textkörper. Wo genau muss ichs einfügen. Kannst du mir da vll. weiterhelfen.

 

Danke

 

 

 <div class="ms-PostFooter">
              <xsl:for-each select="$Fields">           
                <xsl:if test="@Name!='Title' and @Type!='Note' and not(@Name='PostCategory' and $thisNode/@PostCategory='')">
                      <xsl:choose>
                        <xsl:when test="@Name='Author'"><span class="ms-postfootercolor"><xsl:value-of select="'von '"/></span><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text><xsl:value-of select="$thisNode/@Author.span" disable-output-escaping="yes" /></xsl:when>
                        <xsl:when test="@Name='PublishedDate'"><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;&amp;nbsp;</xsl:text><span class="ms-postfootercolor"><xsl:value-of select="'am'"/><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;</xsl:text><xsl:value-of select="$thisNode/@PublishedDate" /></span></xsl:when>               
                      </xsl:choose>
            </xsl:if>
        </xsl:for-each>
        <div>
            <xsl:for-each select="$Fields">           
                  <xsl:if test="@Name='PostCategory' and not ($thisNode/@PostCategory='')">
            <xsl:value-of select="'Kategorie'" /><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">:&amp;nbsp;</xsl:text><xsl:apply-templates select="$Fields[@Name='CategoryWithLink']" mode="Computed_body"><xsl:with-param name="thisNode" select="$thisNode"/></xsl:apply-templates>
            </xsl:if>
        </xsl:for-each>
        </div>
      </div>
        <xsl:if test="$ShowBody=1">
          <div class="ms-PostBody">
            <div>
              <xsl:apply-templates select="$Fields[@Name='Body']" mode="PrintField">
                <xsl:with-param name="thisNode" select="$thisNode"/>
                <xsl:with-param name="Position" select="$Position"/>
              </xsl:apply-templates>
            </div>
          </div>

        </xsl:if>
        <div class="ms-PostFooter">
              <xsl:for-each select="$Fields">           
                <xsl:if test="@Name ='Permalink' or @Name ='EmailPostLink' or @Name ='NumCommentsWithLink'">
                    <xsl:choose>
                          <xsl:when test="@Name='Permalink' or @Name='EmailPostLink' or @Name='NumCommentsWithLink'"><xsl:apply-templates select="." mode="PrintFieldWithDisplayFormLink"><xsl:with-param name="thisNode" select="$thisNode"/><xsl:with-param name="Position" select="$Position"/></xsl:apply-templates><xsl:if test="@Name='Permalink' or @Name='EmailPostLink'"><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;|&amp;nbsp;</xsl:text></xsl:if></xsl:when>
                          <xsl:when test="$thisNode/@*[name()=current()/@Name]!=''"><xsl:apply-templates select="." mode="PrintFieldWithDisplayFormLink"><xsl:with-param name="thisNode" select="$thisNode"/><xsl:with-param name="Position" select="$Position"/></xsl:apply-templates><xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes">&amp;nbsp;|&amp;nbsp;</xsl:text></xsl:when>
                    </xsl:choose>
            </xsl:if>
          </xsl:for-each>
        </div>
          </td>

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Dez. 2012 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dahinter steckt ein <xsl:template>, das in der Seite nicht sichtbar ist. Du kannst entweder den gesamten rot markierten Block durch die Zeile von oben ersetzen (damit wird das Template komplett überschrieben) oder Du klickst in SharePoint Designer im Reiter Entwurf (oder Design?) auf XSLT anpassen. Dadurch wird das XSL in die aktuelle Seite kopiert und Du kannst sie anpassen.

[quote user="Olga"]<xsl-value-of disable-output-escaping="yes" select="ddwrt:Limit(string(@Body), 250, '...')">[/quote]

Das hat allerdings einen sehr großen Nachteil. Das Feld enthält ja HTML-Quellcode und wenn Du den einfach abschneidest erhältst Du sehr wahrscheinlich ungültiges HTML.

Stelle Dir vor dort steht <div style="..."><img src="..." /></div> und Du nimmst davon nur die ersten x Zeichen. Was ich oben verlinkt habe, umgeht dieses Problem (ist aber natürlich aufwendiger).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
11 Beiträge
Olga Als Antwort am 6 Dez. 2012 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Laut der Berschreibung, die du oben verlinkt hast, muss man ja die zwei Templates:

<xsl:template name="StripHTML">

<xsl:template name="FirstNWords">

im mein XSL einfach nur einfügen oder? An welcher Stelle müssen die Templates hinzugefügt werden.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Dez. 2012 15:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Einfach irgendwo zwischen zwei andere <xsl:template></xsl:template>. Also nicht innerhalb eines anderen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
11 Beiträge
Olga Als Antwort am 7 Dez. 2012 09:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielen Dank.

Ich habe noch eine kleine Frage.

<xsl:value-of  select="ddwrt:Limit(string(@Body), 250, 'weiterlesen')" disable-output-escaping="yes">

Das rot markierte Text wird ja nach dem Abschneiden des Textkörpers angezeigt. Wie schafft man, dass beim Klicken auf "weiterlesen" dann Volltext angezeigt wird.

 


Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Dez. 2012 15:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da wird's dann kompliziert ;-)

Im Prinzip muß man dazu den gesamten Text in ein ausgeblendetes (display:none) <div> ausgeben und dann beim Klick auf "Weiterlesen" per JavaScript sichtbar machen. Eine passende Anleitung dazu habe ich nicht parat...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
4614 Beiträge
Michael Greth Als Antwort am 10 Feb. 2014 12:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielleicht hilft das

https://www.nothingbutsharepoint.com/sites/eusp/pages/jquery-for-everyone-collapse-text-in-list-view.aspx

Besten Gruß

Michael