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

حول تعديل الصورة الشخصية



19-12-2025 07:59 مساءً
Sofiene2023
معلومات الكاتب
 قمت ببعض التعديلات لتغيير الصورة الإفتراضية للعضو من صورة لfontawesome 
1. تعديل قالب الإدارة options_avatar.tpl لإدراج fontawesome زتحويل خانة كتابة مسار الصورة الإفتراضية من input إلى textarea
2. تعديل على ملف functions_class.php بتعديل الأكواد التالية 
CODE
$forum['writer_photo'] = $this->GetForumAdress().$PowerBB->_CONF['template']['image_path'].'/'.$PowerBB->_CONF['info_row']['default_avatar']; 

3.تعديل على قالب sections_list بإسبدال img ب span
للأسف لم تنجح المحاولة وظهر تشويه في الستايل (الرئيسية في معلومات الموضوع)

ماهي الخطوات التي يمكن إتباعها ليتم التعديل

مع الشكر 

look/images/icons/i1.gif حول تعديل الصورة الشخصية
  19-12-2025 10:18 مساءً   [1]
Soliman
معلومات الكاتب
الفكرة بسيطة: نستبدل img بـ span ويحتوي على أيقونة Font Awesome عند كون عدم وجود صورة رمزية ، ونُبقي img عندما تكون هناك صورة رمزية حقيقية للعضو.
واضافة من عندي استخراج أول حرف من اسم العضو واضافته للايقونه + لون ايقونه مختلف لكل عضو 

طبعا لا تحتاج لتعديل ملف functions_class.php فهو متغيير دائما بالتحديثات الدورية ولا ننصح بتغييره

وبما انك لم تضع كود FontAwesome سأطبق على مثال آخر من عندي 

للتطبيق والتعديل في قالب sections_list
ابحث عن:
CODE
{if {$_CONF['info_row']['allow_avatar']}}
 <div class="UserPhoto_tiny_RCS" title="{$lang['Picture']} {$forum['username']} {$lang['Personal']}">
 <img src="{$forum['writer_photo']}" srcset="{$forum['writer_photo']} 2x" alt="Russ" class="avatar-u1-s" width="48" height="48" loading="lazy">
 </div>
 {/if}


 واستبدله بـ

CODE
{if {$_CONF['info_row']['allow_avatar']}}
 <div class="UserPhoto_tiny_RCS" title="{$lang['Picture']} {$forum['username']} {$lang['Personal']}">
 
 {if {$forum['avater_path']} !=''}
     <img src="{$forum['writer_photo']}"
         srcset="{$forum['writer_photo']} 2x"
         alt="{$forum['username']}"
         class="avatar-u1-s"
         width="48"
         height="48"
         loading="lazy">
 {else}
 <?php
 $forum['username_first_letter'] = mb_substr($forum['username'], 0, 1, 'UTF-8');
 ?>
 <span class="avatar-default avatar-u1-s" data-letter="<?php echo $forum['username_first_letter']; ?>">
 <?php echo $forum['username_first_letter']; ?>
 </span>
 <style>
 .avatar-default {
     float: right;
     margin-left: 6px;
     width: 42px;
     height: 42px;
     display: inline-flex;
     align-items: center;
     justify-content: center;
     background: #dde3ea;
     color: #2f3a4a;
     border-radius: 50%;
     font-size: 20px;
 }
 
 .avatar-default i {
     line-height: 1;
 }
 
 .avatar-u1-s {
     border-radius: 50%;
 }
 
 .avatar-default[data-letter="أ"],
 .avatar-default[data-letter="ا"],
 .avatar-default[data-letter="ب"],
 .avatar-default[data-letter="ت"] {
     background: #e7f0ff;
 }
 
 .avatar-default[data-letter="ج"],
 .avatar-default[data-letter="ح"],
 .avatar-default[data-letter="خ"] {
     background: #e9f7ef;
 }
 
 .avatar-default[data-letter="س"],
 .avatar-default[data-letter="ش"],
 .avatar-default[data-letter="ص"] {
     background: #f1e9ff;
 }
 
 .avatar-default[data-letter="م"],
 .avatar-default[data-letter="ن"],
 .avatar-default[data-letter="و"] {
     background: #fff4e5;
 }
 
 /* إنجليزي */
 .avatar-default[data-letter^="A"],
 .avatar-default[data-letter^="B"],
 .avatar-default[data-letter^="C"] {
     background: #e7f0ff;
 }
 
 .avatar-default[data-letter^="D"],
 .avatar-default[data-letter^="E"],
 .avatar-default[data-letter^="F"] {
     background: #e9f7ef;
 }
 
 .avatar-default[data-letter^="M"],
 .avatar-default[data-letter^="N"],
 .avatar-default[data-letter^="O"] {
     background: #fde8e8;
 }
 </style>    
 {/if}
 
 </div>
 {/if}


