قائمة طعام
مجاني
التسجيل
الصفحة الرئيسية  /  إنترنت/ قسم مقطوعة الرأس php. اعتراف بيتريكس كاره

قسم مقطوعة الرأس php. اعتراف بيتريكس كاره

يمكن تقسيم قوالب Bitrix إلى عدة أنواع:
  • قوالب المكونات المشتركة والمعقدة 2.0
  • قوالب الموقع
  • قوالب الكيانات الأخرى ( البنود البريديةوإصدارات الرسائل الإخبارية ونماذج الويب ومولدات التصدير وغير ذلك الكثير)

تتمتع قوالب المكونات أيضًا بالقدرة على استخدام محركات القوالب. من حيث المبدأ ، يمكنك توصيل أي محرك قالب ، ولكن لا أدوات مساعدةلا. إذا احتاج أي شخص إليها ، فلدي ارتباطين لملحقات الغصين والشفرة التي تعمل وتستخدم تمامًا لأنفسهم في الإنتاج. ولكن حتى هنا انحرفت Bitrixoids. يمكن استخدام محرك القوالب مع المكونات فقط. لن يعمل على توصيل محرك القالب بعارض قالب الموقع ، أو الكيانات الأخرى ، لأن لا يوجد عارض هناك.

في قوالب المكونات ، هناك لحظة مزعجة أخرى في موضعها. المكون متصل باستخدام بناء بسيط
$ APPLICATION-> IncludeComponent ("bitrix: index.section"، "template_name"،)؛
المعلمة الثانية هي اسم قالب المكون. ذلك اعتمادا على ظروف مختلفة، يمكن أن يكون موقع هذا النموذج في أكثر الأماكن غير المتوقعة:

  • بتريكس / مكونات / بتريكس / كتالوج. قسم / قوالب / اسم_قالب
  • local / المكونات / bitrix / index.section / القوالب / template_name
  • bitrix / قوالب /. افتراضي / مكونات / bitrix / index.section / template_name
  • bitrix / قوالب / site_template / مكونات / bitrix / index.section / template_name
  • local / قوالب / .default / مكونات / bitrix /atalog.section / template_name
  • local / قوالب / site_template / مكونات / bitrix / index.section / template_name
  • بتريكس / مكونات / بيتريكس / كتالوج / قوالب /. الافتراضي / بتريكس / كتالوج. القسم / اسم_قالب
  • local / قوالب / site_template / المكونات / bitrix / الكتالوج / .default / bitrix /atalog.section / template_name
وأنا لم أدرج جميع الخيارات ...

يمكن عرض قالب الموقع كمجموعة من الملفات: header.php ، footer.php (نعم ، يجب أن يحتوي الموقع على هذه الملفات) ، description.php ( وصف النظام site template) و template_styles.css (أنماط قوالب الموقع) ودليل به قوالب مكونات ومجموعة من الملفات الأقل أهمية. و هذا كل شيء. ولا تؤثر عليها بأي شكل من الأشكال ، ولا تفعل شيئًا حيال ذلك. غير قادر على التقاط محرك القالب.

ليس هناك ما يقوله عن القوالب الأخرى. يتم تخزينها ببساطة في قاعدة البيانات في شكل تخطيط مع تضمين بعض البيانات "المتغيرة" ، أو أنها غبية php، الذي يقوم بجميع الأعمال ، من جلب المعلمات من قاعدة البيانات إلى عرض المعلومات. على سبيل المثال ، يمكنك إلقاء نظرة على منشئ ملفات YML للسوق. لا جدوى من وضعها هنا ، ببساطة لأنها كبيرة بما يكفي ، حوالي 2k سطر. كل من يحتاجه سوف يبحث عنه في جوجل ، فهو يقع في /bitrix/modules/catalog/load/yandex_run.php

طبيعة الملف

