هل يمكنني الحصول على كافة الحقول في عنصر (في Sitecore)؟

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

سؤال

وأنا أحاول كتابة استعلام SQL للحصول على كل الحقول في بند معين في Sitecore.

لأقول إنني عالقة يضع ملطفة.

وانا التخمين لقد القيام ببعض النفس الانضمام على الطاولة المجالات، ولكن أنا الحصول على نفسي في عقدة.

وأي شخص يحصل على أي أفكار؟

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

المحلول

في أي من الحالات يجب أن تحاول أبدا الاستعلام عن قاعدة بيانات Sitecore نفسك. تغيير قاعدة البيانات مع مرور الوقت وهذا من شأنه كسر الشفرة. وبدلا من ذلك، استخدم Item.Fields. هذا هو مجموعة التي تحتوي على كافة الحقول الضرورية. إذا كنت ترغب في التأكد من أن يتم تحميل كافة الحقول (تحميل حقا، وليس كسول تحميلها)، مما يمكنك استخدام Item.Fields.ReadAll ().

وتحرير: أيضا، أن نضع في اعتبارنا أن الاستعلام لا يسمح لك لبناء عنصر، لذلك كنت أفتقد سلوك القيم الافتراضية وعدم استخدام Sitecore التخزين المؤقت ذكي على الإطلاق

نصائح أخرى

وحاول الاتصال Sitecore.Context.Item.Fields.ReadAll() قبل النظر عن حقل.

والمحاولة الأولى، ولكن لا يقوم بإرجاع كافة المجالات

SELECT I2.Name FROM
 Items AS I 
 JOIN UnversionedFields AS UF ON I.ID = UF.ItemId
 JOIN VersionedFields AS V ON I.ID = V.ItemId
 JOIN SharedFields AS S ON I.ID = S.ItemId 
 JOIN Items AS I2 ON I2.ID = UF.FieldId OR I2.ID=V.FieldId OR I2.ID = S.FieldId    
 WHERE I.ID = '110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9'
 GROUP BY I2.Name

ومن خلال الدعوة item.Fields تحصل على حقول العنصر الذي كنت قد عينت في القوالب الخاصة بك وكذلك حقول مستوى Sitecore الموجودة على كل مادة. استخدام التعليمات البرمجية أدناه إذا كنت تريد فقط الحقول التي عرفتها في القوالب الخاصة بك. بالطبع، هذا على افتراض أسماء الحقول الخاصة بك لا تبدأ مع "__"

// Get Fields directly from the Item
List<string> fieldNames = new List<string>();
item.Fields.ReadAll();
FieldCollection fieldCollection = item.Fields;
foreach (Field field in fieldCollection)
{
    //Use the following check if you do not want 
    //the Sitecore Standard Fields 
    if (!field.Name.StartsWith("__"))
    {
        fieldNames.Add(field.Name);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top