EC-CUBE3:GoogleMapのAPIキーを管理画面で登録できるようにする方法

GoogleMapの表示においてAPIキーが必須になったため、以下の方法で、
基本情報設定>ショップマスターの地図設定欄にAPIキーの入力ボックスを追加します。
APIキーを入力しないと、「当サイトについて」の地図は表示されません。

api

▼データベースの追加

——————————————
ALTER TABLE dtb_base_info ADD mapapi text;
——————————————

▼ファイルの修正

1 管理画面(基本情報設定>SHOPマスター)

(1)■src/Eccube/Entity/BaseInfo.php

① 追加

// ▼GoogleMapのAPIキー
private $mapapi;

② 追加


// ▼GoogleMapのAPIキー
public function setMapapi($mapapi)
{
$this->mapapi = $mapapi;

return $this;
}
public function getMapapi()
{
return $this->mapapi;
}

 

(2)■src/Eccube/Resource/doctrine/Eccube.Entity.BaseInfo.dcm.yml

manyToOne: の前に追加

mapapi:
type: text
nullable: true

 

(3)■src/Eccube/Form/Type/Admin/ShopMasterType.php

->add('mapapi', 'text', array(
'label' => 'GoogleMapのAPIキー',
'required' => false,
'constraints' => array(
new Assert\Length(array(
'max' => $config['lltext_len'],
)),
)
))

 

(4)■src/Eccube/Resource/template/admin/Setting/Shop/shop_master.twig

① 変更

<h3 class="box-title">地図設定</h3>

<h3 class="box-title">地図設定<span style="font-weight:normal;color:#C00;">(すべてを入力しないと地図は表示されません)</span></h3>

② {{ form_row(form.longitude) }} の次に追加

{{ form_row(form.mapapi) }}

 

2 当サイトについて

■src/Eccube/Resource/template/default/Help/about.twig

26行目付近を変更

{% if BaseInfo.latitude is not null and BaseInfo.longitude is not null %}
<script src="//maps.googleapis.com/maps/api/js?sensor=false"></script>

↓【変更】

{% if BaseInfo.latitude is not null and BaseInfo.longitude is not null and BaseInfo.mapapi is not null %}
<script src="//maps.googleapis.com/maps/api/js?key={{ BaseInfo.mapapi }}&sensor=false"></script>