過去 4 日間、この問題で立ち往生しており、どこでもチェックしましたが、解決策が見つかりません。
Prestashop では、顧客 (b2b サイトの場合) の注文履歴ごとに csv ダウンロードを提供する必要があります。これは私がやったことです:
1- OrderDetailController.php をオーバーライドし、 initContent()の下に次のコードを記述します。
if ( !array_key_exists('csv_download', $_GET) ) {
parent::initContent();
} else if ( array_key_exists('csv_download', $_GET) ) {
header('Content-type: text/csv');
header('Content-Type: application/force-download; charset=UTF-8');
header('Cache-Control: no-store, no-cache');
header('Content-disposition: attachment; filename="'.'abc'.'_'.date('Y-m-d_His').'.csv"');
$this->context->smarty->display(_PS_THEME_DIR_.'order-detail-csv.tpl');
}
注文詳細 csv.tpl は次のとおりです。
col1, col2, col3, col4
1,2,3,4
5,6,7,8
(テスト目的でテンプレートに値をハードコードしました)
問題は、リンクをクリックしてこれにアクセスすると、CSV の下部に次のものが追加されることです。
col1, col2, col3, col4
1,2,3,4
5,6,7,8
<!-- MODULE Block footer -->
<div class="block_various_links" id="block_various_links_footer">
<p class="title_block">Information</p>
<ul>
<br />
<b>Notice</b>: Undefined index: PS_CATALOG_MODE in <b>D:\Program_Files\xampp\htdocs \prestashop\cache\smarty\compile\66\40\fc\6640fcf250c9a844925d45d85c39618c4233b46e.file.blockcms.tpl.php</b> on line <b>93</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>D:\Program_Files\xampp\htdocs\prestashop\cache\smarty\compile\66\40\fc\6640fcf250c9a844925d45d85c39618c4233b46e.file.blockcms.tpl.php</b> on line <b>93</b><br />
<li class="first_item"><a href="<br />
<b>Notice</b>: Undefined index: link in <b>D:\Program_Files\xampp\htdocs\prestashop\cache\smarty\compile\66\40\fc\6640fcf250c9a844925d45d85c39618c4233b46e.file.blockcms.tpl.php</b> on line <b>93</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>D:\Program_Files\xampp\htdocs\prestashop\cache\smarty\compile\66\40\fc\6640fcf250c9a844925d45d85c39618c4233b46e.file.blockcms.tpl.php</b> on line <b>93</b><br />
<br />
<b>Fatal error</b>: Call to a member function getPageLink() on a non-object in <b>D:\Program_Files\xampp\htdocs\prestashop\cache\smarty\compile\66\40\fc\6640fcf250c9a844925d45d85c39618c4233b46e.file.blockcms.tpl.php</b> on line <b>93</b><br />
さらに調べたところ、問題は、CSV の下部に出力されているメッセージが「CMS ブロック」と呼ばれるモジュール フックからのものであるということです。admin-> modules->positions-> select CMS block に移動すると、例外フィールドに「orderdetail」と入力して、フッター領域からこのフックを削除できます。
しかし、エラーメッセージは別のフックの別のエラーメッセージに置き換えられ、それも削除すると、延々と続きます。すべてのモジュール位置を編集し、例外として orderdetail を追加するのは現実的ではありません。
prestashop が smarty レイアウトとすべての位置モジュール フックを無視し、純粋な csv (上記の order-detail-csv.tpl で表される) を送信できるように、これを行う適切な方法が必要です。