كيفية الرجوع إلى / تحديد موقع قالب موقع SharePoint 2010؟

StackOverflow https://stackoverflow.com/questions/2211318

  •  18-09-2019
  •  | 
  •  

سؤال

قمت بإنشاء قالب موقع من موقع أساسي تم إنشاؤه نفسه من قالب موقع الفريق الأساسي. الآن أود استخدام قالب الموقع هذا خارج الويب حيث تم إنشاؤه، لذلك يتصرف مثل قالب عالمي.

على سبيل المثال، أود أن يظهر قالب جديد الخاص بي في قائمة القوالب التي تظهرها Get-Spwebtem أو نسخ ملف "STP" إلى نظام اختبار وإنشاء موقع جديد هناك باستخدام القالب المجمعة.

هل هذا ممكن؟ إن لم يكن ممكنا، ما هي الطريقة الصحيحة الشارقة؟

(باستخدام SharePoint 2010 Server RC)

شكرا!

هل كانت مفيدة؟

المحلول

أعتقد أنني أعرف كيفية القيام بذلك الآن. سأكون ممتنا لأي شخص أن يزن في الطريق "الصحيح" للقيام بذلك، لأن هذه العملية تبدو غريبة قليلا.

باستخدام UI، يمكنك إنشاء صفحة ويب باستخدام قالب الأسهم داخل مجموعة المواقع وتخصيصه عن طريق إضافة القطع إليها، وإزالة الأشياء التي لا تريدها. بعد ذلك، مع تحديد الويب الذي ترغب في استخدامه كقالب، كمسؤول، اختر "إعدادات الموقع" ثم "حفظ الموقع كقالب" حيث يمكنك بعد ذلك تعيين اسم ملف وسمعة واسم ودية ونص وصفي. القيام بذلك يضع القالب الناتج في قاعدة البيانات بشكل واضح ويخلق مرجعا يعيش في قائمة "الحلول" أيضا على صفحة إعدادات الموقع. (إذا قمت بزيارة قائمة "الحلول"، فيمكنك النقر فوق القالب وحفظه كملف محلي يمكن تحميله بعد ذلك إلى موقع آخر مفيد).

من المعروف بشكل معقول أنه يمكنك إنشاء موقع في التعليمات البرمجية عن طريق إضافة صفحة ويب جديدة إلى مجموعة موقع الويب، والتي تبدو وكأنها:

SPWeb newWeb = subSite.Webs.Add(
                "pathtoweb",
                "Title of New Web",
                "Web Description",
                1033,
                template, 
                false, false);

حيث "القالب" هنا هو مثيل Spwebtemplate الذي تريد استخدامه. إذا كانت واحدة من قوالب الأسهم، يمكنك عادة الرجوع إليها بالاسم على سبيل المثال، "STS # 0" وما إلى ذلك بدلا من مرجع القالب الموضح هنا. والسؤال هو: كيفية الحصول على اسم القالب المخصص لاستخدامه في مكالمة API.

للعثور على "اسم" القالب الذي تم إنشاؤه، لقد استخدمت PowerShell مثل هذا

$x = get-spsite http://machine/managedpath/sitecollectionname
$x.GetWebTemplates(1033) 

التي ألقت جميع القوالب على هذه الفرعية، وشملت قوالب معدلة في النهاية بعدم أسماء مريحة للغاية التي قمت بنسخها ولصقها في برنامجي C #.

لم أستكشف جميع التباديل هنا، على سبيل المثال، ربما يمكنك فقط استخدام الاسم GUID في مكالمة .add، ولكن ليكون صريحا، هذا هو التسلسل الذي عمل بالنسبة لي. أحب أن أسمع أن هذا جنون - واسمحوا لي أن أعرف شيئا أكثر أناقة:

        // or any of the other hundred ways to do this...
        SPSite s = new SPSite("your url here");
        SPWeb subSite = s.RootWeb;

        // 1033 is the locale id for English
        SPWebTemplateCollection wtc = s.GetWebTemplates(1033);
        // use the name for the index
        SPWebTemplate template = 
            wtc["{8925048C-DF71-guidguidguidguid}#MyTemplate"];

        SPWeb newWeb = subSite.Webs.Add(
                "pathtoweb",
                "Title of New Web",
                "Web Description",
                1033,
                template, 
                false, false);

نقطة مشاركة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top