Question

Tout d'abord, disons que j'ai 2 collections de sites dans une seule application Web au port 80:

  1. Collection de sites principaux: /
  2. Collection de sites imbriqués: / Sites / Special /

    Ainsi, disons que j'ai un module dans une fonction Site-Collection Collection, du but d'ajouter quelques scripts sur une collection de sites (cela pourrait tout aussi facilement être déployé comme des contrôles ScriptLink dans une page Master personnalisée. Pour une collection de sites, ma question s'applique toujours):

      <CustomAction Id="script1" Location="ScriptLink" ScriptSrc="/Style%20Library/mySolution/custom1.js" />
      <CustomAction Id="script2" Location="ScriptLink" ScriptSrc="/_layouts/mySolution/custom2.js" />
    

    Les deux options ci-dessus sont correctes tant que la fonctionnalité est activée dans la collection principale de site "racine". Toutefois, si je n'ai déployé que la fonctionnalité de la collection de sites «spéciale» secondaire (nouvelle limite d'isolation, chemin d'identité imbriquée), ne sera-t-elle pas la pause de référence Script1?

    Le navigateur rechercherait Custom1.js au chemin suivant:

    / Bibliothèque de style / MySolution / Custom1.js

    Quand vraiment le fichier est à

    / Sites / Bibliothèque spéciale / Style / MySolution / Custom1.js

    Le second scriptLink fonctionne toujours, puisque _Layouts est global, et donc le navigateur trouve toujours /_layouts/mysolution/custom2.js, quelle que soit la collecte de site la fonctionnalité déployée.

    correct? Je suppose que je fais juste un chèque de santé mentale.

    Je suis tenté par l'accès facile aux scripts Je peux modifier sur une base ad hoc dans la bibliothèque / style /, mais, déteste l'idée qu'une telle fonctionnalité (tel que conçue ci-dessus) ne fonctionnerait que dans les collections de site de niveau racine. .

Était-ce utile?

La solution

Essayez ceci pour le premier lien car il est destiné à aborder exactement ce que vous voyez, bien que certains contrôles n'élargissent pas la valeur.

<CustomAction Id="script1" Location="ScriptLink" ScriptSrc="~SiteCollection/Style%20Library/mySolution/custom1.js" />

Quant à savoir si cela devrait être dans _Layouts ou la bibliothèque de style est un débat qui a rusé depuis la bêta SP2007 en 2006 sans gagnant clair.La règle générale est que si le fichier est quelque chose qui peut être modifié par les propriétaires de sites, il devrait aller dans "Bibliothèque de style" et si le fichier est quelque chose que seuls les administrateurs devraient pouvoir modifier, puis il passe dans _Layouts.Je simplifie, bien sûr, car il y a au moins une douzaine de différences entre les deux emplacements.

Ceci est juste un autre des endroits où la réponse officielle SharePoint répond à tout s'applique: "Cela dépend"

Autres conseils

S'il vous plaît regarder les réponses sur Cette question aussi . C'est un sujet complexe, sans réponse "correcte". Je pense que Chris O'Brien l'a résumé assez bien dans sa réponse.

Mon opinion personnelle est que cela dépend :) Dans votre cas, puisque vous voulez utiliser le même fichier .js dans deux (ou plus) collections de site, je le mettrais certainement sous "_Layouts".

Une autre question est la suivante: avez-vous des étapes de développement? Production d'acceptation de développement? Avez-vous une sorte de contrôle source? Si la réponse à l'une ou l'autre d'entre elles est oui, alors je le mettrai encore définitivement sous "_Layouts". Surtout parce que c'est un fichier javascript. Pourquoi? Étant donné que JavaScript contient également un "code", il effectue une sorte de logique, parfois elle a même une logique commerciale (cache quelque chose si certains champs sont remplis, valident les données avant de soumettre, etc.). Si tout votre code .NET passe par le développement -> acceptation avant d'aller à la production, pourquoi le code JavaScript serait-il "privilégié" en allant directement à la production? Pourquoi ne devrait-il pas passer par les mêmes phases de test? Bien sûr, il devrait.

Et si vous avez le contrôle de la source et que vous utilisez un module pour déployer votre fichier dans une bibliothèque de documents comme "GhostableIlibrary", je pense que c'est le début d'un cauchemar si vous laissez les gens à le personnaliser. Imaginez que vous ayez déployé votre fichier (JS ou CSS) via le module sur 10 collections de sites. Sur 5 d'entre eux, les administrateurs de site ont modifié le fichier. Cela signifie que votre fichier est maintenant découplé à partir de la version du système de fichiers. Lorsque vous souhaitez ensuite déployer des modifications globales dans ce fichier et que vous souhaitez qu'il soit appliqué sur toutes les collections de sites, il échoue silencieusement sur ceux où le fichier a été personnalisé. Vous aurez besoin d'abord pour revenir à ces fichiers sur la définition de site, puis votre fichier poussé par le module sera pris en compte. Mais vous perdrez toute modification que les administrateurs de site ont fait. Ou, si vous souhaitez conserver certaines de ces modifications et la mettre dans votre version sur le contrôle de la source ... Vous devrez prendre chaque fichier personnalisé, un par un, le comparer manuellement avec celui sur le contrôle de la source et fusionner les modifications. . Non, je pense que cela vaut mieux être évité.

Mais vous savez mieux votre ferme SharePoint et comment il va être utilisé. Il existe donc peut-être certaines particularités de votre configuration qui exigent de mettre ces fichiers dans la bibliothèque de style. Si oui, dites-moi s'il vous plaît, je suis curieux :)

acclamations!

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