كما اتضح أعلاه ، في بنية Bitrix ، كل شيء ليس جيدًا جدًا. لكن لدى Bitrix أيضًا جانبًا أكثر أهمية في الهندسة المعمارية.
Bitrix هو نصف ملف CMS. يتم التحكم في الكثير من الأشياء بواسطة نوع من الملفات:

  • بحاجة إلى صفحة - إنشاء ملف
  • أنت بحاجة إلى مجموعة من الصفحات - قم بإنشاء ملف وقم بتوصيل مكون يعمل مع حظر المعلومات
  • تحتاج إلى تعيين عنوان للصفحة - قم بتحرير الملف
  • تحتاج إلى تعيين عنوان لجميع صفحات القسم - قم بإنشاء ملف خاص file.section.php في جذر هذا القسم
  • تحتاج إلى تحرير الحقوق - قم بتحرير الملف .access.php
  • الإعدادات قبل تهيئة النظام - في ملفات dbconn.php و .settings.php و .settings_extra.php
  • result_modifier.php، component_epilog.php، init.php، .parameters.php، .description.php ....

وهناك الكثير من هذه الملفات الخاصة منتشرة عبر Bitrix. من ناحية أخرى ، يعطي هذا بعض المرونة عند العمل مع النظام. من ناحية أخرى ، يمكن أن يتحول الأمر إلى معاناة لكل من المطور ومدير الموقع. تتحول ملفات الصفحة أحيانًا إلى فوضى من كود php والتخطيط ومكونات المكونات الإضافية. نتيجة لذلك ، يمكن للمحرر المرئي تحليل هذا الملف بشكل غير صحيح ، وعند تحريره يمكنه بسهولة عرضه علامات phpفي بعض الأماكن ، مما يؤدي إلى عدم تشغيل الصفحة. أنت تقول - لا حاجة لكتابة كود php في مثل هذه الملفات؟ نعم انا اعرف. لكن Bitrix في كثير من الأحيان وليس لديها بديل يجبرك على القيام بذلك.
وفي رأسك تحتاج إلى الاحتفاظ باستمرار بالمعلومات حول نوع الملفات والبيانات التي قد تحتويها. يجب أن تحتوي الملفات المختلفة على بيانات مختلفة وبنية مختلفة ، وتحتاج إلى تذكرها لكل خيار. من الصعب البحث عنها في الوثائق في كل مرة.

بالإضافة إلى ما سبق

يمكنك أن تشتكي إلى ما لا نهاية من مدى سوء ترتيب كل شيء في Bitrix. في رأيي ، يمكن وصف كل هذه الشكاوى بعبارة واحدة - "بطريقة ما ليست النهاية". وبالفعل ، إذا أعلنت Bitrixoids فجأة عن بعض الميزات ، فإنها بطريقة ما لن تطلقها تمامًا ، ولا تنهيها ، ولا تذكرها. هناك الكثير من الأمثلة:

  • تم تنفيذه ORM - لم يكمله ، لا يمكنك استخدامه بالكامل
  • صنعت أداة تحميل تلقائي ، فهي تعمل فقط في الوحدات ، وليس وفقًا للمعايير
  • جعل من الممكن توصيل محرك القالب ، لكن لا يمكنك استخدامه في كل مكان ، وليس بالكامل
  • إلخ. إلخ.

باختصار ، سأحاول وصف بقية المشكلات التي يتعين علينا مواجهتها كل يوم.

لوحة الادارة

إذا عمل شخص ما مع لوحة الإدارة ، وأنشأ صفحاته في الجزء الإداري بالطريقة التي يقترحها Bitrix ، فسوف يفهمني. إنه مجرد جحيم. بالنسبة لأولئك الذين ليسوا على دراية ، يقترح Bitrix استخدام ملف المعكرونة لكل صفحة. على سبيل المثال ، تستحوذ صفحة عرض الطلب التفصيلي في لوحة الإدارة التي يقوم بها مطورو Bitrix على خطوط 4k. يبدأ IDE الخاص بي في التباطؤ عند عرض محتويات هذا الملف. يوجد لديك php و js و html. حسنًا ، على الأقل تخلصنا من SQL ، على الرغم من أنني متأكد من وجودها في صفحات المسؤول الأخرى.
وما منع الصفحات الإدارية من العمل بنفس المكونات غير واضح. ببساطة لا توجد طريقة لتخصيص معظم صفحات المسؤول. في حالة المكونات ، يمكن القيام بذلك في أي وقت من الأوقات.
بالمناسبة ، قام الأشخاص الطيبون بعمل وحدة ستساعدك في بناء صفحات إدارية.

إطار عمل شبيبة

