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

[ حصريا ] شرح طريقة تنسيق معلومات العضو

shqawe

ربي أشرح لي صدري
27 يونيو 2019
3,164
23
2,078
113
K.S.A
www.shqawe.net
بسم الله الرحمن الرحيم

الحمد لله والصلاة والسلام على رسول الله نبينا محمد عليه افضل الصلاة واتم التسليم

اللهم لا علم لنا إلا ما علمتنا، إنك أنت العليم الحكيم، اللهم علمنا ما ينفعنا، وانفعنا بما علمتنا، وزدنا علما،

اقدم لكم اليوم طريقة تنسيق معلومات العضو داخل المواضيع والمشاركات حسب طلب اخواننا @MesterPerfect و @QATFX

طبعا ً الطريقة تعتمد اعتماد كلي على الاكواد لذا ارجو اخذ نسخة احتياطية من اي قالب قبل التعديل عليه

بسم الله نبدأ الشرح:

طبعا نريد ان نقوم بتغيير شكل معلومات العضو من هذا الشكل:

1.jpg

الى هذا الشكل

2.jpg

لذا اول ما سوف نقوم به هو اضافة ايقونات FontAwesome كل ايقونة حسب الحقل التابعه له وتستطيع اختيار الايقونات حسب ما تشاء عن طريق هذا الرابط


الان قم بفتح قالب message_macros ولاحظ معي الصورة التالية:

3.gif


لاحظ الكود المظلل في المربعات الثلاث طبعا ً الكود مكرر في القالب اكثر من مرة وهذه فقط صورة توضيحية

لنأخذ كود واحد من هذه الاكواد ونقوم بشرحة بالتفصيل لكي نبين الصورة بشكل اوضح

HTML:
<xf:if is="$extras.register_date">
                        <dl class="pairs pairs--justified">
                            <dt>{{ phrase('joined') }}</dt>
                            <dd>{{ date($user.register_date) }}</dd>
                        </dl>
                    </xf:if>

تلاحظون في الكود السابق ان السطر الاول هو شرط معناه انه اذا كان تاريخ الانضمام مفعل او موجود فقم بعرض الاكواد

طبعا ً الشرط عن تاريخ الانضمام وهو معرف في الكود بهذا الخيار register_date

يأتي بعد ذلك السطر الثاني وهو مجرد عبارة توضيحية توضح عنوان الحقل

ثم السطر الثالث وهو قيمة هذا الحقل

ثم السطر الرابع اغلاق الشرط

وتستمر الاكود بهذه الطريقة لجميع حقول العضو ما عدا الحقول الاضافية والتي سوف نتحدث عنها لاحقا ً

الان ما نريده هو اضافة الايقونات كما ذكرت بداية الموضوع الان نحن نريد اضافة الايقونة قبل عنوان الحقل والذي كما اشرت له في الكود السابق يأتي في السطر الثاني

لذا لنقم باضافاة ايقونة تاريخ الانضمام الى كودنا السابق ليصبح الكود بهذا الشكل بعد التعديل

HTML:
<xf:if is="$extras.register_date">
                        <dl class="pairs pairs--justified">
                            <dt><xf:fa icon="fa-calendar" />
                                {{ phrase('joined') }}</dt>
                            <dd>{{ date($user.register_date) }}</dd>
                        </dl>
                    </xf:if>

ويتم تطبيق نفس الفكرة مع جميع الاكواد الاخرى الخاصة بالحقول مع تغيير اسم الايقونة حسب نوع الحقل

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

كمثال قم باستبدال هذا الكود الخاص بالموقع اللاكتروني:

HTML:
<xf:if is="$extras.website && $user.Profile.website">
                        <dl class="pairs pairs--justified">
                            <dt>{{ phrase('website') }}</dt>
                            <dd><a href="{$user.Profile.website}" rel="nofollow" target="_blank">{$user.Profile.website|url('host', phrase('visit_site'))}</a></dd>
                        </dl>
                    </xf:if>

الى هذا الكود:

