باتباع المستندات هنا Developing Discourse Themes & Theme Components
يعمل المثال الذي يستخدم السجل بشكل جيد ولكن عندما أقوم بتحديث الأداة إلى
{{mount-widget widget="hamburger-categories"}}
لا يظهر شيء… لقد مررت بالقائمة في https://github.com/discourse/discourse/tree/main/app/assets/javascripts/discourse/app/widgets . وبعض الأدوات تظهر وبعضها لا؟
في النهاية أريد استخدام قائمة الفئات فقط كأزرار داخل رأس مخصص، مثل هذا…
هل قمت بتفعيل الشريط الجانبي الجديد؟ سيؤدي ذلك إلى إخفاء قائمة الهامبرغر القديمة.
قم بتأكيد إعدادات موقعك على النحو التالي:
إعجاب واحد (1)
لقد تم ضبطه على “Header Dropdown” لقد قمت بتغييره إلى “Legacy” ولكن نفس المشكلة
إعجاب واحد (1)
تظهر قائمة الهامبرغر، لكنني أريد الفئات فقط
{{mount-widget widget="hamburger-menu"}}
اعتذر، لقد أربكتني تسمية الأداة. ما هو منفذ الإضافة الذي تستخدمه؟
نفس ما هو موجود في المستندات
<script type="text/x-handlebars" data-template-name="/connectors/below-footer/fancy-footer">
<div class="footer">
<div class="wrap">
<p>قبل تحميل أداة مصغرة</p>
{{mount-widget widget="home-logo"}}
{{mount-widget widget="hamburger-categories"}}
<p>بعد تحميل أداة مصغرة</p>
</div>
</div>
</script>
إذا نظرت إلى الدليل، يمكنك رؤية أن منفذ المكون الإضافي يأخذ سمة showFooter. من المحتمل أن تكون هذه القيمة خاطئة. مما يعني أن كلًا من التذييل والأداة المرفقة لن تظهر.
على أي حال، لماذا يوجد منفذ تذييل لقطعة أثرية للرأس؟
استخدم مكون سمة منفذ المكون الإضافي لاختيار موقع أفضل في رأيي.
إنه يُظهر… يُظهر widget=“home-logo”
كما أنه يُظهر widget=“hamburger-menu”
لكنه لا يُظهر widget=“hamburger-categories”
مجرد اختبار، لا يهم حقًا أين هو الآن
إعجاب واحد (1)
هل هناك أي أخطاء في وحدة التحكم؟
ماذا يظهر في المفتش؟
يمكنني رؤية الفئات هنا، لذا فهي موجودة بالفعل..
تخميني هو أن هذه هي المشكلة:
if (!siteSettings.allow_uncategorized_topics) {
categories = categories.filter(
(c) => c.id !== site.uncategorized_category_id
);
}
const moreCount = categories.length - maxCategoriesToDisplay;
categories = categories.slice(0, maxCategoriesToDisplay);
return this.attach("hamburger-categories", { categories, moreCount });
},
footerLinks(prioritizeFaq, faqUrl) {
const { attrs, capabilities, settings, site, siteSettings, state } = this;
const links = [];
if (settings.showAbout) {
links.push({
route: "about",
className: "about-link",
لا توجد سمة فئات يتم تمريرها عبر منفذ التذييل
ولكن عندما أستخدم widget=“hamburger-menu” في منفذ التذييل، فإنه يعرض الفئات.
لقد جربت منافذ أخرى حول الصفحة، ولا تزال المشكلة قائمة.
لو كنت قد نشرت رسالة الخطأ هذه في البداية، لكان ذلك قد وفر الكثير من الوقت.
انظر دائمًا إلى وحدة التحكم.
قد تحتاج إلى إرفاق هذا باستخدام JavaScript بمجرد استرداد قائمة الفئات بنفس الطريقة التي تعمل بها قائمة Hamburger.
إعجاب واحد (1)
نعم بالتأكيد والمزيد من الوقت إذا لم تذكر الوثائق “الآن ، أصبح تحميل الأداة بسيطًا جدًا ، كل ما تحتاج إلى معرفته هو اسم الأداة. هذا كل شيء”
إعجاب واحد (1)
نعم، حدسي هو أن هذا الدليل قديم؟
هل تعرف أين يمكنني العثور على أحدث دليل؟ أنا أطير هنا وهناك أحاول العثور على إجابات ولكن أهبط على منشورات عمرها 4 سنوات. هل هناك وثيقة دليل فعلية في مكان ما؟
نعم، يمكنني أن أرى كيف يمكن أن يكون ذلك مضللاً… من الناحية الفنية، يقوم بتثبيت العنصر، ولكن هذا لا يعني أن البيانات التي يتطلبها العنصر متاحة تلقائيًا.
يمكنك محاولة تمرير الفئات إلى العنصر بهذه الطريقة:
{{mount-widget widget="hamburger-categories" args=(hash categories=this.site.categories)}}
إعجاب واحد (1)
عظيم شكرًا.. نعم هذا منطقي ويظهر الآن
بما أننا نتحدث عن التسجيل في وحدة التحكم هنا
عند اتباع المستندات Developing Discourse Themes & Theme Components
عندما أحاول
<script type="text/discourse-plugin" version="0.8">
console.log(Discourse)
</script>
لست متأكدًا مما إذا كنت أحصل على “كائن عام لوحدة التحكم”، بل أحصل على فئة
وإذا حاولت شيئًا مثل
<script type="text/discourse-plugin" version="0.8">
const settings = Discourse.SiteSettings;
console.log(settings)
</script>
أحصل على هذا الخطأ
THEME 6 'BCN Theme - watched locally'] Deprecation notice: use injected siteSettings instead of Discourse.SiteSettings
إعجاب واحد (1)