يحتوي Bitrix على مكون js يعمل كنوع من إطار عمل العميل. لم يعجب أي من المطورين ذلك لعدة أسباب:
  • يكاد يكون غير موثق
  • إنه وحشي
  • إنه يكرر إلى حد كبير jquery ، وهو أمر مألوف للكثيرين

يستخدمه Bitrix كثيرًا في مكوناته ، مما يتسبب في مزيد من الغضب بين المطورين. جوهر هذه المكتبة في شكل مصغر هو 85 كيلوبايت ، وهو حجم كبير جدًا. لن تتمكن من تجنب توصيله إذا كنت تريد استخدام جميع إمكانيات Bitrix (المركب ، إدارة الأصول).

نسخ ولصق الروح

في الآونة الأخيرة ، أقل وأقل ، ولكن في كثير من الأحيان ، يصنع Bitrix شيئًا لنسخه ولصقه. إذا كنت ترغب في تعديل عمل مكون - نسخ ولصق. إذا كنت تريد إنشاء قالب التفريغ الخاص بك ، فقم بنسخ نسخة النظام والانتهاء. إذا كنت تريد عمل نفس القالب الذي لديك تقريبًا - انسخه والصقه وقم بتغييره قليلاً. ويتم الحديث عن هذا أيضًا في الدورات التدريبية للمطورين المبتدئين. ليس لدي كلمات.

إدارة الأصول و CDN

أحب حقًا طريقة إدارة الموارد في Bitrix. من حيث المبدأ ، من الممكن تسجيل مجموعة محددة من "المكتبات". كل مكتبة عبارة عن مجموعة من ملفات css / js ، والتي قد تعتمد على بعض المكتبات الأخرى. إذا قمت بتوصيل مكتبة بالصفحة ، فقبل توصيلها ، سيتم حل جميع التبعيات وسيتم إدراج جميع المكتبات التابعة في الصفحة. يبدو أن كل شيء على ما يرام ، سيتم إدراج كل مورد فقط في النموذج ملف منفصلفي برنامج نصي أو علامة ارتباط. وبفضل هذا ، هناك مواقع بها 30-50 نصًا نصيًا ونفس عدد ملفات الأنماط المتصلة.
لقد قالوا في Bitrix ، سؤال شيت ، وصنعوا علامة سحرية تجمع كل هذه الملفات في ملف واحد. وكانت هناك مواقع حيث كان هناك موقعان بدلاً من 50 نصًا ، كل منهما 300-500 كيلوبايت. منذ بعض الوقت ، عمل هذا الدمج مع الأخطاء وقام بدمج نفس الموارد عدة مرات ، ولكن يبدو الآن أنه قد تم إصلاحه.
وبعد ذلك خرجت Bitrixoids - جعلوا من الممكن تحميل جميع الموارد على خادم CDN. الذي يسقط إلى الأبد ...
ثم جاء Google Pagespeed Insights ، والذي أوصى بإسقاط جميع الموارد في أسفل الصفحة. وفي Bitrix ، قاموا مرة أخرى بعمل علامة سحرية ، والتي تحذف بغباء جميع الموارد في الجسم ، إذا لم يتم تمييزها بسمة خاصة.
ويقومون أيضًا بتوزيع إصدارات مصغرة من البرامج النصية الخاصة بهم مع المربع ، والتي يتم توصيلها عند استخدام مربع اختيار سحري آخر في لوحة الإدارة.
بشكل عام ، لا يوجد SCSS لك ، ولا TypeScript. إذا كنت ترغب في إدارة الموارد بشكل صحيح - لا تستخدم نظام Bitrix المدمج ، استخدم حزمة الويب ، والتي يمكنك بسهولة تكوين صداقات مع Bitrix.

متعدد المواقع / متعدد اللغات

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

آلية إدارة الحقوق

نحن خادعون للغاية مع هذا النظام الفرعي. غالبًا ما يكون من الصعب معرفة سبب منحك حقوق عرض كيان ، ولكن لا يمكن للمستخدم استخدامها. على سبيل المثال ، لمنح الحق في تحرير كتلة معلومات ، تحتاج إلى منح حق الوصول إلى دليل / bitrix / admin ، ومنح حقوق حظر معلومات معين ومنح الحقوق في الوحدة النمطية الرئيسية. يلزم إجراء عدد كبير جدًا من العمليات لمنح أذونات لكيان واحد. وإذا لم تكن هناك حقوق كافية ، فلن تتمكن من فهم السبب دون البحث في التعليمات البرمجية المصدر.