HTML:
<xf:if is="$extras.website && $user.Profile.website">
                        <dl class="pairs pairs--justified">
                            <dt><xf:fa icon="fa-home" />
                                {{ phrase('website') }}</dt>
                            <dd><a href="{$user.Profile.website}" rel="nofollow" data-xf-init="tooltip" title="{$user.Profile.website}" target="_blank"><xf:fa class="website-link" icon="fa-network-wired" /></a></dd>
                        </dl>
                    </xf:if>

الان نقوم بفتح قالب extra.less ونضيف له هذه الاكواد وهي خاصة بخيارات css

CSS:
.message-userExtras{
   
   
    dl {
        padding: 3px 6px 3px 32px;
        border-radius: 3px;
        background-color: #fff;
        margin: 0 0 4px;
        position: relative;
        height: 24px;
        border: 1px solid #c8c8c8;
       
        i{
            background:#03b9e3;
            line-height: 28px;
            position: absolute;
            top: 0;
            left: 0;
            width: 24px;
            text-align: center;
            color:#fff;
           
            &:after{
                position: absolute;
                top: 0;
                left: 23px;
                display: block;
                content: '';
                border-style: solid;
                border-width: 11px 0 12px 7px;
                border-color:transparent;
                border-left-color: #03b9e3;
                clear: both;
                content: "";
            }
        } // end i tag
       
        .website-link{
            background:transparent;
            position: relative;
            border: 0;
            color:#000;
            line-height: 0;
           
            &:after{
                border: 0;
            }
        }// end website-link tag
       
       
    }// end dl tag
   
}

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

ولتطبيق نفس الفكرة على الحقول المخصصة نقوم بفتح قالب custom_fields_macros

ثم نقوم بالبحث عن

HTML:
<dt>{$fieldDefinition.title}</dt>

الان قبل التعديل احب اذكر نقطة وهي انه لك الحرية في ان تضع ايقونة واحدة لجميع الحقول او تضع لكل حقل ايقونته الخاصة

فمثلا ً ان اردت ان تضع ايقونة لجميع الحقول فقم باستبدال الكود السابق بهذا الكود

HTML:
<dt><xf:fa icon="fa-angle-left" />{$fieldDefinition.title}</dt>

مع الانتباه الى استبدال الايقونة بالايقونة المناسبة لك

اما اذا كنت تريد ان تضع ايقونة لكل حقل مخصص على حدة فسوف تحتاج الى معرف كل حقل والمعرفات هي التي تضعها عند انشاء الحقول المخصصة كما في الصورة التالية:

4.gif

وسوف نستخدم الحقول بالطريقة التالية:

اولا نبحث عن الكود السابق وهو :

HTML:
<dt>{$fieldDefinition.title}</dt>

ونستبدلها بهذا الكود:

HTML:
<dt>
                    <xf:if is="$fieldDefinition.field_id == 'skype'">
                        <xf:fa icon="fab fa-skype" />
                    <xf:elseif is="$fieldDefinition.field_id == 'twitter'" />  
                        <xf:fa icon="fab fa-twitter" />
                    <xf:elseif is="$fieldDefinition.field_id == 'facebook'" />  
                        <xf:fa icon="fab fa-facebook" />
                    </xf:if>  
                    {$fieldDefinition.title}
                </dt>

وهنا استخدمنا ثلاث حقول سكايب و تويتر و فيسبوك وتستطيعون ان تضيفون قدر ما شئتم من الحقول بنفس الطريقة المستخدمة في الكود السابق

اخيرا ً وليس اخرا ً

اذا اردتم ان يكون حساب الشخص لاي من حسابات التواصل الاجتماعي كرابط بحيث عند الضغط عليه يتم التوجه الى حسابه فكل ما عليكم هو التوجه

حقول العضو المخصصة واختيار اي من الحقول ولنفرض مثلا حقل تويتر نقوم بالضغط عليه والتوجه الى اخر تبويب وهو خيارات عامة

ونضيف الكود التالي في حقل عرض قيمة HTML :

HTML:
<a href="https://twitter.com/{$value}" data-xf-init="tooltip" title="{$fieldId}" target="_blank">{$value}</a>

