อาทิตย์, กุมภาพันธ์ 05, 2555
   
Text Size
ป้ายโฆษณา

ทำให้ผู้ใช้ redirect กลับมายังคอมโพเนนท์หลังจากการ login

( 1 Vote )

Imageสวัสดีครับ วันนี้เราจะมาทำการแก้ไข Joomla! เพื่อให้สามารถทำให้ component สามารถส่งผู้ใช้ไปยังหน้า login และให้กลับมายังหน้าคอมโพเนนท์ หลังจาก login แล้วเพื่อที่ผู้ใช้จะได้เริ่มใช้งานได้เลยทันที โดยปกติ Joomla! จะอนุญาติให้กำหนดหน้าที่จะ redirect user ไปหลังจาก login หรือ logout แล้ว โดยการ load ค่านี้จาก parametes และกำหนดเป็น hidden value ให้แก่ login form

login form จะอยู่ในไฟล์ /components/com_login/login.html.php ซึ่งเป็นไฟล์ที่เราจะทำการแก้ไข โดยการค้นหาที่บรรทัดประมาณ 119 เราจะพบ source code ดังนี้  

  1. <?php
  2.   // displays back button
  3.   mosHTML::BackButton ( $params );
  4.   ?>
  5.   <input type="hidden" name="op2" value="login" />
  6.   <input type="hidden" name="return" value="<?php echo sefRelToAbs( $return ); ?>" />
  7.   <input type="hidden" name="lang" value="<?php echo $mosConfig_lang; ?>" />
  8.   <input type="hidden" name="message" value="<?php echo $params->get( 'login_message' ); ?>" />
  9.   <input type="hidden" name="<?php echo $validate; ?>" value="1" />
  10.   </form>
 

ทำการแทรก code ดังข้างล่าง แสดงการเปลี่ยนแปลงหลังจากทำการแก้ไขแล้ว 

  1. <?php
  2.   // displays back button
  3.   mosHTML::BackButton ( $params );
  4.   //Added by Prasit Gebsaap to pass return in $_GET variables
  5.   $returnTo = mosGetParam($_GET, "return", null);
  6.   if (isset($returnTo)) {
  7.    $return = sefRelToAbs($returnTo)
  8.   }
  9.   //end of added .....
  10.   ?>
  11.   <input type="hidden" name="op2" value="login" />
  12.   <input type="hidden" name="return" value="<?php echo sefRelToAbs( $return ); ?>" />
  13.   <input type="hidden" name="lang" value="<?php echo $mosConfig_lang; ?>" />
  14.   <input type="hidden" name="message" value="<?php echo $params->get( 'login_message' ); ?>" />
  15.   <input type="hidden" name="<?php echo $validate; ?>" value="1" />
  16.   </form>
 

ใน component ของเราทำการ redirect ไปยัง com_login โดยการเพิ่ม parameter return=[link_to_our_component] อย่าลืมใช้ sefRelToAbs ด้วยนะครับ

  1. $Itemid = intval(mosGetParam($_REQUEST, 'Itemid', 0));
  2.  $returnTo = urlencode("index.php?option=com_hydra&Itemid=".$Itemid);
  3.  mosRedirect(sefRelToAbs('index.php?option=com_login&Itemid='.$Itemid.'&return='.$returnTo));
  4.  exit();
 

JoomlaWatch Stats 1.2.8b_12-dev by Matej Koval
Restore Default Settings