التكوين

لا يحتوي Bitrix على محور مركزي يسمح لك بإدارة إعدادات النظام. الإعدادات لا مركزية مرة أخرى في جميع أنحاء النظام. تتوفر الخيارات في إعدادات الوحدة ، في إعدادات المكونات ، في COption (لا يتم نقلها إلى لوحة الإدارة). في لوحة الإدارة ، يمكن تقسيم خيارات الوحدة الواحدة إلى 3-4 صفحات مختلفة ، والتي توجد في أماكن مختلفة تمامًا. يمكن تحرير urlrewrite من خلال لوحة الإدارة! الآن أيضًا .settings و .settings_extra. في بعض الأحيان يكون من غير الواضح تمامًا أيهما له أولوية أعلى ، وفي كثير من الأحيان لا يوجد تفسير كافٍ للخيارات ، والعلاقة غير واضحة. لا توجد طريقة أصلية لمشاركة التكوين بين المطورين.
يمكن أن تكون الإعدادات غير منطقية للغاية. في بعض الأحيان يصل الأمر إلى حد السخافة ... انظر إلى مكون البيانات الكبيرة - هل يمكن لشخص غير مستعد أن يكون قادرًا على تخصيصه؟

التكامل مع 1C

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

تحسين التبادل مع 1C هو أيضًا موضوع منفصل. فئة \ CIBlockCMLImport مسؤولة عن تنظيم تبادل الدليل - 5.7 كيلو سطر. إحدى الطرق الرئيسية ، والتي غالبًا ما تتطلب الامتداد - \ CIBlockCMLImport :: ImportElement ، تحتوي على أكثر من 1 ألف سطر. يكفي أن ترثها مرة واحدة ، وتحديث المنتج عدة مرات لفترة طويلة ، ويمكنك الحصول على تبادل لا يعمل مع 1C. لذلك ، لا يذهب المطورون غالبًا إلى هذه الفئة ويحاولون بطريقة ما الدخول في عملية الاستيراد باستخدام معالجات الأحداث. إن العمل مع معالجات الأحداث في Bitrix ، خاصةً في وحدة infoblocks ، ليس أيضًا تجربة ممتعة للغاية ، إذا كان ذلك فقط بسبب حقيقة أن الأحداث من نفس النوع لا يتم ترتيبها بشكل موحد ، وأن بعض الأحداث ببساطة ليست كافية.
بشكل عام ، هذا الموقف محزن كما كان من قبل.

تناقض

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

بيتريكس 24

هذا بشكل عام موضوع منفصل للمحادثة. غالبًا ما ينشأ الارتباك على أساس هذا النظام. يوجد إصداران من B24 - SaaS و Standlone. يوجد سوق لـ B24 ، لكنه يحتوي فقط على تطبيقات لإصدار SaaS! إذا كان لديك إصدار محاصر تم شراؤه مقابل 200 قطعة ، فلن تتمكن من تثبيت مثل هذه التطبيقات الشائعة مثل منشئ المستندات ، وبشكل عام لن تتمكن من تثبيت أي تطبيق من سوق Bitrix24 على Bitrix24 الخاص بك. هنا مفارقة.
بدلاً من ذلك ، سيتوفر سوق من الإصدار العادي في Bitrix24 الخاص بك. هناك العديد من الحلول المتاحة ، لكنها تتركز بشكل أساسي حول إدارة الموقع ، وليس B24.

Bitrix24 ، كما قيل لي في القسم دعم فني، هذا نظام مكتمل. إذا كنت تتدخل في عمل مكونات النظام القياسية ، فكن مستعدًا لأن هذه الوظيفة ستتعطل مع التحديثات اللاحقة. لن تعتمد عليك Bitrix في إنهاء مكونات البوابة ، على الرغم من حقيقة أنها ترسل عملائها رسميًا إلى الشركاء

بالمناسبة ، يعد تعديل المكونات في الإصدار المعبأ من B24 مهمة أخرى. المكونات التي تنشئ كود js الذي يحتوي على باستخدام أياكسمناشدات ل كود phpالذي يولد html + js استجابة لذلك. هذا مزيج جهنمي لا تريد الغوص فيه حقًا.