وطبق نفس الطريقة لجميع مواقع التواصل الاجتماعي مع تغيير رابط الموقع فقط من تويتر الى اي رابط اخر

والنتيجة سوف تكون بعد تعديلاتنا التي قمنا باجرائها كالتالي:

5.jpg

اتمنى من الله العلي القدير ان اكون وفقت في الشرح واكون قد اوصلت الفكرة واتمنى المعذر في الاطالة في الشرح فالقصد هو ايصال الفكرة وكيفية التعديل وليس لصق الاكواد فقط

ان اصبت فهذا من فضل الله علي وان اخطأت فجل من لايخطأ

احترامي وتقديري
اخوكم
شقاوي
 
التعديل الأخير:
والله يبارك في عمرك وحلالك

اتمنى من كل قلبي ان يكون هذا الشرح هو ما طلبت واسأل الله ان تعم به الفائدة للجميع

احترامي وتقديري
اخوك
شقاوي
هو ما نريد بإذن الله
سوف أحاول تطبيقه وإن وقفت في شيء فسوف أخبرك بالموضوع بإذن الله
تحياتي لك
 
تمام أخي الحبيب @shqawe
كانت هذه تجربتي الأولى مع كود إضافة رقم العضو إلى بطاقته
الكود
HTML:
    <dl class="pairs pairs--inline">
        <dt>{{ phrase('user_id') }}</dt>
        <dd>{{ $user.user_id }}</dd>
    </dl>
ولكن الرقم ظهر ملاصق للكلمة مباشرتا
يعني مثال
رقم العضوية2
وليس
رقم العضوية متبوع بنفس مقدار المسافة
أعني المسافات التي تكون بين الحقول لم تظهر
وأعتقد هذا بسبب عدم إضافتي لكود css

وهذا لإظهار عدد المنتجات

HTML:
<xf:if is="$xf.visitor.canViewResources() AND $user.xfrm_resource_count">
    <dl class="pairs pairs--inline">
        <dt>{{ phrase('عدد المنتجات') }}</dt>
        <dd>{{ $user.xfrm_resource_count }}</dd>
    </dl>
</xf:if>
طبعا مسألة العبارة دي نبقى ننشأ واحدة فيما بعد
المهم الآن التخصيص بالcss
 
التعديل الأخير:
وهذا كود آخر نشاط للعضو
HTML:
<xf:if contentcheck="true">
    <dl class="pairs pairs--inline">
        <dt>{{ phrase('last_seen') }}</dt>
        <dd dir="auto">
            <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck>
         </dd>
    </dl>
</xf:if>
 
تمام أخي الحبيب @shqawe
كانت هذه تجربتي الأولى مع كود إضافة رقم العضو إلى بطاقته
الكود
HTML:
    <dl class="pairs pairs--inline">
        <dt>{{ phrase('user_id') }}</dt>
        <dd>{{ $user.user_id }}</dd>
    </dl>
ولكن الرقم ظهر ملاصق للكلمة مباشرتا
يعني مثال
رقم العضوية2
وليس
رقم العضوية متبوع بنفس مقدار المسافة
أعني المسافات التي تكون بين الحقول لم تظهر
وأعتقد هذا بسبب عدم إضافتي لكود css

وهذا لإظهار عدد المنتجات

HTML:
<xf:if is="$xf.visitor.canViewResources() AND $user.xfrm_resource_count">
    <dl class="pairs pairs--inline">
        <dt>{{ phrase('عدد المنتجات') }}</dt>
        <dd>{{ $user.xfrm_resource_count }}</dd>
    </dl>
</xf:if>
طبعا مسألة العبارة دي نبقى ننشأ واحدة فيما بعد
المهم الآن التخصيص بالcss

حبيبي احمد انت ملخبط في اعدادات ال css غير الكلاس اللي انت حاطه اللي هو هذا

HTML:
pairs pairs--inline

الى الكلاس هذا

HTML:
pairs pairs--justified

وارجع لنا بالنتيجة 😘

ما شاء الله عليك اخي تركي
شرح وافي و كافي و مطلوب 🤩
جزاك الله خيرا و جعله في ميزان حسناتك :love:

تسلم حبيبي محمد

وان شاء الله يكون مفهوم وواضح
والله يجزانا واياك الخير

احترامي وتقديري
اخوكم
شقاوي
 
ضبطت جدا يالغالي تسلم
الكود النهائي
كود:
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('number_membership') }}</dt>
        <dd>{{ $user.user_id }}</dd>
    </dl>

<xf:if is="$xf.visitor.canViewResources() AND $user.xfrm_resource_count">
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('عدد المنتجات') }}</dt>
        <dd>{{ $user.xfrm_resource_count }}</dd>
    </dl>
</xf:if>

<xf:if contentcheck="true">
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('last_seen') }}</dt>
        <dd dir="auto">
            <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck>
         </dd>
    </dl>
</xf:if>

لكن يتبقى شيء
عدد المنتجات يفترض أن تكون رابط فكيف أحولها لرابط
 
وبالنسبة لهذا الكود
HTML:
<a href="https://t.me/{$fieldId}" data-xf-init="tooltip" title="{$fieldId}" target="_blank">{$value}</a>
هو ينجح مع تويتر وا سكيب
ولا ينجح مع فيسبوك أو تيليجرام
وعندما ادخل على الحساب من الملف الشخصي يكون الرابط بهذا الشكل
https://t.me/Telegram
ومع فيسبوك أيضا
https://facebook.com/facebook
 
ضبطت جدا يالغالي تسلم
الكود النهائي
كود:
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('number_membership') }}</dt>
        <dd>{{ $user.user_id }}</dd>
    </dl>

<xf:if is="$xf.visitor.canViewResources() AND $user.xfrm_resource_count">
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('عدد المنتجات') }}</dt>
        <dd>{{ $user.xfrm_resource_count }}</dd>
    </dl>
</xf:if>

<xf:if contentcheck="true">
    <dl class="pairs pairs--justified">
        <dt>{{ phrase('last_seen') }}</dt>
        <dd dir="auto">
            <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck>
         </dd>
    </dl>
</xf:if>

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

المشكلة اخوي احمد ان حتى لو حولت عدد المنتجات الى رابط فليس هناك صفحة خاصة بعرض المنتجات لكل عضو لذا الرابط بالعربي ماله داعي ☹ وتحتاج لها برمجة لجلب عدد المنتجات لكل عضو

وبالنسبة لهذا الكود
HTML:
<a href="https://t.me/{$fieldId}" data-xf-init="tooltip" title="{$fieldId}" target="_blank">{$value}</a>
هو ينجح مع تويتر وا سكيب
ولا ينجح مع فيسبوك أو تيليجرام
وعندما ادخل على الحساب من الملف الشخصي يكون الرابط بهذا الشكل
https://t.me/Telegram
ومع فيسبوك أيضا
https://facebook.com/facebook

بالنسبة للكود انا اعتذر كان الخطأ مني انا وسوف يتم تعديل الدرس ايضا ً المفروض ان الرابط يحمل قيمة الحقل {$value} وليس معرف الحقل {$fieldId} لذا يجب عليك تغيير كودك بهذا الكود

HTML:
<a href="https://t.me/{$value}" data-xf-init="tooltip" title="{$fieldId}" target="_blank">{$value}</a>


وبانتظار النتائج المفرحة ان شاء الله

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

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

وشكرا جزيلا على الشرح الاكثر من رائع
تحياتي
 
حياك اخوي سعيد

بالنسبة لطلبك الاول ان شاء الله راح اطرح له درس خاص لان افتراضياً معلومات العضو ماتظهر على الجوال فان شاء الله في المستقبل القريب تشوف لها درس خاص

اما بالنسبة لطلبك الثاني الله لا يهينك افتح فيه استفسار في قسم الاستفسارات على شان انت تستفيد وغيرك يستفيد وتامر امر يا ابو سالم

احترامي وتقديري
اخوك
شقاوي
 
حياك اخوي سعيد

بالنسبة لطلبك الاول ان شاء الله راح اطرح له درس خاص لان افتراضياً معلومات العضو ماتظهر على الجوال فان شاء الله في المستقبل القريب تشوف لها درس خاص

