Pergunta

SP novato aqui.Estou tentando entender, em seguida, personalizar um built-in de item de modelo de estilo (copiado do ItemStyle.xsl arquivo) abaixo.

1 Onde posso encontrar as funções OuterTemplate.*?

2 Eu deveria me adicionar outro campo para apresentar e obter a entrada do usuário, como na imagem abaixo, onde posso adicioná-lo?

Fields

<xsl:template name="ImageRight" match="Row[@Style='ImageRight']" mode="itemstyle">
    <xsl:variable name="SafeLinkUrl">
        <xsl:call-template name="OuterTemplate.GetSafeLink">
            <xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="SafeImageUrl">
        <xsl:call-template name="OuterTemplate.GetSafeStaticUrl">
            <xsl:with-param name="UrlColumnName" select="'ImageUrl'"/>
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="DisplayTitle">
        <xsl:call-template name="OuterTemplate.GetTitle">
            <xsl:with-param name="Title" select="@Title"/>
            <xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
        </xsl:call-template>
    </xsl:variable>
    <div class="item">
        <xsl:if test="string-length($SafeImageUrl) != 0">
            <div class="image-area-right">
                <a href="{$SafeLinkUrl}">
                  <xsl:if test="$ItemsHaveStreams = 'True'">
                    <xsl:attribute name="onclick">
                      <xsl:value-of select="@OnClickForWebRendering"/>
                    </xsl:attribute>
                  </xsl:if>
                  <xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'">
                    <xsl:attribute name="onclick">
                      <xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/>
                    </xsl:attribute>
                  </xsl:if>
                  <img class="image" src="{$SafeImageUrl}" title="{@ImageUrlAltText}">
                    <xsl:if test="$ImageWidth != ''">
                      <xsl:attribute name="width">
                        <xsl:value-of select="$ImageWidth" />
                      </xsl:attribute>
                    </xsl:if>
                    <xsl:if test="$ImageHeight != ''">
                      <xsl:attribute name="height">
                        <xsl:value-of select="$ImageHeight" />
                      </xsl:attribute>
                    </xsl:if>
                  </img>
                </a>
            </div>
        </xsl:if>
        <div class="link-item">
          <xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
            <a href="{$SafeLinkUrl}" title="{@LinkToolTip}">
              <xsl:if test="$ItemsHaveStreams = 'True'">
                <xsl:attribute name="onclick">
                  <xsl:value-of select="@OnClickForWebRendering"/>
                </xsl:attribute>
              </xsl:if>
              <xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'">
                <xsl:attribute name="onclick">
                  <xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/>
                </xsl:attribute>
              </xsl:if>
              <xsl:value-of select="$DisplayTitle"/>
            </a>
            <div class="description">
                <xsl:value-of select="@Description" />
            </div>
        </div>
    </div>
</xsl:template>
Foi útil?

Solução

Isso soa para mim como se você já tem uma versão copiada do ItemStyle.xsl e quer saber como personalizar o XSLT?Se este for o caso, existem algumas XSLT postagens no blog, no http://paylord.wordpress.com o que deve ajudar você a começar.

Desde SP2010 tem sido muito mais fácil adicionar novos campos, você simplesmente precisa adicioná-los ao seu XSLT e um novo "slot" vai aparecer em seus Campos Para Exibir como acima, onde você pode, em seguida, escolha a coluna que você gostaria de mapear a ele.Por exemplo:

<xsl:value-of select="@Newfield" />

Isto irá dar-lhe um novo slot chamado NewField, onde você pode digitar na coluna da lista.

Você também perguntou sobre onde encontrar OuterTemplate.Tanto o ContentQueryMain.xsl e o Cabeçalho.xsl são ligadas através do CQWP.A maioria das referências, tais como OuterTemplate estão em ContentQueryMain.xsl.

Outras dicas

Para adicionar um campo personalizado

1.Adicionar uma Consulta de Conteúdo da Web Part a uma página

2.Editar as propriedades do arquivo de Web Part para exibir campos personalizados.Para acessar o .webpart arquivo para a Web, sobre a Web Part menu Editar, clique em Exportar.

O SharePoint Server 2010 gera um .webpart arquivo com o conjunto completo de propriedades que estão disponíveis para esta Web Part.A .webpart arquivo é um arquivo XML que você pode editar usando um editor de texto.

3.No .webpart arquivo, localize o CommonViewFields propriedade.Use esta propriedade para especificar os campos adicionais que você deseja exibir na Web Part.Adicionar interna nomes das colunas e o tipo.

<property name="CommonViewFields" type="string">KB_x0020_Title,Text;Product,Text;</property>

4.Mapear esses interno nomes de coluna para as colunas " Título e Descrição que estão presentes nas transformações XSLT.Para fazer isso, edite o DataColumnRenames propriedade.

<property name="DataColumnRenames" type="string">KB_x0020_Title,Title;Product,Description</property>

5.Salve o .webpart arquivo localmente.

6.Na página Web, exclua o Conteúdo da Peça Web de Consulta que você adicionou na etapa 1.

7.Importar .webpart arquivo e adicionar a Web Part para a sua página.Para importar .webpart arquivo, clique em Página, clique em Adicionar Peças Web e, em seguida, clique em Importar.Procure o .peça web de ficheiro e, em seguida, clique em Upload.

8.Arraste a Peça Web para a zona apropriada na página.A Web Part deverá apresentar a Base de dados de Conhecimento Título e o nome do produto.Referência

Para fazer alterações nas colunas a ser apresentado e a forma como ele deve ser exibido de edição xsl.Consulte este para obter mais informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top