توثيق

يتأخر توثيق Bitrix عن تطوير المنتج بمقدار 1-1.5 سنة. الشفرة مغطاة بشكل سيئ من قبل phpDoc ، وغالبًا ما يكون التعليق الموجود أمام الفصل فقط "للعرض" ، ويتم إنشاؤه تلقائيًا في IDE.
غالبًا ما يكون أسلوب عرض التوثيق في المصادر الرسمية "مجانيًا" للغاية ، وقد لا يكون لمحتوى بعض المقالات في التوثيق أي علاقة ببيتريكس نفسها.
تحتوي دورة المطور على الكثير من المعلومات ، لكن التنسيق الذي يتم من خلاله تقديم المطور لإمكانيات النظام لا يوفر مستوى الإدراك المطلوب. إذا ذهبت إلى Symfony Cookbook ، فسيتم وضع كل شيء على الرفوف ، ويتم وصف جميع الجوانب الضرورية اعتمادًا على الإصدار. بينما في Bitrix ، تحتوي الدورة التدريبية للمطور ، وفقًا لأي مبدأ ، على معلومات منظمة عن النوى القديمة والجديدة ، والتي يتم تقديمها أولاً بشكل منفصل ، ثم مختلطة ، والتي يعاني منها المبتدئين من الصداع.

تنظيم عملية التطوير

نظرًا لخصوصية النظام ، ليس من السهل تنظيم عملية تطوير مريحة. ليس أكثر نسخة جديدةإصدار الأعمال (الذي كان في متناول اليد) بعد أن يستغرق التثبيت ، فكر في الأمر ، ما يقرب من 530 ميغا بايت
$ du -s * | sort -nr | cut -f 2- | أثناء قراءة a ؛ do -hs $ a ؛ تم تنفيذ 523M bitrix 204K تحميل 64 كيلو بايت bitrixsetup.php 56K desktop_app 20K readme.html 20K license.html 4.0K web. config 4.0K urlrewrite.php 4.0K readme.php 4.0K License.php 4.0K install.config 4.0K index.php
النصف الجيد من هذا الحجم عبارة عن ثنائيات ومثبتات ، والتي ، بشكل عام ، ليست ضرورية للتحكم في الإصدار. بشكل عام ، من المعتاد عدم إصدار نواة بتريكس. يضمن مطورو Bitrix ، كما كانوا ، تكامل النواة بأنفسهم ، وإدارة تبعيات إصدارات الوحدات النمطية المختلفة أثناء التحديثات. لكن هذا يحمل على الفور عيبًا كبيرًا واحدًا على الأقل - من المستحيل نشر مشروع يعمل بالكامل بأمر واحد من التحكم في الإصدار ، وعليك تجميعه في أجزاء: احصل على مصدر kernel من نسخة bitrix الاحتياطية ، ومصدر المطورين من git .
القاعدة أيضًا ليست على ما يرام. إذا كان بإمكانك أنت بنفسك استخدام عمليات الترحيل أثناء التطوير ، فإن Bitrix يقوم بتدوير التحديثات إلى قاعدة البيانات باستخدام البرامج النصية العادية التي لا يمكنك التحكم فيها. لذلك ، أثناء التحديثات ، لا يزال يتعين عليك نقل النسخ الاحتياطية لقاعدة البيانات من مضيف التطوير المركزي إلى مطورين آخرين.
رأى الأشخاص الطيبون ، مرة أخرى ، الأدوات التي تساعد في تنظيم كل هذا ، ولكن لسوء الحظ ، لا يزال من غير الممكن إجبار Bitrix على اتباع هذه القواعد.
رسميًا ، يسمح لك Bitrix بالحصول على نسختين من مجموعة توزيع واحدة. أحدهما للإنتاج والآخر للتنمية. إذا كان لديك العديد من المطورين في مشروع واحد ، فأنت ، كما كان ، خارج القانون) في الواقع ، يكفي قطع الاتصالات الواردة والصادرة من / إلى www.bitrixsoft.com لجهاز Bitrix ، ثم أنت يمكنهم تثبيت أي عدد تريده من نسخ التطوير ، فلن يتمكنوا من التحديث بمفردهم.

