Home Webboard ArticlesKnowledges  

ผู้เขียน หัวข้อ: การเพิ่มรูปแทนตัวให้กับสมาชิกที่ไม่ได้ใส่รูป และบุคคลทั่วไป  (อ่าน 34694 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ Sriiam

  • Ju
  • *
  • กระทู้: 11
  • เห็นด้วย&ขอบคุณ: 6
แบ่งปันครับ สำหรับท่านที่ยังทำไม่ได้ (ผมก็ทำตามที่กระทู้นี้แนะนำ ก็เจอปัญหาเดียวกันนั่นแหละครับ)
จึงลองไล่ดูทีละบรรทัด ทีละคำสั่ง เป็นการฝึกไปในตัว (จะได้พัฒนาขึ้น จากไม่รู้อะไรเลย)
ต้องออกตัวก่อนว่า ไม่ได้มีความรุ้ด้านนี้โดยตรงครับ อาศัยมั่วเหมือนกัน  ดังนั้น จึงต้องอาศัยท่านผู้รู้มายืนยันครับ
เพราะเมื่อเราแก้ไปแล้ว  มันแสดงก็จริง  แต่มันจะมีผลไปถึงส่วนอื่นหรือเปล่านี้เรื่องใหญ่ครับ
ดังนั้นก็ลองทำตามผมไปก่อน

  if (!empty($context['user']['avatar']))
      echo '
                     <td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

   echo '
                     <td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';


   // ----------*** ใส่ลิงค์ข้อมูลสมาชิกที่รูปโลโก้ ***---------
   if (!empty($context['user']['avatar']))
      echo '
                     <td class="windowbg" valign="middle"><a href="', $scripturl, '?action=profile">', $context['user']['avatar']['image'], '</a>
                     </td>';

 
  // ----------*** คนที่ไม่มีรูปส่วนตัวจะแสดงรูป  noavatar.jpg บุคคลทั่วไปจะแสดงเป็นรูป nologin.jpg ***----------
   else if ($context['user']['is_guest'])
      echo '
      <td class="windowbg" valign="middle"><img src="', $settings['images_url'], '/noavatar2.gif" alt="" /></td>';
   else
        echo '
      <td class="windowbg" valign="middle"><img src="', $settings['images_url'], '/noavatar2.gif" alt="" /></td>';

   echo '
      <td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';

     จะสังเกตเห็นว่า ตรงตำแหน่ง  ก่อนที่เราจะนำโค้ดใหม่นี้ไปแทรกนั้น มันมีคำสั่งนั้นอยู่แล้ว (ด้านบนสีแดง) เมื่อเราไปซ้อนมันเข้าไปอีก จึงทำให้ผลที่ออกมา มันไปกองกันอยู่ด้านขวามือ
ดังนั้น ลองลบกลุ่มสีแดงนั้นออกครับ เซฟ และปรับหน้าใหม่ลองดูครับ...
ขอบคุณท่านเจ้าของกระทู้ที่นำมาแบ่ง ขอบคุณ ทีมงาน justusers.net ได้ความรู้จากนี้มากมาย... :smitten-1:

ออฟไลน์ UnclEo

  • Just Staff
  • *
  • กระทู้: 463
  • เห็นด้วย&ขอบคุณ: 439
  • เพศ: ชาย
  • !Personal
    • DexMoreGroup
ทิปนี้..คาดว่า น่าจะเป็นตั้งแต่ครั้ง smf 1.1RC หรือ smf 1.1.2 ประมาณนั้นแหละครับ

ในสมัยนั้นยังไม่มีรูปส่วนตัวหน้า index จึงต้องเพิ่ม ถ้าจำไม่ผิด ตั้งแต่ 1.1.4 เป็นต้นมามันก็มีรูปส่วนตัวมาให้แล้วถ้าไปเพิ่มอย่างทิปนี้มันก็มีตารางเกินเป็นธรรมดา

ด้านบนนั่นผมตอบให้คุณ morokat ที่นี่ >> http://www.dexmore.com/topic/950 แต่ไม่ยอมอ่านเลยถามอยู่นั่นแหละ


ก็บอกแล้วไงครับว่ามันมีอยู่แล้วเพิ่มเข้าไปมันก็มีเป็นสองอัน ถ้าต้องการให้รูปบุคคลทั่วไปเป็น noavatar ก็แค่เพิ่มเงื่อนไข else if ($context['user']['is_guest'])

สำเร็จรูปเป็นแบบนี้ครับ

โค๊ด: [Select]
echo '<td class="windowbg" valign="middle">';
if (!empty($context['user']['avatar']))
echo $context['user']['avatar']['image'];

else if ($context['user']['is_guest'])
echo '<img src="', $settings['images_url'], '/noavatar.gif" alt="noavatar" />';

else
echo '<img src="', $settings['images_url'], '/noavatar.gif" alt="noavatar" />';

echo '</td>';

แค่นี้มันก็แสดงรูปส่วนตัวของสมาชิกที่ใส่รูป ไม่ได้ใส่รูป และบุคคลทั่วไปหมดแล้ว

อธิบายที่ละบรรทัด

1. echo '<td class="windowbg" valign="middle">'; แสดงตารางโดยปราศจากเงื่อนไขใดๆ ซึ่งโค้ดด้านบนนั่นถ้าพูดกันตามภาษาเว็บโปรแกรมเขาเรียกว่าโค้ดขยะ สังเกตุดูว่าจะมีแท็ก td ถึง 3 แท็ก โดยไม่มีความจำเป็นซึ่งสามารถลดให้เหลือแท็กเดียวได้ ในเมื่อตารางนี้ต้องแสดงอยู่แล้ว ไม่ว่าสมาชิกใส่รูป ไม่ได้ใส่รูป หรือบุคลลทั่วไปมันก็ต้องมีก็ให้มันมีที่เดียวทีเดียวไปเลย

2. เงื่อนไข if (!empty($context['user']['avatar'])) เป็นการตรวจสอบว่ารูปส่วนตัวของสมาชิกว่างเปล่าหรือไม่ ถ้าไม่ว่างเปล่าก็คิวรี่รูปส่วนมาแสดง

3. แสงผลตัวแปร echo $context['user']['avatar']['image']; ตามเงื่อนไขข้อ 2 โดยในที่นี้จะแสดงเฉพาะรูปส่วนตัว ไม่มีการลิงค์ไปยังข้อมูลส่วนตัวหากต้องการลิงค์ไปก็แก้คำสั่งเป็น echo '<a href="', $scripturl, '?action=profile">', $context['user']['avatar']['image'], '</a>';

4. เงื่อนไข else if ($context['user']['is_guest']) หากผู้ใช้ไม่ได้เข้าสู่ระบบ (อยู่ในฐานะบุคคลทั่วไป)

5 . แสดงรูป novatar ด้วยคำสั่ง echo ' <img src="', $settings['images_url'], '/noavatar.gif" alt="noavatar" />';

6. else หากเงื่อนไข if (!empty($context['user']['avatar'])) เป็นเท็จ (คือสมาชิกไม่ได้ใส่รูป)

7. แสดงรูป noavatar ด้วยคำสั่ง echo ' <img src="', $settings['images_url'], '/noavatar.gif" alt="noavatar" />';

8. echo '</td>'; ปิดตารางโดยปราศจากเงื่อนไขใดๆ

น่าจะสรุปปัญหาทั้งหมดของกระทู้นี้ได้แล้วนะครับ

ออ..ลืมบอกไป เอาไปวางทับโค้ดนี้ครับ
โค๊ด: [Select]
if (!empty($context['user']['avatar']))
      echo '
                     <td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';
« แก้ไขครั้งสุดท้าย: 06, ตุลาคม 2011, 11:09:08 AM โดย UnclEo »
ที่นี่! DexMore.Com ลมหายใจแห่ง SMF เราอัพเดททุกลมหายใจ SMF 100++ mod แห่งเดียวในโลก SMF 2.0 แปลไทย 100%

ออฟไลน์ Hanniboon

  • Ju
  • *
  • กระทู้: 3
  • เห็นด้วย&ขอบคุณ: 5
newbielink:http://custom.simplemachines.org/mods/index.php?mod=975 [nonactive]

1. โหลด ที่เป็น zip มา
2. เข้า admin ของบอร์ดเรา แล้วไปที่ package จัดการอัพโหลดผ่านตรงนี้ซะ
3. ก็เป็นการอัพแพคเกจ ตามขั้นตอน สังเกตุว่ามีการตรวจสอบ Test ผ่านหรือไม่ ถ้าเห็น skipp ที่ไฟล์ภาษาอื่น เช่น สเปน ก็ไม่ต้องสนใจ มันไม่มีในบอร์ดเรา
4. เมื่ออัพแพคเกจเสร็จแล้ว ให้ใช้ ftp เอารูป default avatar ไปใส่ไว้ รูปที่ใช้ควรมีขนาด 70*80 เพื่อให้โหลดเร็ว
6. กลับไปที่หน้า admin ไปที่ attachment and avatar -> avatar setting ข้างล่างสุด จะมี firld โผล่ขึ้นมา ให้ใส่ URL (เน้นว่า URL) ของรูปที่เพิ่งอัพลงไป เช่น newbielink:http://www.abcd.com/board/Themes/default/images/default_avatar.gif [nonactive] แล้วก็กด save setting ซะ

ออฟไลน์ manamail

  • Just
  • **
  • กระทู้: 19
  • เห็นด้วย&ขอบคุณ: 4
ผมลองทำตามแล้วครับ ผลออกมาเป็นแบบนี้ครับ

// display the time
   echo '
            <td class="titlebg2" height="32" align="right">
               <span class="smalltext">' , $context['current_time'], '</span>';

   // this is the upshrink button for the user info section
   echo '
               <a href="#" onclick="shrinkHeader(!current_header); return false;"><img id="upshrink" src="', $settings['images_url'], '/', empty($options['collapse_header']) ? 'upshrink.gif' : 'upshrink2.gif', '" alt="*" title="', $txt['upshrink_description'], '" align="bottom" style="margin: 0 1ex;" /></a>
            </td>
         </tr>
         <tr id="upshrinkHeader"', empty($options['collapse_header']) ? '' : ' style="display: none;"', '>
            <td valign="top" colspan="2">
               <table width="100%" class="bordercolor" cellpadding="8" cellspacing="1" border="0" style="margin-top: 1px;">
                  <tr>';

   if (!empty($context['user']['avatar']))
      echo '
                     <td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

   echo '
                     <td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';

 // ----------*** ใส่ลิงค์ข้อมูลสมาชิกที่รูปโลโก้ ***---------
   if (!empty($context['user']['avatar']))
      echo '
                     <td class="windowbg" valign="middle">
                        <a href="', $scripturl, '?action=profile">', $context['user']['avatar']['image'], '</a>
                     </td>';
   // ----------*** คนที่ไม่มีรูปส่วนตัวจะแสดงรูป  noavatar.jpg บุคคลทั่วไปจะแสดงเป็นรูป nologin.jpg ***----------
   else if ($context['user']['is_guest'])
      echo '
      <td class="windowbg" valign="middle"><img src="', $settings['images_url'], '/nologin.jpg" alt="" /></td>';
   else
        echo '
      <td class="windowbg" valign="middle"><img src="', $settings['images_url'], '/noavatar.jpg" alt="" /></td>';

   echo '
      <td colspan="2" width="100%" valign="top" class="windowbg2"><span class="middletext">';

   // If the user is logged in, display stuff like their name, new messages, etc.
   if ($context['user']['is_logged'])
   {
// Only tell them about their messages if they can read their messages! ----------*** แก้ไข (เพิ่มลิงค์ข้อความส่วนตัว) ***----------
                if ($context['allow_pm'])
                        echo '', $txt[152], ' <a href="', $scripturl, '?action=pm">', $context['user']['messages'], ' ', $context['user']['messages'] != 1 ? $txt[153] : $txt[471], '</a>', $txt['newmessages4'], ' ', $context['user']['unread_messages'], ' ', $context['user']['unread_messages'] == 1 ? $txt['newmessages0'] : $txt['newmessages1'];


 

 

Sitemap 1 2 3 4 5 6 
Back to top