النتيجة
  • ألوان تلقائية حسب أول حرف
  • كل عضو ليس له صورة رمزية تظهر له أيقونة FontAwesome بلون مميز
  • دمج الحرف + أيقونة FontAwesome
  • اللون لا يتغير
  • أداء ممتاز
  • يدعم الحروف العربية والإنجليزي بنسبة 95%
وطبعا الكود يشرح نفسه واغلبه CSS 

look/images/icons/i1.gif حول تعديل الصورة الشخصية
  19-12-2025 10:54 مساءً   [2]
Sofiene2023
معلومات الكاتب
 بارك االه فيك أخي سليمان على الحل المميز
كيف يمكن إعتماد هذه الطريقة لتغيير الصورة الإفتراضية في جميع قوالب المنتدى 

look/images/icons/i1.gif حول تعديل الصورة الشخصية
  19-12-2025 11:56 مساءً   [3]
Soliman
معلومات الكاتب
لا يوجد تعديل واحد يمكنك تطبيقه على جميع الصور الرمزية وفي جميع القوالب
ستحتاج لأن تعدل كل قالب على حدى
مثال على تعديل الصور الرمزية الصغيرة التي تظهر في قالب whatis_new الذي يعرض مالجديد في القائمة الجانبية
التعديل سيكون بهذا الشكل 
تبحث في السطر 53 عن:
CODE
<span class="brd0" style="background-image: url(<?php echo $PowerBB->_CONF['template']['ForumAdress'].$PowerBB->_CONF['template']['image_path'];?>/{$_CONF['info_row']['default_avatar']}); width: 32px; height: 32px; background-position: center; background-repeat: no-repeat; background-size: 32px; display: inline-block; vertical-align: middle;"></span>


وتستبدله بـ :
CODE
<?php
 $forum['username_first_letter'] = mb_substr($PowerBB->_CONF['template']['while']['lastPostsList'][$this->x_loop]['writer'], 0, 1, 'UTF-8');
 ?>
 <span class="avatar-default avatar-u1-s" data-letter="<?php echo $forum['username_first_letter']; ?>">
 <?php echo $forum['username_first_letter']; ?>
 </span>
 <style>
 .avatar-default {
     float: right;
     margin-left: 6px;
     width: 32px;
     height: 32px;
     display: inline-flex;
     align-items: center;
     justify-content: center;
     background: #dde3ea;
     color: #2f3a4a;
     border-radius: 50%;
     font-size: 20px;  
 background-position: center; 
 background-repeat: no-repeat; 
 vertical-align: middle  
 }
 
 .avatar-default i {
     line-height: 1;
 }
 
 .avatar-u1-s {
     border-radius: 50%;
 }
 
 .avatar-default[data-letter="أ"],
 .avatar-default[data-letter="ا"],
 .avatar-default[data-letter="ب"],
 .avatar-default[data-letter="ت"] {
     background: #e7f0ff;
 }
 
 .avatar-default[data-letter="ج"],
 .avatar-default[data-letter="ح"],
 .avatar-default[data-letter="خ"] {
     background: #e9f7ef;
 }
 
 .avatar-default[data-letter="س"],
 .avatar-default[data-letter="ش"],
 .avatar-default[data-letter="ص"] {
     background: #f1e9ff;
 }
 
 .avatar-default[data-letter="م"],
 .avatar-default[data-letter="ن"],
 .avatar-default[data-letter="و"] {
     background: #fff4e5;
 }
 
 /* إنجليزي */
 .avatar-default[data-letter^="A"],
 .avatar-default[data-letter^="B"],
 .avatar-default[data-letter^="C"] {
     background: #e7f0ff;
 }
 
 .avatar-default[data-letter^="D"],
 .avatar-default[data-letter^="E"],
 .avatar-default[data-letter^="F"] {
     background: #e9f7ef;
 }
 
 .avatar-default[data-letter^="M"],
 .avatar-default[data-letter^="N"],
 .avatar-default[data-letter^="O"] {
     background: #fde8e8;
 }
 </style>

 


السطر الأهم هو هذا السطر
CODE
$forum['username_first_letter'] = mb_substr(اسم العضو, 0, 1, 'UTF-8');

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