زملاء

و السؤال الأخيرالتي أود أن أتطرق إليها.
نظرًا لحقيقة أن Bitrix لديها عتبة دخول منخفضة ، فهناك الكثير من الموظفين غير المهرة بين الشركات التي تقدم خدمات في هذا السوق. صادف أن رأيت العديد من المشاريع المختلفة خلال مسيرتي (أكثر من مائة في المجموع) ، تم تنفيذها على 1C-Bitrix. أستطيع أن أقول بكل ثقة أن 95٪ منهم ارتكبوا "خطأ فادح". نادرًا ما كانت هناك مشاريع ، كان هناك شعور بنهج لتطويرها ، لكن هذه كانت قليلة فقط. هذا كله محزن جدا

الاستنتاجات

بالطبع ، لا يمكن النظر في جميع العيوب في مقال واحد. تصادف كل يوم بعض الأشياء الصغيرة التي تتداخل مع عملك كل يوم. لكن من المستحيل ببساطة التفكير في كل هذه الأشياء التافهة ، وربما عدم التفكير في أي شيء.

ما هي الاستنتاجات التي يمكن استخلاصها هنا. يعد Bitrix نظامًا معقدًا للغاية نظرًا لحقيقة أنه يحتوي على بنية خاطئة ، والعديد من العيوب التي تستمر في العيش في المنتج لفترة طويلة. من ناحية أخرى ، يعد Bitrix نظامًا بسيطًا إلى حد ما يتطلب مستوى مهارة أقل بكثير للبدء ، على عكس الأطر.
يعد دعم هذا المنتج مهمة غير مجدية للغاية مقارنة بمنتجات مثل Symfony و Laravel و Yii. المنتج مغرم جدًا بوضع المتحدث في عجلات كل من المطورين عديمي الخبرة وذوي الخبرة ، مما قد يؤثر بدوره على تكلفة خدمات المطورين ذوي الخبرة لـ Bitrix.

هل يؤسفني قضاء الكثير من الوقت في العمل مع هذا النظام؟ بالأحرى نعم من لا. سيكون من الحكمة قضاء هذا الوقت في تعلم شيء أكثر صحة وأكثر منطقية (وهو ما أحاول القيام به بنشاط الآن). ولكن حدث أنه لم يكن هناك من يوجهني على المسار الصحيح في بداية رحلتي.

إذا كنت مطور php مبتدئًا ، فإن Bitrix تفضل أطر التعلم مثل Symfony و Laravel و Yii و ZendFramework. صدقني ، ستؤتي ثمارها باهتمام في المستقبل. بعد إتقان أي من هذه الأطر ، لن يكون من الصعب عليك تطوير شيء ما لـ Bitrix في المستقبل. إذا لم يكن لديك خيار ، فقم بدراسة Bitrix ، ولكن في وقت فراغك من الأفضل أن تحاول الانغماس في عالم الأطر من أجل وضع عقلك في مكانه الصحيح.

إذا كنت مطورًا لديه خبرة في Bitrix ، ولكن بدون خبرة في أطر أخرى ، فتأكد من الانغماس في عالم آخر ، وسوف تكتشف الكثير من المعرفة الجديدة والمفيدة التي ستساعدك في كتابة حلول أفضل بكثير لـ 1C-Bitrix. حاول استخدام حلول من أطر أخرى في مشاريعك ، لأنه ليس من الصعب القيام بذلك بفضل نهج المكون الخاص بالمؤلف والملحن.

إذا كنت عميلاً ، فلا تثق في مسوقي Bitrix. لن يكون أي شيء سهلاً كما يقال في عروض Bitrix التقديمية. ولا تلوم المطورين بتوعك ، فلا علاقة لهم بذلك. إذا كنت ترغب في إنشاء متجر كبير ومعقد عبر الإنترنت على مستوى eldorado / mvideo / sportmaster ، فربما لن يكون Bitrix هو الخيار الأفضل.

محدث.يمكن ملاحظة أن المقالة تمت قراءتها من قبل موظفي Bitrix. في القسم الخاص بالتسويق ، كتبت أن مكالمات التسويق تمت كتابتها في قسم الهندسة المعمارية بدورة مطوري Bitrix. الآن هم ليسوا هناك. حتى أنهم ختموا أنفسهم ، على ما يبدو ، كانوا في عجلة من أمرهم.

