Adicionar (substituir) hiperlink para imagens em uma Web Part de apresentação de slides da Biblioteca de Imagens

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/60563

Pergunta

Em nosso site de equipe, adicionamos uma web part que é uma web part "Apresentação de slides da biblioteca de imagens".Atualmente, clicar nas imagens que rolam na apresentação de slides direciona o navegador apenas para o URL da imagem.Gostaria de modificar isso para apontar para qualquer outro URL de minha escolha.

Tentei forçar uma modificação do javascript gerado pela webpart da apresentação de slides usando meu próprio script na página.Olhando para a fonte, a Biblioteca de Imagens usa um var que realmente define os links, é chamado de "linkArray":

var pictureArray = ['http://intranet/HomePicture/_w/image1.jpg','http://intranet/HomePicture/_w/image2.jpg'];
var linkArray = ['http://intranet/HomePicture/image1.jpg','http://intranet/HomePicture/image2.jpg'];
var titleArray = ['',''];
var descriptionArray = ['',''];
var heightArray = [268,268];
var widthArray = [383,383];

Usando meu próprio script, tentei limpar o array e inserir meus próprios links nele, mas por algum motivo os links apenas são atualizados (ou seja,a função do meu script é executada) após as primeiras alterações de imagem.Mesmo que eu altere manualmente a tag href da primeira imagem, o script ainda pensa que a "primeira" imagem é a segunda para a qual a apresentação de slides rola.Existe uma maneira de forçar a função a substituir o javascript existente imediatamente no carregamento da página?

Foi útil?

Solução 3

Depois de esgotar todas as outras opções ao tentar forçar a imagem da web part da página a começar a alterar os links do primeiro item carregado, encontrei uma solução alternativa que é simplesmente usar uma função de rotação em meu array.Como o comportamento compensa as associações de imagem para hiperlink em 1 item, girar a matriz que atribuo aos links de imagem em 1 também os combina perfeitamente.

Outras dicas

Como funciona a web part de apresentação de slides da biblioteca de imagens

Itens de imagem são recuperados via SPQuery de Biblioteca de Imagens e os resultados são salvos na matriz interna de ImageInfo entradas

public struct ImageInfo
    {
      public int width;
      public int height;
      public string src;
      public string fullImageSrc;
      public string title;
      public string descrption;
    }  

e essas informações são renderizadas no lado do cliente e armazenadas nos seguintes arrays:

var pictureArray = [...];
var linkArray = [...];
var titleArray = [...];
var descriptionArray = [...];
var heightArray = [...];
var widthArray = [...];

e depois disso o controle Slideshow é inicializado no lado do cliente:

 var slideshowObject = new SlideshowObject(slideshowObjectId, pictureArray, linkArray, titleArray, descriptionArray, heightArray, widthArray, transitionTime, mode);
 ChangePic(slideshowObject);    

Como manipular imagens para apresentação de slides

Isso poderia ser alcançado com a substituição SlideshowObject construtor, nesse caso é possível fornecer lógica adicional quando SlideshowObject é criado.

Por exemplo, o exemplo a seguir demonstra como excluir imagens sem títulos da exibição em Apresentação de slides:

//Overridden SlideshowObject constructor with method for excluding pictures  
function SlideshowObjectInitializer() {
   SlideshowObject = (function(SlideshowObjectOrig) {

      return function() {

       //Exclude pictures
       if(typeof excludePic != 'undefined') {
          for(i=0,k=0;i<arguments[1].length;i++) {
             var imageInfo = {src: arguments[1][i], fullImageSrc: arguments[2][i], title: arguments[3][i],description: arguments[4][i], height: arguments[5][i], width: arguments[6][i]};
             if(excludePic(imageInfo)) {
                for(j=1;j<7;j++) {
                    arguments[j].splice(i, 1);
                }  
                i--;
             } 
          }
       }
       //Call original SlideshowObject constructor 
       return SlideshowObjectOrig.apply(this, arguments);
     };
  })(SlideshowObject);
}   

//Exclide pictures with no titles
function excludePic(imageInfo) {
    return (imageInfo.title.length == 0);
}

ExecuteOrDelayUntilScriptLoaded(SlideshowObjectInitializer, 'imglib.js');

Por favor siga meu blog publicar para detalhes.

Parece que a primeira imagem já foi renderizada antes da execução do javascript.A ideia é localizar e alterar "manualmente" a tag href dessa imagem diretamente no DOM.

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