اما بالنسبة لطلبك الثاني الله لا يهينك افتح فيه استفسار في قسم الاستفسارات على شان انت تستفيد وغيرك يستفيد وتامر امر يا ابو سالم

احترامي وتقديري
اخوك
شقاوي
ان شاء الله يالغالي
مودتي
 
ممتاز طيب هل جربت الكود وضبط معك؟
شغال بنسبة 100
بس لما بضعه حقل الدولة وحقل العدد بيدخلو في بعض
وطبعا البيشتغل هو حقل عدد المنتجات
لذا يريت أخي تجربه وتقولي على طريقة كتابته هنا بالطريقة الصحيحة
HTML:
        <dd>{{ $user.xfrm_resource_count }}</dd>
 
والله ما فهمت عليك يا احمد ممكن تصور لي المشكلة

بعدين ملاحظة بسيطة

عند وضع المتغيرات داخل الوسوم يعني داخل div او span او اي من التاقات يكفي ان نستخدم قوس واحد {} يعني بالطريقة هذي


HTML:
<dd>{ $user.xfrm_resource_count }</dd>

ولكن عند استخدامها داخل علامات تنصيص مثلا داخل الكلاسات او العناوين فنستخدم قوسين مضاعفة {{}} مثال

كود:
<dd title="{{ $user.xfrm_resource_count }}">
{ $user.xfrm_resource_count }
</dd>


لان القوسين تستخدم كشروط وممكن تشتغل احيانا ً وممكن لا

منتظر صورة للمشكلة 😘
 
والله ما فهمت عليك يا احمد ممكن تصور لي المشكلة

بعدين ملاحظة بسيطة

عند وضع المتغيرات داخل الوسوم يعني داخل div او span او اي من التاقات يكفي ان نستخدم قوس واحد {} يعني بالطريقة هذي


HTML:
<dd>{ $user.xfrm_resource_count }</dd>

ولكن عند استخدامها داخل علامات تنصيص مثلا داخل الكلاسات او العناوين فنستخدم قوسين مضاعفة {{}} مثال

كود:
<dd title="{{ $user.xfrm_resource_count }}">
{ $user.xfrm_resource_count }
</dd>


لان القوسين تستخدم كشروط وممكن تشتغل احيانا ً وممكن لا

منتظر صورة للمشكلة 😘

سأحاول أن أرجع لها أخي لأني شغال تجارب من بدري هههه
الفكرة لكي تظهر المنتجات على شكل رابط يجب الدمج بين هذا المتغير
$user.xfrm_resource_count
وهو المسؤول عن جلب عدد المنتجات لكل مستخدم
ويجب دمجه مع هذا الكود
HTML:
href="{{ link('resources/authors', $user) }}"
وهو المسؤول عن جلب صفحة المنتجات الخاصة بالعضو
الكودين دول لازم يكونو مع بعض داخل
HTML:
<dd></dd>
لكي يأتينا في نهاية الأمر عدد المنتجات على شكل رابط يؤدي إلى صفحة المنتجات التي قام بطرحها العضو
ولكي يكون الأمر واضح جدا
قم بالدخول إلى قالب member_view
وستجد هذا الكود
HTML:
<xf:if is="$xf.visitor.canViewResources() AND $user.xfrm_resource_count">
	<li data-href="{{ link('resources/authors', $user) }}" role="tabpanel" aria-labelledby="resources">
		<div class="blockMessage">{{ phrase('loading...') }}</div>
	</li>
</xf:if>
وهو يقوم بنفس الأمر أي إظهار عدد المنتجات على شكل رابط ولكن في الملف الشخصي للعضو
مثال
ادخل هنا أخي وستجد اسفل كلمة المنتجات رقم إذا ضغطت عليه سيأخذك إلى صفحة منتجاتك
عذرا على الإطالة
تحياتي
 

إحصائيات المنتدى

المواضيع
1,563
المشاركات
17,666
الأعضاء
1,113
آخر عضو مسجل
AhmedMohammed
أعلى