شكرا لملاحظتك وعينك الثاقبة :)

العلامات:

  • 1c بتريكس
  • سم
  • تطوير الشبكة
  • حجرة القش
  • هاتبيتريكس
  • ينتحب على habr
  • سيطر على نفسك
اضف اشارة

مقال يستكشف عنصر قسم HTML من فئة التقسيم.

الغرض من عنصر القسم

يُستخدم عنصر القسم لإنشاء قسم في مستند يجمع بعض محتوى الموضوع معًا. يجب الإشارة إلى اسم كل قسم في المستند (الموضوع). يتم ذلك عادةً باستخدام الرؤوس (عناصر h1-h6).

عنوان القسم

محتوى القسم ...

تُستخدم عناصر القسم بشكل شائع في المواقف التالية:

  • لترميز الأقسام داخل القسم. على سبيل المثال ، لترميز الفصول في مقال ، أو علامات التبويب في مربع الحوار ، أو الأقسام في أطروحة ، إلخ.
  • لتجميع عدة أقسام في مجموعة مواضيعية واحدة. على سبيل المثال ، للتجميع أحدث الأخبارعلى الموقع ، التعليقات على المقال ، إلخ.

وبالتالي ، يجب استخدام عنصر القسم لبعض المحتويات فقط إذا كان يحتوي على عنوان وجزء من شيء آخر.

باستخدام عنصر القسم

على سبيل المثال ، ضع في اعتبارك مقتطفًا من رمز الصفحة يحتوي على مقالة بها تعليقات. تحتوي كل تعليق من التعليقات التي ينشرها المستخدم على الصفحة على بعض المحتوى الكامل وبالتالي يمكن اعتباره عنصر مقال. ولكن في نفس الوقت ، تمثل جميع التعليقات مجموعة موضوعية معينة ، وبالتالي يمكن وضعها في عنصر القسم ، أي عنصر معينسيجمع كل هذه التعليقات على الصفحة معًا.

عنوان المقال

التعليقات (1)

رأس التعليق

نص التعليق ...

رأس التعليق

نص التعليق ...

عنوان المقال التعليقات عنوان التعليق عنوان التعليق

على سبيل المثال ، ضع في اعتبارك استخدام عناصر القسم لإنشاء أقسام داخل عنصر المقالة:

عنوان كتاب

الفصل الأول

الفصل الثاني

الفصل الثالث

الملحق أ

ملحق ب

سيحتوي المثال أعلاه على المخطط التفصيلي التالي:

عنوان الكتاب الفصل الأول الفصل الثاني الفصل الثالث الملحق أ الملحق ب

حدود استخدام عنصر القسم

عنصر القسم في HTML 5 ليس عنصرًا عامًا لتجميع المحتوى ، أي لا ينبغي استخدامه في التفاف أي محتوى تريده. والغرض الرئيسي منه هو إضافة دلالات إلى الوثيقة وإنشاء مخططها العام.

عندما يحتاج المؤلف إلى تجميع المحتوى لمجرد تصميمه أو معالجته في JavaScript ، فإن أفضل مكان له هو استخدام عنصر div. لا يضيف عنصر div ، بخلاف عنصر القسم ، دلالات إلى المستند ولا يشارك في إنشاء مخططه التفصيلي (مخطط تفصيلي).

الفرق بين عناصر القسم والمقال

بينما تبدو عناصر القسم والمقال متشابهة جدًا للوهلة الأولى ، إلا أن لها معاني دلالية مختلفة. الغرض من عنصر المقالة هو تجميع المحتوى الكامل ، المستقل ، ويمكن عرضه بشكل منفصل عن باقي محتويات الصفحة. ويحمل عنصر القسم معنى دلاليًا مختلفًا ، فهو يهدف إلى تجميع المحتوى الذي يعد جزءًا لا يتجزأ من شيء آخر.

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

). كل علامة (الجزء)يجب أن يكون لديك زوج (/ الجزء)... المعلمات المطلوبة هي اسمو حلقة... يمكن أن يكون اسم الحلقة (القسم) أي اسم يتكون من أحرف وأرقام وشرطات سفلية. دورات (الجزء)يمكن أن تكون متداخلة ويجب أن تكون الأسماء المتداخلة (القسم) فريدة فيما بينها. عامل حلقة(عادةً ما تكون مصفوفة من القيم) تحدد عدد تكرارات الحلقة. عند طباعة متغيرات داخل قسم ما ، يجب الإشارة إلى اسم القسم بجوار اسم المتغير داخل أقواس مربعة. (مقطع)إذا تم تنفيذ المعلمة حلقةلا يحتوي على قيم.