بالتوفيق   

look/images/icons/i1.gif حول تعديل الصورة الشخصية
  21-12-2025 09:13 صباحاً   [4]
Sofiene2023
معلومات الكاتب
 شكرا أخ سليمان
كيف يمكن إضافة بعض التحسينات كأن يكون لكل عضو ستايل خاص به (لون النص ولون الخلفية) ويظهر في جميع صفحات المنتدى بعد تعديل القوالب 
أظن أنه يجب أولا تخزين الستايل في قاعدة البيانات ثم إستدعاء الستايل عن طريق كود معين 

بارك الله فيكم

look/images/icons/i1.gif حول تعديل الصورة الشخصية
  21-12-2025 05:04 مساءً   [5]
Soliman
معلومات الكاتب
المشاركة الأصلية كتبت بواسطة: Sofiene2023 بتاريخ: 21-12-2025 09:13 صباحاً شكرا أخ سليمان
كيف يمكن إضافة بعض التحسينات كأن يكون لكل عضو ستايل خاص به (لون النص ولون الخلفية) ويظهر في جميع صفحات المنتدى بعد تعديل القوالب 
أظن أنه يجب أولا تخزين الستايل في قاعدة البيانات ثم إستدعاء الستايل عن طريق كود معين 

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


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

لون النص: يفضل ان تكون الخيارات في قائمة منسدله يختار منها اللون المفضل بدلا من ادخاله كتابة
لون الخلفية: يفضل ايضا ان تكون الخيارات في قائمة منسدله يختار منها اللون المفضل بدلا من ادخاله كتابة

مثال لخيار لون النص:
CODE
<tr>
 <td class="row1">لون النص</td>
 <td class="row2">
 <select name="color_user">
     <option value="">الافتراضي</option>
     <option value="red">أحمر</option>
     <option value="blue">أزرق</option>
     <option value="green">أخضر</option>
     <option value="purple">بنفسجي</option>
     <option value="black">أسود</option>
 </select>
 </td>
 </tr>




ومن خلال الاضافة البرمجية تضيف حقلين color_user و bgcolor_user في جدول الاعضاء pbb_member 
وكذلك تنشأ خطا hook لتحديث الخيارات في ملف usercp.module.php على الـخطاف  usercp_hook_start
CODE
<hook main_place="usercp_hook_start" place="usercp_hook_start"><![CDATA[
 
 if ($PowerBB->_GET['setting'] and $PowerBB->_GET['start'] and $PowerBB->_CONF['member_permission'])
 {
 if (isset($PowerBB->_POST['color_user']) && $PowerBB->_POST['color_user'] !== '')
 {        
     // Clean Variables
         $PowerBB->_POST['color_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['color_user'],'trim');
         $PowerBB->_POST['color_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['color_user'],'sql');
         $PowerBB->_POST['color_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['color_user'],'html');
         $PowerBB->_POST['bgcolor_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['bgcolor_user'],'trim');
         $PowerBB->_POST['bgcolor_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['bgcolor_user'],'sql');
         $PowerBB->_POST['bgcolor_user'] = $PowerBB->functions->CleanVariable($PowerBB->_POST['bgcolor_user'],'sql'); 
         // Update member
 $StartArr = array();
 $StartArr['field'] = array(); 
 $StartArr['field']['color_user'] = $PowerBB->_POST['color_user'];
 $StartArr['field']['bgcolor_user'] =  $PowerBB->_POST['bgcolor_user'];
 $StartArr['where'] = array('id',$PowerBB->_CONF['member_row']['id']); 
 $StartChange = $PowerBB->core->Update($StartArr,'member');
 }
 }
 
 ]]></hook>


جلب الألوان في القوالب سيكون هكذا 
CODE
{$_CONF['rows']['member_row']['color_user']} 
{$_CONF['rows']['member_row']['bgcolor_user']}





يرجى مراجعة: [شرح]: برمجة هاك وتركيبه عن طريق الأضافات البرمجية

بالتوفيق


المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
تعديل على تكبير الصور بحيث تكبر الصورة عند الضغط عليها Alashkar
5 1174 Alashkar
[مجابه] طلب تعديل قالب sections_list لاقسام المنتدى كما في الصورة MrKinvalo
9 1950 ezzeldean
تعديل على قالب تغيير الصورة الشخصية Dzkhalwi
9 1893 Dzkhalwi
تعديل الروابد في هذة الصورة tantawy amen
4 1023 tantawy amen

الكلمات الدلالية






الساعة الآن 05:39 PM