วันพฤหัสบดีที่ 6 มกราคม พ.ศ. 2554

แก้ปัญหา warning: Attempt to assign property of non-object ใน drupal เมื่อใช้งาน Google Adwords

Share it Please
 เมื่อมีการเปิดการใช้งาน google adwords ในหน้าใดก็ตาม จะเกิด error  warning: Attempt to assign property of non-object in ...... theme.inc ขึ้นที่หน้าดังกล่าว พอลองไปดูที่ตำแหน่งดังกล่าวจะเป็นส่วนของ language ซึ่งไม่น่าจะเกิด error ได้เลย

ปัญหาดังกล่าวจริงๆ แล้วเกิดขึ้นที่ module google adwords ซึ่งดันไปเรียกใช้งาน global variable ชื่อว่า language ตัวเดียวกันทำให้เกิด warning ขึ้น

วิธีการแก้ไขคือให้ไปที่ module google_adwords แก้ไข google_adwords.module ใน function _google_adwords_view_adwords ให้แก้ไขตาม code ด้านล่าง โดยเปลี่ยนชื่อตัวแปร $language ให้เป็นตัวอื่นซะ

if (arg(0) != 'admin' && $track > 0) {
  if($node->google_adwords['enabled'] <> 0) { 
   
    $label = $node->google_adwords['label'];
    $id = variable_get('google_adwords_conversion_id', 0);
    $google_conversation_language = variable_get('google_adwords_conversion_language', $language->language); //change variable from $language to $google_conversation_language
    $format = variable_get('google_adwords_conversion_format', '2');
    $color = variable_get('google_adwords_conversion_color', 'FFFFFF');
    $google_js = variable_get('google_adwords_external_script', 'https://www.googleadservices.com/pagead/conversion.js');
    
    $output = '';
    
    $output .= "\n" . '<!-- Google Code for Conversion Page -->' . "\n";
    $output .= '<script language="JavaScript" type="text/javascript">' . "\n";
    $output .= '<!--' . "\n";
    $output .= '    var google_conversion_id = '. $id .';' . "\n";
    $output .= '    var google_conversion_language = "'. $google_conversation_language .'";' . "\n"; //change variable from $language to $google_conversation_language
    $output .= '    var google_conversion_format = "'. $format .'";' . "\n";
    $output .= '    var google_conversion_color = "'. $color .'";' . "\n";
    $output .= '    var google_conversion_label = "'. $label .'";' . "\n";
    $output .= '//-->' . "\n";
    $output .= '</script>' . "\n";
    $output .= '<script language="JavaScript" src="' . $google_js . '"></script>' . "\n";
    $output .= '<noscript>' . "\n";
    $output .= '    <img height="1" width="1" border="0" src="https://www.googleadservices.com/pagead/conversion/' . $id . '/?label='. $label .'&amp;guid=ON&amp;script=0"/>' . "\n";
    $output .= '</noscript>' . "\n";
       
    return $output;
    
  }
}

ที่มา http://goo.gl/EvPvO

Blogroll

About