Ajouter (remplacer) un lien hypertexte vers des images dans un composant WebPart Diaporama de bibliothèque d'images

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

Question

Sur le site de notre équipe, nous avons ajouté un composant WebPart qui est un composant WebPart « Diaporama de bibliothèque d'images ».En cliquant actuellement sur les images qui défilent dans le diaporama, le navigateur est dirigé uniquement vers l'URL de l'image.Je voudrais modifier cela pour pointer vers toute autre URL de mon choix.

J'ai essayé de forcer une modification du javascript généré par le composant WebPart diaporama en utilisant mon propre script sur la page.En regardant la source, la bibliothèque d'images utilise une variable qui définit réellement les liens, elle s'appelle "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];

En utilisant mon propre script, j'ai essayé d'effacer le tableau et d'y insérer mes propres liens, mais pour une raison quelconque, les liens ne font que se mettre à jour (c'est-à-direla fonction de mon script s'exécute) après les premiers changements d'image.Même si je modifie manuellement la balise href de la première image, le script pense toujours que la "première" image est la deuxième vers laquelle défile le diaporama.Existe-t-il un moyen de forcer la fonction à écraser le javascript existant immédiatement lors du chargement de la page ?

Était-ce utile?

La solution 3

Après avoir épuisé toutes les autres options pour tenter de forcer l'image de la partie Web de la page pour commencer à modifier les liens du premier élément qui charge, j'ai trouvé une solution de contournement qui consiste simplement à utiliser une fonction de rotation sur mon tableau.Étant donné que le comportement compense les associations d'image-to-hypertexte par 1 élément, la rotation de la matrice que j'ignent aux liaisons d'image par 1 les correspond aussi bien.

Autres conseils

Fonctionnement du composant WebPart Diaporama de la bibliothèque d’images

Les éléments d'image sont récupérés via SPQuery à partir de Bibliothèque d'images et les résultats sont enregistrés dans un tableau interne de ImageInfo entrées

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

et ces informations sont restituées côté client et stockées dans les tableaux suivants :

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

et après cela, le contrôle Slideshow est initialisé côté client :

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

Comment manipuler des images pour un diaporama

Cela pourrait être réalisé en remplaçant SlideshowObject constructeur, dans ce cas, il est possible de fournir une logique supplémentaire lors de la création de SlideshowObject.

Par exemple, l'exemple suivant montre comment exclure les images sans titre de leur affichage dans le diaporama :

//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');

S'il vous plaît suivez mon blog poste pour plus de détails.

Il semble que la première image soit déjà rendue avant l'exécution de votre javascript.L'idée est de localiser et de modifier "manuellement" la balise href de cette image directement dans le DOM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top