Barcode 條碼

1 篇文章 / 0 new
author
Barcode 條碼
barcodes 模組提供多種條碼顯示模式. 如 QR Code, EAN-13, EAN-8, UPC-A, UPC-E, ISBN, 2 of 5 Symbologies (Strandard, Industrial, Interleaved), Postnet, Codabar, Code128, Code39 and Code93 symbologies.
1. 下載 : Barcode
2. 安裝:
► 啟用模組.
► 至 nodetyp類加入該欄位, 指定編碼格式.

由於模組沒有提供額外的顯示標題, 在QR-Code運用再網址連結時自行增加標題標籤 &[title]標題內容[title] 來增加功能, 程式修改如下:
1. 修改 barcode.module 檔, 約 94 行
function theme_barcode_image($variables) {
...
  //原始 return theme('image', array('path' => $filename, 'alt' => $variables['barcode_value'], 'title' => $variables['barcode_value'], 'attributes' => array('class' => array('barcode'))));
//主要目的在縮減資料, 因此可不變更
return theme('image', array('path' => $filename, 'alt' => null, 'title' => null, 'attributes' => array('class' => array('barcode'))));
}
約 334 行
function barcode_field_formatter_view(...) {
...
      //原始 $element[$delta] = array('#markup' => theme('barcode_image', $temp));
      //加入 標題顯示 Tag=&[title]內容[/title] firep($item['value'],'barcode_field_formatter_view.$item');
      $result = theme('barcode_image', $temp);
      $itemValue = $item['value'];
      $pos = mb_strpos($itemValue, '[title]', 0, 'utf8');
      if (($field['settings']['encoding']=='QRCODE')&&($pos>0)) {
          $pos += 7;
          $posEnd = mb_strpos($itemValue, '[/title]', 0, 'utf8');
          $title = mb_substr($itemValue, $pos, $posEnd-$pos, 'utf8');
          $result = theme('barcode_image', $temp);
          $result = '<div id="barcode_block">' . $result . "<div class='barcode_title'>$title</div></div>";
      } else {
          $result = '<div id="barcode_block">' . $result . "<div class='barcode_title'> </div></div>";
      }
      $pos = mb_strpos($itemValue, 'http', 0, 'utf8');
      if ((strlen($pos)>0)&&($pos==0)) {
          $result = "<a href='$itemValue'>" . $result . '</a>';
      }
      $element[$delta] = array('#markup' => $result);
      // end ==
    }
  } 
  return $element;
}

2.修改 includes\barcode.plugins.inc 檔, 約 88 行
function barcode_generate_image($barcode, $variables) {
...
    $barcodeValue = $variables['barcode_value']; //加入
    if ($variables['encoding'] != 'QRCODE') {
      $settings->color = array(hexdec(substr($variables['barcolor'], 1, 2)), hexdec(substr($variables['barcolor'], 3, 2)), hexdec(substr($variables['barcolor'], 5, 2)));
      $settings->bgcolor = array(hexdec(substr($variables['bgcolor'], 1, 2)), hexdec(substr($variables['bgcolor'], 3, 2)), hexdec(substr($variables['bgcolor'], 5, 2)));
      $settings->scale = $variables['scale'];   
    }
    //shioulo 去除外加標題資料
    else {
        $pos = mb_strpos($barcodeValue, "&amp;[", 0, 'utf8');
        if ($pos>0) {
            $barcodeValue = mb_substr($barcodeValue, 0, $pos-1, 'utf8');
            $name = md5($barcodeValue);
            $filename_noformat = $barcode['default_path'] .'/'. $name . $variables['encoding'];
            $filename = $filename_noformat .'.'. $variables['image_format'];
        }
    }
barcode_plugin_generate_image($plugin, $barcodeValue, $settings);
//end==
    //原始 barcode_plugin_generate_image($plugin, $variables['barcode_value'], $settings);
修改後呈現結果 (須在配合css作樣式指定)
Free Web Hosting