高度な設定から出力するCSVのヘッダ行を出力しない

概要

EC-CUBEバージョン? ??? 2.3.1
PHPバージョン ??? PHP 5.2.6
DBバージョン ??? MySQL 5.0.51b-community-nt

カスタマイズ内容

タイトルがややこしいですが、こういうことです。
「管理画面->コンテンツ管理->CSV出力項目設定->高度設定」のSQL一覧からCSVファイルを出力する際にタイトル行が出力されるので、これを出力しないようにする。ということです。

うちの場合、社内で動いている別の受注管理システムにEC-CUBEの受注データを取り込む必要があるためにやるので、ほとんどの方にとってこのカスタマイズはあまり意味の無いものだと思います。

カスタマイズ作業

「data/class_extends/page_extends/admin/contents/LC_Page_Admin_Contents_CsvSql_Ex.php」の「process」メソッドを修正します。
ここが「parrent::process();」とかなってる人はここを見て準備してください。

修正箇所

ファイル:LC_Page_Admin_Contents_CsvSql_Ex.php
クラス:LC_Page_Admin_Contents_CsvSql_Ex
メソッド:process

switch($_POST[‘mode’])以下を修正します。

修正前
case "csv_output":
// CSV出力データ取得
$arrCsvData = $this->lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));

$objQuery = new SC_Query();

$arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['csv_sql']);

if (count($arrCsvOutputData) > 0) {

$arrKey = array_keys(SC_Utils_Ex::sfSwapArray($arrCsvOutputData));
$i = 0;
$header = "";
foreach($arrKey as $data) {
if ($i != 0) $header .= ", ";
$header .= $data;
$i ++;
}
$header .= "\n";

$data = SC_Utils_Ex::getCSVData($arrCsvOutputData, $arrKey);
// CSV出力
SC_Utils_Ex::sfCSVDownload($header.$data);
exit;
break;
}else{
$this->tpl_onload = "alert('出力データがありません。');";
$sql_id = "";
$_POST="";
}
break;

修正後
case "csv_output":
// CSV出力データ取得
$arrCsvData = $this->lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));

$objQuery = new SC_Query();

$arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['csv_sql']);

if (count($arrCsvOutputData) > 0) {

    $arrKey = array_keys(SC_Utils_Ex::sfSwapArray($arrCsvOutputData));
    $i = 0;
    $header = "";
    /*
     * ヘッダ行を出力しない
     * fixed 2005811061629
    foreach($arrKey as $data) {
        if ($i != 0) $header .= ", ";
        $header .= $data;
        $i ++;
    }
    $header .= "\n";
    */

    $data = SC_Utils_Ex::getCSVData($arrCsvOutputData, $arrKey);
    // CSV出力
    SC_Utils_Ex::sfCSVDownload($header.$data);
    exit;
    break;
}else{
    $this->tpl_onload = "alert('出力データがありません。');";
    $sql_id = "";
    $_POST="";
}
break;

シェアする

  • このエントリーをはてなブックマークに追加

フォローする