اسم السمة نوع من إلزامي تقصير وصف
اسم سلسلة نعم غير متوفر اسم القسم
حلقة مختلط نعم غير متوفر قيمة تحدد عدد تكرارات الحلقة.
بداية عدد صحيح لا 0 فهرس الموضع الذي ستبدأ عنده الحلقة. إذا كانت القيمة سالبة ، يتم حساب موضع البداية من نهاية المصفوفة. على سبيل المثال ، إذا كان متغير الحلقة يحتوي على 7 عناصر وكانت قيمة سمة البداية هي -2 ، فسيكون فهرس البداية 5. يتم اقتطاع القيم غير الصالحة (القيم خارج المصفوفة) تلقائيًا إلى أقرب قيمة صالحة.
خطوة عدد صحيح لا 1 قيمة الخطوة المستخدمة لاجتياز المصفوفة. على سبيل المثال ، تشير الخطوة = 2 إلى اجتياز المصفوفة بالعناصر 0،2،4 ... إذا كانت الخطوة سالبة ، فسيتم اجتياز المصفوفة في الاتجاه المعاكس.
الأعلى عدد صحيح لا 1 الحد الأقصى لعدد مرات تكرار الحلقة.
مشاهده قيمة منطقية لا حقيقية يشير إلى إظهار هذا القسم أم لا

ملحوظة

بدءًا من Smarty 1.5.0 ، تم تغيير بناء الجملة لمتغيرات خاصية الجلسة من (٪ sectionname.varname٪) إلى ($ smarty.section.sectionname.varname). لا يزال بناء الجملة القديم مدعومًا ، لكنك لن ترى سوى أمثلة للصيغة الجديدة.

يتم استخدام الفهرس لعرض الفهرس الحالي للصفيف ، بدءًا من الصفر (أو عند سمة البداية ، إذا تم تحديده) وزيادة بمقدار واحد (أو حسب قيمة سمة الخطوة ، إذا تم تحديدها).

ملاحظة تقنية

إذا لم يتم تحديد سمات الخطوة والبدء ، فسيكون الفهرس هو نفسه سمة قسم التكرار ، باستثناء أنه يبدأ من 0 بدلاً من 1.

يستخدم التكرار لعرض رقم التكرار الحالي للحلقة.

ملحوظة

هذه القيمة مستقلة عن خصائص start و step و max ، على عكس الخاصية فهرس... أيضًا ، تبدأ التكرارات من نقطة واحدة ، بدلاً من الصفر مثل المؤشرات. رونوممرادفة للتكرار ، تعمل بنفس الطريقة.

مثال 7.38. خاصية (قسم) التكرار

تعيين ("custid"، $ id) ؛ ؟> (اسم القسم = cu loop = $ custid start = 5 step = 2) iteration = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ الجزء)

نتيجة هذا المثال:

التكرار = 1 فهرس = 5 معرف = 3005
التكرار = 2 مؤشر = 7 معرف = 3007
التكرار = 3 مؤشر = 9 معرف = 3009
التكرار = 4 مؤشر = 11 معرف = 3011
التكرار = 5 مؤشر = 13 معرف = 3013
التكرار = 6 مؤشر = 15 معرف = 3015

يستخدم هذا المثال خاصية التكرار لعرض عنوان الجدول كل خمسة أسطر (الاستخدامات (لو)مع مشغل وزارة الدفاع).

(اسم القسم = حلقة مشتركة = جهات اتصال بالدولار) (إذا كان $ smarty.section.co.iteration٪ 5 == 1) (/ لو) (/ الجزء)
الاسم>الصفحة الرئيسيةزنزانةبريد الالكتروني
عرض ($ contacts.name) ($ contacts.home) ($ contacts.cell) ($ contacts.email)