Compare commits

...

No commits in common. "master" and "dev_4.x_gtag" have entirely different histories.

96 changed files with 8575 additions and 672 deletions

65
.gitattributes vendored Normal file
View File

@ -0,0 +1,65 @@
* text=auto !eol
Sources/Admin1.jpg -text
Sources/FireShot[!!-~]Screen[!!-~]Capture[!!-~]#250[!!-~]-[!!-~]'Conversion-Tracking'[!!-~]-[!!-~]adwords_google_com_ct_ConversionTracking_Manager___c=1858313983&__u=7452293233&__o=cues#acc_ALL_con.png -text
Sources/FireShot[!!-~]Screen[!!-~]Capture[!!-~]#251[!!-~]-[!!-~]'Conversion-Tracking'[!!-~]-[!!-~]adwords_google_com_ct_ConversionTracking_Manager___c=1858313983&__u=7452293233&__o=cues#acc_ALL_con.png -text
Sources/FireShot[!!-~]Screen[!!-~]Capture[!!-~]#252[!!-~]-[!!-~]'Google[!!-~]Analytics'[!!-~]-[!!-~]www_google_com_analytics_web__authuser=0#management_Settings_a50621059w82651812p85583465__m_page=CustomMetrics.png -text
Sources/Google[!!-~]AdWords-Einrichtung.docx -text
Sources/Google[!!-~]Analytics-Einrichtung.docx -text
Sources/Google[!!-~]Services-Installation.docx -text
Sources/UGA_Custom_Dimensions.jpg -text
Sources/UGA_Einstellungen.jpg -text
Sources/UGA_Trichtereinrichtung.jpg -text
Sources/UGA_Trichtereinrichtung_1.jpg -text
Sources/trustedShops.jpg -text
changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleadwordscode.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_googleanalytics.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/blocks/layout/d3_base_optout.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3_googleanalytics.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/d3ga_universal.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwords.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_custom.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_ecommerce.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl -text
changed_full/490-/modules/d3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl -text
copy_this/.noencode -text
copy_this/modules/d3/d3_googleanalytics/IntelliSenseHelper.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_adwords.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_campaigns.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_licence.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_list.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_main.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_trustedstore.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalyticslog.php -text
copy_this/modules/d3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalyticslog_list.php -text
copy_this/modules/d3/d3_googleanalytics/core/smarty/plugins/function.d3getArticleFromOrderArticle.php -text
copy_this/modules/d3/d3_googleanalytics/menu.xml -text
copy_this/modules/d3/d3_googleanalytics/metadata.php -text
copy_this/modules/d3/d3_googleanalytics/models/d3_google_remarketing_articlelister.php -text
copy_this/modules/d3/d3_googleanalytics/models/d3_google_trustedstore_articlelister.php -text
copy_this/modules/d3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_order_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/core/d3_oxutilsview_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/models/d3_oxbasket_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/models/d3_oxbasketitem_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/modules/models/d3_oxorder_googleanalytics.php -text
copy_this/modules/d3/d3_googleanalytics/out/src/d3_googleanalytics.css -text
copy_this/modules/d3/d3_googleanalytics/out/src/d3_googleanalytics_mobile.css -text
copy_this/modules/d3/d3_googleanalytics/picture.png -text
copy_this/modules/d3/d3_googleanalytics/setup/d3_googleanalytics_update.php -text
copy_this/modules/d3/d3_googleanalytics/translations/de/d3_googleanalytics_lang.php -text
copy_this/modules/d3/d3_googleanalytics/translations/en/d3_googleanalytics_lang.php -text
copy_this/modules/d3/d3_googleanalytics/views/admin/de/d3_googleanalytics_lang.php -text
copy_this/modules/d3/d3_googleanalytics/views/admin/en/d3_googleanalytics_lang.php -text
copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_adwords.tpl -text
copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_campaigns.tpl -text
copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_main.tpl -text
copy_this/modules/d3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl -text
setup+doku/Google[!!-~]AdWords-Einrichtung.pdf -text svneol=unset#unset
setup+doku/Google[!!-~]Analytics-Einrichtung.pdf -text svneol=unset#unset
setup+doku/Google[!!-~]Services-Installation.pdf -text
setup+doku/Precheck/d3precheck.php -text
setup+doku/changelog.txt -text

View File

@ -1,2 +0,0 @@
Weitere Informationen zum Modul **{$modulename}** finden Sie in unserem Shop:
[https://www.oxidmodule.com/OXID-eShop/Module/MODULNAME-fuer-Oxid-PE.html](https://www.oxidmodule.com/OXID-eShop/Module/MODULNAME-fuer-Oxid-PE.html)

View File

@ -1,32 +0,0 @@
---
title: Changelog
---
## noch nicht veröffentlicht
---
## 1.1.0.1 - (2019-02-20)
### Fixed
- ...
- ...
---
## 1.1.0.0 - (2018-05-29)
**Minor version upgrade notice: there are some backward-incompatible changes to this release.**
#### Fixed
- Einstellungs-Überladung korrigiert - verwendet Einstellungen der Hauptsprache, wenn in aktueller Sprache keine Einstellungen gespeichert wurden
#### Changed
- kleine Textänderungen in der Installationsroutine
---
## 1.0.0.0 - (2018-05-15)
#### Added
- Angepasst für Shopversion 6.x, Installation via Composer

View File

@ -1,74 +0,0 @@
{
"title": "<i class='fab fa-d3 d3fa-color-blue'></i> MODULNAME",
"moduleversion": "5.0.0.0",
"titledesc": "für den Oxid eShop",
"author": "D³ Data Development",
"moduledate": "17.04.2018",
"editors": "XX/YY",
"tagline": "",
"image": "",
"ignore": {
"files": [],
"folders": [".idea"]
},
"live": {
"clean_urls": true
},
"html": {
"theme": "d3",
"breadcrumbs": true,
"breadcrumb_separator": "Chevrons",
"toggle_code": false,
"date_modified": true,
"date_modified_format": "d.m.Y",
"float": false,
"inherit_index": true,
"auto_landing": true,
"links": {
"Shop": "https://www.oxidmodule.com"
},
"powered_by": ""
},
"languages": {
"editions": "Editionen",
"installation": "Installation",
"manual": "Handbuch",
"changelog": "Changelog",
"support": "Support"
},
"processor": "d3processor",
"language": "de",
"strings": {
"de": {
"CodeBlocks_title": "Code-Blöcke",
"CodeBlocks_hide": "Aus",
"CodeBlocks_below": "Unterhalb",
"CodeBlocks_inline": "Linear",
"CodeBlocks_show": "Code-Blöcke anzeigen",
"Search_placeholder": "Suchen...",
"Link_previous": "Zurück",
"Link_next": "Weiter",
"Edit_on": "Bearbeiten bei :name:",
"View_on_github": "Bei GitHub anzeigen",
"View_documentation": "Dokumentation anzeigen",
"Table_of_contents": "Inhaltsverzeichnis",
"author": "Autor",
"moduledate": "Stand",
"version": "Version",
"editors": "Bearbeiter",
"selectversion": "Version wechseln"
}
},
"variables": {
"modulename" : "<i class='fab fa-d3 d3fa-color-blue'></i> MODULNAME",
"menutitle" : "<i class='fab fa-d3 d3fa-color-blue'></i> MODULNAME",
"modulefolder" : "module_folder",
"metadataident" : "d3moduleid",
"modcfgident" : "d3modident",
"composerident" : "d3/moduleident"
},
"versionselector": false,
"versiondirectoryindex": 2
}

1
copy_this/.noencode Normal file
View File

@ -0,0 +1 @@
copyAsIsFiles=modules

View File

@ -0,0 +1,40 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_oxcmp_utils_googleanalytics_parent extends oxcmp_utils {}
class d3_oxcmp_basket_googleanalytics_parent extends oxcmp_basket {}
/** */
class d3_oxorder_googleanalytics_parent extends oxOrder {}
/** */
class d3_thankyou_googleanalytics_parent extends thankyou {}
/** */
class d3_order_googleanalytics_parent extends order {}
/** */
class d3_oxutilsview_googleanalytics_parent extends oxUtilsView {}
/** */
class d3_oxbasket_googleanalytics_parent extends oxbasket {}
/** */
class d3_oxbasketitem_googleanalytics_parent extends oxBasketItem {}

View File

@ -0,0 +1,47 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_
{
/**
* @return string
*/
public function render()
{
$this->addTplParam('sListClass', 'd3_cfg_googleanalytics_list');
$this->addTplParam('sMainClass', 'd3_cfg_googleanalytics_main');
return parent::render();
}
public function getAdditionalHeadContent()
{
$oViewConf = oxRegistry::getConfig()->getActiveView()->getViewConfig();
$sScriptUrl = $oViewConf->getModuleUrl('d3_googleanalytics', 'out/src/d3_googleanalytics_test.js');
return parent::getAdditionalHeadContent().'
<script src="'.$sScriptUrl.'"></script>
<script type="text/javascript">
if(null === document.getElementById("SePiRENuJOBWx")){
alert("'.oxRegistry::getLang()->translateString('D3_GOOGLEANALYTICS_ADBLOCKER', null, true).'");
}
</script>
';
}
}

View File

@ -0,0 +1,37 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_adwords extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main
{
protected $_sThisTemplate = 'd3_cfg_googleanalytics_adwords.tpl';
protected $_sModId = 'd3_googleanalytics';
protected $_sMenuItemTitle = 'd3mxgoogleanalytics';
protected $_sMenuSubItemTitle = 'd3tbclgoogleanalytics_adwords';
/**
* @return mixed
*/
public function getGaType()
{
return $this->d3GetSet()->getValue('sD3GAType');
}
}

View File

@ -0,0 +1,37 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_campaigns extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main
{
protected $_sThisTemplate = 'd3_cfg_googleanalytics_campaigns.tpl';
protected $_sModId = 'd3_googleanalytics';
protected $_sMenuItemTitle = 'd3mxgoogleanalytics';
protected $_sMenuSubItemTitle = 'd3tbclgoogleanalytics_campaigns';
/**
* @return mixed
*/
public function getGaType()
{
return $this->d3GetSet()->getValue('sD3GAType');
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_licence extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_licence
{
protected $_sModId = 'd3_googleanalytics';
protected $_hasLicence = false;
protected $_hasNewsletterForm = false;
protected $_hasUpdate = true;
protected $_sDefaultHelpLinkAdd = 'Fragen-zu-speziellen-Modulen/Google-Analytics/';
/**
* additional multilang item, which will added as last part to help url
*
* @var string
*/
protected $_sHelpLinkMLAdd = '';
protected $_sMenuItemTitle = 'd3mxgoogleanalytics';
}

View File

@ -0,0 +1,36 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_list extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_list
{
protected $_blD3ShowLangSwitch = false;
/**
* @return null|string
*/
public function render()
{
parent::render();
$this->addTplParam("default_edit", "d3_cfg_googleanalytics_main");
return $this->_sThisTemplate;
}
}

View File

@ -0,0 +1,37 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_main extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main
{
protected $_sThisTemplate = 'd3_cfg_googleanalytics_main.tpl';
protected $_sModId = 'd3_googleanalytics';
protected $_blHasDebugSwitch = true;
protected $_sDebugHelpTextIdent = 'D3_GOOGLEANALYTICS_MAIN_DEBUG';
protected $_sMenuItemTitle = 'd3mxgoogleanalytics';
protected $_sMenuSubItemTitle = 'd3tbclgoogleanalytics_main';
/**
* @return mixed
*/
public function getGaType()
{
return $this->d3GetSet()->getValue('sD3GAType');
}
}

View File

@ -0,0 +1,27 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_cfg_googleanalytics_trustedstore extends D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main
{
protected $_sThisTemplate = 'd3_cfg_googleanalytics_trustedstore.tpl';
protected $_sModId = 'd3_googleanalytics';
protected $_sMenuItemTitle = 'd3mxgoogleanalytics';
protected $_sMenuSubItemTitle = 'd3tbclgoogleanalytics_trustedstore';
}

View File

@ -0,0 +1,33 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_cfg_googleanalyticslog extends D3\ModCfg\Application\Controller\Admin\Log\d3_cfg_log
{
protected $_sModId = 'd3_googleanalytics';
/**
* @return string
*/
public function d3getAdditionalUrlParams()
{
$sRet = parent::d3getAdditionalUrlParams();
if ($this->_sModId) {
$sRet .= '&sD3ModId='.$this->_sModId;
}
return $sRet;
}
}

View File

@ -0,0 +1,19 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_cfg_googleanalyticslog_list extends D3\ModCfg\Application\Controller\Admin\Log\d3_cfg_log_list
{
protected $_sModId = 'd3_googleanalytics';
}

View File

@ -0,0 +1,43 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
/**
* Smarty plugin
* -------------------------------------------------------------
* add [{d3getArticleFromOrderArticle aid="articleid"}] where you want to display content
* -------------------------------------------------------------
*
* @param array $params params
* @param Smarty &$smarty clever simulation of a method
*
* @return string
*/
function smarty_function_d3getArticleFromOrderArticle( $params, &$smarty )
{
$sArtId = $params['aid'];
$oArticle = oxNew('oxarticle');
$oArticle->Load($sArtId);
if (isset($params['assign']) && $params['assign']) {
$smarty->assign($params['assign'], $oArticle);
}
return "use assign param";
}

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="ISO-8859-15"?>
<OX>
<OXMENU id="d3mxd3modules">
<MAINMENU id="d3mxgoogleanalytics">
<SUBMENU id="d3mxgoogleanalytics_settings" cl="d3_cfg_googleanalytics" list="d3_cfg_googleanalytics_list">
<TAB id="d3tbclgoogleanalytics_main" cl="d3_cfg_googleanalytics_main" />
<TAB id="d3tbclgoogleanalytics_adwords" cl="d3_cfg_googleanalytics_adwords" />
<TAB id="d3tbclgoogleanalytics_campaigns" cl="d3_cfg_googleanalytics_campaigns" />
<TAB id="d3tbclgoogleanalytics_trustedstore" cl="d3_cfg_googleanalytics_trustedstore" />
<TAB id="d3tbcl_licence" cl="d3_cfg_googleanalytics_licence" />
</SUBMENU>
<SUBMENU id ="d3mxlog" cl="d3_cfg_googleanalyticslog" list="d3_cfg_googleanalyticslog_list">
<TAB id="d3tbcllog_main" cl="d3_cfg_log_main" />
</SUBMENU>
</MAINMENU>
</OXMENU>
</OX>

View File

@ -0,0 +1,114 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
use D3\ModCfg\Application\Model\d3utils;
/**
* Metadata version
*/
$sMetadataVersion = '1.1';
/**
* Module information
*/
$aModule = array(
'id' => 'd3_googleanalytics',
'title' => (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D&sup3;').
' Google Services Schnittstelle',
'description' => array(
'de' => 'Dieses Modul stellt Ihnen die schnelle und unkomplizierte Einbindung Ihres Google-Analytics-'.
'Kontos in Ihren Shop zur Verf&uuml;gung. Hierbei werden &uuml;ber standardisierte Schnittstellen die '.
'Besucherdaten und eCommerce-Daten zu Google &uuml;bertragen. Ebenfalls &uuml;bermittelt werden Daten '.
'der Website-Suche. Weiterhin k&ouml;nnen &uuml;ber das Modul Shopdaten an Google Adwords und Google '.
'Trusted Shops &uuml;bertragen werden.',
'en' => 'Provides a quick and easy integration with your Google Analytics, Google Adwords and Google '.
'Trusted Shops account to your shop.',
),
'thumbnail' => 'picture.png',
'version' => '4.0.0.1',
'author' => 'D&sup3; Data Development (Inh. Thomas Dartsch)',
'email' => 'support@shopmodule.com',
'url' => 'http://www.oxidmodule.com/',
'extend' => array(
'oxcmp_utils' => 'd3/d3_googleanalytics/modules/components/d3_oxcmp_utils_googleanalytics',
'oxcmp_basket' => 'd3/d3_googleanalytics/modules/components/d3_oxcmp_basket_googleanalytics',
'oxbasket' => 'd3/d3_googleanalytics/modules/models/d3_oxbasket_googleanalytics',
'oxbasketitem' => 'd3/d3_googleanalytics/modules/models/d3_oxbasketitem_googleanalytics',
'oxorder' => 'd3/d3_googleanalytics/modules/models/d3_oxorder_googleanalytics',
'order' => 'd3/d3_googleanalytics/modules/controllers/d3_order_googleanalytics',
'oxutilsview' => 'd3/d3_googleanalytics/modules/core/d3_oxutilsview_googleanalytics',
'thankyou' => 'd3/d3_googleanalytics/modules/controllers/d3_thankyou_googleanalytics',
),
'files' => array(
'd3_cfg_googleanalytics' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics.php',
'd3_cfg_googleanalytics_adwords' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_adwords.php',
'd3_cfg_googleanalytics_campaigns' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_campaigns.php',
'd3_cfg_googleanalytics_licence' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_licence.php',
'd3_cfg_googleanalytics_list' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_list.php',
'd3_cfg_googleanalytics_main' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_main.php',
'd3_cfg_googleanalytics_trustedstore' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalytics_trustedstore.php',
'd3_cfg_googleanalyticslog' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalyticslog.php',
'd3_cfg_googleanalyticslog_list' => 'd3/d3_googleanalytics/controllers/admin/d3_cfg_googleanalyticslog_list.php',
'd3_google_articlelister' => 'd3/d3_googleanalytics/models/d3_google_articlelister.php',
'd3_google_remarketing_articlelister' => 'd3/d3_googleanalytics/models/d3_google_remarketing_articlelister.php',
'd3_google_trustedstore_articlelister' => 'd3/d3_googleanalytics/models/d3_google_trustedstore_articlelister.php',
'd3_googleanalytics_update' => 'd3/d3_googleanalytics/setup/d3_googleanalytics_update.php',
),
'templates' => array(
'd3ga_universal_adwordscode.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_adwordscode.tpl',
'd3ga_universal_remarketing.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_remarketing.tpl',
'd3ga_universal_campaigncode.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_campaigncode.tpl',
'd3ga_universal_trustedstore.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_universal_trustedstore.tpl',
'd3ga_gtag.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/d3ga_gtag.tpl',
'd3ga_gtag_ecommerce.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_gtag_ecommerce.tpl',
'd3ga_gtag_ecommerceproduct.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_gtag_ecommerceproduct.tpl',
'd3ga_gtag_adwords.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_gtag_adwords.tpl',
'd3ga_gtag_custom.tpl' => 'd3/d3_googleanalytics/views/tpl/widget/inc/d3ga_gtag_custom.tpl',
'd3_cfg_googleanalytics_main.tpl' => 'd3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_main.tpl',
'd3_cfg_googleanalytics_adwords.tpl' => 'd3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_adwords.tpl',
'd3_cfg_googleanalytics_campaigns.tpl' => 'd3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_campaigns.tpl',
'd3_cfg_googleanalytics_trustedstore.tpl' => 'd3/d3_googleanalytics/views/admin/tpl/d3_cfg_googleanalytics_trustedstore.tpl',
),
'events' => array(
'onActivate' => '\D3\ModCfg\Application\Model\Install\d3install::checkUpdateStart',
),
'blocks' => array(
array(
'template' => 'layout/base.tpl',
'block' => 'head_css',
'file' => '/views/blocks/layout/d3_base_googleanalytics.tpl',
),
array(
'template' => 'layout/base.tpl',
'block' => 'base_js',
'file' => '/views/blocks/layout/d3_base_googleadwordscode.tpl',
),
array(
'template' => 'layout/footer.tpl',
'block' => 'footer_main',
'file' => '/views/blocks/layout/d3_base_optout.tpl',
),
),
'd3SetupClasses' => array(
'd3_googleanalytics_update',
),
);

View File

@ -0,0 +1,217 @@
<?php
use OxidEsales\Eshop\Application\Component\Widget\ArticleDetails;
use OxidEsales\Eshop\Application\Controller\ArticleDetailsController;
use OxidEsales\Eshop\Application\Model\ArticleList;
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_google_articlelister
{
public $aStartListMethodNames = array(
'getArticleList',
'getTopArticleList',
'getNewestArticles',
'getFirstArticle',
'getCatOfferArticleList',
);
/**
* @param start $oView
*
* @return ArticleList
*/
public function getStartProdList($oView)
{
/** @var oxArticleList $oArticleList */
$oArticleList = oxNew('oxarticlelist');
if (is_array($this->aStartListMethodNames) && count($this->aStartListMethodNames)) {
foreach ($this->aStartListMethodNames as $sListName) {
/** @var oxArticleList $oList */
$mList = call_user_func(array($oView, $sListName));
if ($mList instanceof oxArticleList) {
if ($mList->count()) {
foreach ($mList->getArray() as $sID => $oArticle) {
$oArticleList->offsetSet($sID, $oArticle);
}
}
}
}
}
return $oArticleList;
}
/**
* @param ArticleDetailsController $oView
* @return ArticleList
*/
public function getDetailsProdList($oView)
{
$oArticle = $oView->getProduct();
$oArticleList = oxNew(ArticleList::class);
$oArticleList->offsetSet($oArticle->getId(), $oArticle);
return $oArticleList;
}
/**
* @param oxwArticleDetails $oView
*
* @return array
*/
/**
* @param ArticleDetails $oView
* @return ArticleList
*/
public function getOxwarticledetailsProdList($oView)
{
$oArticle = $oView->getProduct();
$oArticleList = oxNew(ArticleList::class);
$oArticleList->offsetSet($oArticle->getId(), $oArticle);
return $oArticleList;
}
/**
* @param alist $oView
*
* @return array
*/
public function getAlistProdList($oView)
{
return $oView->getArticleList();
}
/**
* @param search $oView
*
* @return ArticleList
*/
public function getSearchProdList($oView)
{
return $oView->getArticleList();
}
/**
* @param vendorlist $oView
*
* @return array
*/
public function getVendorlistProdList($oView)
{
return $oView->getArticleList();
}
/**
* @param manufacturerlist $oView
*
* @return array
*/
public function getManufacturerlistProdList($oView)
{
return $oView->getArticleList();
}
/**
* @param basket $oView
*
* @return ArticleList
*/
public function getBasketProdList($oView)
{
$aArticleList = $oView->getBasketArticles();
$oArticleList = oxNew(ArticleList::class);
/** @var \OxidEsales\Eshop\Application\Model\Article $oArticle */
foreach ($aArticleList as $oArticle) {
$oArticleList->offsetSet($oArticle->getId(), $oArticle);
}
return $oArticleList;
}
/**
* @param order $oView
*
* @return array
*/
public function getOrderProdList($oView)
{
$aArticleList = $oView->getBasketArticles();
return $this->_getProductList($aArticleList);
}
/**
* @param compare $oView
*
* @return array
*/
public function getCompareProdList($oView)
{
$aArticleList = $oView->getCompArtList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_noticelist $oView
*
* @return array
*/
public function getAccount_noticelistProdList($oView)
{
$aArticleList = $oView->getNoticeProductList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_wishlist $oView
*
* @return array
*/
public function getAccount_wishlistProdList($oView)
{
$aArticleList = $oView->getWishProductList();
return $this->_getProductList($aArticleList);
}
/**
* @param $aArticleList
*
* @return array
*/
protected function _getProductList($aArticleList)
{
$aArticleIds = array();
$dPrice = 0;
/** @var oxarticle $oArticle */
if (isset($aArticleList)) {
foreach ($aArticleList as $oArticle) {
$aArticleIds[] = $oArticle->getFieldData($this->sD3GARemarketingSKUField);
if ($this->blD3GARemarketingUseBrutto) {
$dPrice += $oArticle->getPrice()->getBruttoPrice();
} else {
$dPrice += $oArticle->getPrice()->getNettoPrice();
}
}
}
return array('aArtIdList' => $aArticleIds, 'dPrice' => $dPrice);
}
}

View File

@ -0,0 +1,206 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_google_remarketing_articlelister extends d3_google_articlelister
{
public $sD3GARemarketingSKUField = 'oxartnum';
public $blD3GARemarketingUseBrutto = true;
public $aStartListMethodNames = array(
'getArticleList',
'getTopArticleList',
'getNewestArticles',
'getFirstArticle',
'getCatOfferArticleList',
);
/**
* @param start $oView
*
* @return array
*/
public function getStartProdList($oView)
{
/** @var oxArticleList $oArticleList */
$oArticleList = oxNew('oxarticlelist');
if (is_array($this->aStartListMethodNames) && count($this->aStartListMethodNames)) {
foreach ($this->aStartListMethodNames as $sListName) {
/** @var oxArticleList $oList */
$mList = call_user_func(array($oView, $sListName));
if ($mList instanceof oxArticleList) {
if ($mList->count()) {
foreach ($mList->getArray() as $sID => $oArticle) {
$oArticleList->offsetSet($sID, $oArticle);
}
}
}
}
}
return $this->_getProductList($oArticleList);
}
/**
* @param details $oView
*
* @return array
*/
public function getDetailsProdList($oView)
{
$aArticleList = array();
$aArticleList[] = $oView->getProduct();
return $this->_getProductList($aArticleList);
}
/**
* @param oxwArticleDetails $oView
*
* @return array
*/
public function getOxwarticledetailsProdList($oView)
{
$aArticleList = array();
$aArticleList[] = $oView->getProduct();
return $this->_getProductList($aArticleList);
}
/**
* @param alist $oView
*
* @return array
*/
public function getAlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param search $oView
*
* @return array
*/
public function getSearchProdList($oView)
{
$oArticleList = parent::getSearchProdList($oView);
return $this->_getProductList($oArticleList);
}
/**
* @param vendorlist $oView
*
* @return array
*/
public function getVendorlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param manufacturerlist $oView
*
* @return array
*/
public function getManufacturerlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param basket $oView
*
* @return array
*/
public function getBasketProdList($oView)
{
$aArticleList = $oView->getBasketArticles();
return $this->_getProductList($aArticleList);
}
/**
* @param order $oView
*
* @return array
*/
public function getOrderProdList($oView)
{
$aArticleList = $oView->getBasketArticles();
return $this->_getProductList($aArticleList);
}
/**
* @param compare $oView
*
* @return array
*/
public function getCompareProdList($oView)
{
$aArticleList = $oView->getCompArtList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_noticelist $oView
*
* @return array
*/
public function getAccount_noticelistProdList($oView)
{
$aArticleList = $oView->getNoticeProductList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_wishlist $oView
*
* @return array
*/
public function getAccount_wishlistProdList($oView)
{
$aArticleList = $oView->getWishProductList();
return $this->_getProductList($aArticleList);
}
/**
* @param $aArticleList
*
* @return array
*/
protected function _getProductList($aArticleList)
{
$aArticleIds = array();
$dPrice = 0;
/** @var oxarticle $oArticle */
if (isset($aArticleList)) {
foreach ($aArticleList as $oArticle) {
$aArticleIds[] = $oArticle->getFieldData($this->sD3GARemarketingSKUField);
if ($this->blD3GARemarketingUseBrutto) {
$dPrice += $oArticle->getPrice()->getBruttoPrice();
} else {
$dPrice += $oArticle->getPrice()->getNettoPrice();
}
}
}
return array('aArtIdList' => $aArticleIds, 'dPrice' => $dPrice);
}
}

View File

@ -0,0 +1,181 @@
<?php
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_google_trustedstore_articlelister extends d3_google_articlelister
{
private $_sModId = 'd3_googleanalytics';
public $aStartListMethodNames = array(
'getArticleList',
'getTopArticleList',
'getNewestArticles',
'getFirstArticle',
'getCatOfferArticleList',
);
/**
* @param start $oView
*
* @return array
*/
public function getStartProdList($oView)
{
/** @var oxArticleList $oArticleList */
$oArticleList = oxNew('oxarticlelist');
if (is_array($this->aStartListMethodNames) && count($this->aStartListMethodNames)) {
foreach ($this->aStartListMethodNames as $sListName) {
/** @var oxArticleList $oList */
$mList = call_user_func(array($oView, $sListName));
if ($mList instanceof oxArticleList) {
if ($mList->count()) {
foreach ($mList->getArray() as $sID => $oArticle) {
$oArticleList->offsetSet($sID, $oArticle);
}
}
}
}
}
return $this->_getProductList($oArticleList);
}
/**
* @param details $oView
*
* @return array
*/
public function getDetailsProdList($oView)
{
$aArticleList = array();
$aArticleList[] = $oView->getProduct();
return $this->_getProductList($aArticleList);
}
/**
* @param oxwArticleDetails $oView
*
* @return array
*/
public function getOxwarticledetailsProdList($oView)
{
$aArticleList = array();
$aArticleList[] = $oView->getProduct();
return $this->_getProductList($aArticleList);
}
/**
* @param alist $oView
*
* @return array
*/
public function getAlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param search $oView
*
* @return array
*/
public function getSearchProdList($oView)
{
$oArticleList = parent::getSearchProdList($oView);
return $this->_getProductList($oArticleList);
}
/**
* @param vendorlist $oView
*
* @return array
*/
public function getVendorlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param manufacturerlist $oView
*
* @return array
*/
public function getManufacturerlistProdList($oView)
{
$oArticleList = $oView->getArticleList();
return $this->_getProductList($oArticleList);
}
/**
* @param compare $oView
*
* @return array
*/
public function getCompareProdList($oView)
{
$aArticleList = $oView->getCompArtList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_noticelist $oView
*
* @return array
*/
public function getAccount_noticelistProdList($oView)
{
$aArticleList = $oView->getNoticeProductList();
return $this->_getProductList($aArticleList);
}
/**
* don't change method name, it was dynamically generated
* @param account_wishlist $oView
*
* @return array
*/
public function getAccount_wishlistProdList($oView)
{
$aArticleList = $oView->getWishProductList();
return $this->_getProductList($aArticleList);
}
/**
* @param $aArticleList
*
* @return array
*/
protected function _getProductList($aArticleList)
{
$aArticleIds = array();
/** @var oxarticle $oArticle */
if (isset($aArticleList)) {
foreach ($aArticleList as $oArticle) {
$aArticleIds[] = $oArticle->getFieldData(
d3_cfg_mod::get($this->_sModId)->getValue('sD3GATSShoppingArtId')
);
}
}
return array('aArtIdList' => $aArticleIds);
}
}

View File

@ -0,0 +1,38 @@
<?php
use OxidEsales\Eshop\Core\Registry;
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_oxcmp_basket_googleanalytics extends d3_oxcmp_basket_googleanalytics_parent
{
public function toBasket($sProductId = null, $dAmount = null, $aSel = null, $aPersParam = null, $blOverride = false)
{
$sProductId = $sProductId ? $sProductId : \OxidEsales\Eshop\Core\Registry::getConfig()->getRequestParameter('aid');
$dAmount = isset($dAmount) ? $dAmount : \OxidEsales\Eshop\Core\Registry::getConfig()->getRequestParameter('am');
$oGAAction = oxNew(stdClass::class);
$oGAAction->action = __FUNCTION__;
$oGAAction->product = $sProductId;
$oGAAction->amount = $dAmount;
Registry::getSession()->setVariable('d3GABasketAction', $oGAAction);
$sRedirectUrl = parent::toBasket($sProductId, $dAmount, $aSel, $aPersParam, $blOverride);
return $sRedirectUrl;
}
// changeBasket for removing
}

View File

@ -0,0 +1,792 @@
<?php
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use Doctrine\DBAL\DBALException;
use OxidEsales\Eshop\Application\Controller\FrontendController;
use OxidEsales\Eshop\Application\Model\Article as Article;
use OxidEsales\Eshop\Application\Model\ArticleList;
use OxidEsales\Eshop\Application\Model\DeliverySet;
use OxidEsales\Eshop\Application\Model\Payment as Payment;
use OxidEsales\Eshop\Application\Model\Voucher;
use OxidEsales\Eshop\Application\Model\VoucherList;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_oxcmp_utils_googleanalytics extends d3_oxcmp_utils_googleanalytics_parent
{
private $_sModId = 'd3_googleanalytics';
public $aD3GAPageTypes = array(
'start' => 'home',
'search' => 'searchresults',
'alist' => 'category',
'manufacturerlist' => 'category',
'vendorlist' => 'category',
'details' => 'product',
'oxwarticledetails' => 'product',
'basket' => 'cart',
'user' => 'cart',
'payment' => 'cart',
'order' => 'cart',
'thankyou' => 'purchase',
);
/**
* @return null
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws StandardException
*/
public function render()
{
$ret = parent::render();
$oSet = d3_cfg_mod::get($this->_d3getModId());
if ($oSet->isActive()) {
/** @var $oParentView FrontendController */
$oParentView = $this->getParent();
$oParentView->addTplParam('blD3GoogleAnalyticsActive', $oSet->isActive());
$oParentView->addTplParam('oD3GASettings', $oSet);
$oParentView->addTplParam('oD3GAActCurrency', Registry::getConfig()->getActShopCurrencyObject());
$oParentView->addTplParam('sD3GAPageLocation', $oParentView->getBaseLink());
$oParentView->addTplParam('sD3GAPagePath', str_replace(Registry::getConfig()->getShopUrl(), '', $oParentView->getBaseLink()));
$oParentView->addTplParam('oShop', Registry::getConfig()->getActiveShop());
// prevent overwriting with empty title from later loaded widgets
if (false == $oParentView->getViewDataElement('sD3GAPageTitle')) {
$oParentView->addTplParam('sD3GAPageTitle', $oParentView->getTitle() ? $oParentView->getTitle() : ucfirst($oParentView->getClassKey()));
}
if (Registry::getSession()->getUser() && ($sUserId = Registry::getSession()->getUser()->getId())) {
$oParentView->addTplParam('sD3GAUserId', md5($sUserId));
}
$oParentView->addTplParam('sAFEGetMoreUrls', $this->afGetMoreUrls());
$oParentView->addTplParam('sD3GASendPageViewParameter', $this->d3getSendPageViewParameters());
$oParentView->addTplParam('iD3GASendNoBounceEventTime', $this->d3GetSendNoBounceEventTime());
if ($oSet->getValue('sD3GATSActive')) {
$oParentView->addTplParam('sD3CurrentGTSLang', $this->d3GetGTSLang());
}
$this->setECommerceParams();
if ($oSet->getValue('sD3GATSActive') && $oSet->getValue('sD3GATSShoppingActive')) {
$aInfos = $this->d3GATSGetProdInfos();
$oParentView->addTplParam('sD3GATSProdId', $this->d3GATSGetProdIdList($aInfos['aArtIdList']));
}
if ($oSet->getValue('blD3GASetRemarketing') || $oSet->getValue('blD3GAUseAnalyticsRemarketing')) {
$aInfos = $this->d3GetGAProdInfos();
$oParentView->addTplParam('sD3GARemarketingProdId', $this->d3GetGAProdIdList($aInfos['aArtIdList']));
$oParentView->addTplParam('sD3GARemarketingProdId2', $this->d3GetGAProdIdList($aInfos['aArtIdList'], false));
$oParentView->addTplParam(
'sD3GARemarketingPrice',
$aInfos['dPrice'] > 0 ? number_format($aInfos['dPrice'], 2, '.', ''): 0
);
$oParentView->addTplParam('sD3GARemarketingPageType', $this->d3GetGAPageType());
}
}
return $ret;
}
/**
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function setECommerceParams()
{
/** @var $oParentView FrontendController */
$oParentView = $this->getParent();
$oSet = d3_cfg_mod::get($this->_d3getModId());
if ($oSet->getValue('blD3GASendECommerce')) {
$oParentView->addTplParam('blIsImpressionViewList', false);
$oParentView->addTplParam('blIsCheckoutViewList', false);
$oParentView->addTplParam('blIsPurchasedList', false);
$oParentView->addTplParam('blIsBasketAction', false);
if ($this->isImpressionViewList()) {
$oParentView->addTplParam('blIsImpressionViewList', true);
$oParentView->addTplParam('aD3GAProdInfos', $this->d3GAGetProdInfos());
$oParentView->addTplParam('sImpressionListType', $this->d3GAGetImpressionListType());
$oParentView->addTplParam('sImpressionViewType', $this->d3GAGetImpressionViewType());
} elseif ($this->isCheckoutViewList()) {
$oParentView->addTplParam('blIsCheckoutViewList', true);
/** @var \OxidEsales\Eshop\Application\Model\Basket $basket */
$basket = Registry::getSession()->getBasket();
$oParentView->addTplParam('oBasket', $basket);
$voucherList = oxNew(VoucherList::class);
foreach ($basket->getVouchers() as $voucher) {
$oVoucher = oxNew(Voucher::class);
$oVoucher->load($voucher->sVoucherId);
$voucherList->offsetSet($oVoucher->getId(), $oVoucher);
}
$oParentView->addTplParam('oVoucherList', $voucherList);
$oParentView->addTplParam('iCheckoutStep', $this->d3GAGetCheckoutStep());
$oParentView->addTplParam('sImpressionViewType', $this->d3GAGetImpressionViewType());
$oShipping = oxNew(DeliverySet::class);
if ($basket->getShippingId()) $oShipping->load($basket->getShippingId());
$oPayment = oxNew( Payment::class);
if ($basket->getPaymentId()) $oPayment->load($basket->getPaymentId());
$oParentView->addTplParam('checkoutOptionValue', $oShipping->getFieldData('oxtitle').' + '.$oPayment->getFieldData('oxdesc'));
} elseif ($this->isPurchasedList()) {
$oParentView->addTplParam('blIsPurchasedList', true);
/** @var \OxidEsales\Eshop\Application\Model\Basket $basket */
$basket = $oParentView->getBasket();
$order = oxNew(\OxidEsales\Eshop\Application\Model\Order::class);
$order->load($basket->getOrderId());
$oParentView->addTplParam('oOrder', $order);
$voucherList = oxNew(VoucherList::class);
foreach ($basket->getVouchers() as $voucher) {
$oVoucher = oxNew(Voucher::class);
$oVoucher->load($voucher->sVoucherId);
$voucherList->offsetSet($oVoucher->getId(), $oVoucher);
}
$oParentView->addTplParam('oVoucherList', $voucherList);
$oParentView->addTplParam('iCheckoutStep', 5);
$oParentView->addTplParam('dVat', array_sum($order->getProductVats(false)));
$oShipping = oxNew(DeliverySet::class);
if ($basket->getShippingId()) $oShipping->load($basket->getShippingId());
$oPayment = oxNew( Payment::class);
if ($basket->getPaymentId()) $oPayment->load($basket->getPaymentId());
$oParentView->addTplParam('checkoutOptionValue', $oShipping->getFieldData('oxtitle').' + '.$oPayment->getFieldData('oxdesc'));
}
if (($basketAction = Registry::getSession()->getVariable('d3GABasketAction'))) {
$oParentView->addTplParam('blIsBasketAction', true);
$oParentView->addTplParam('sBasketActionType', $this->d3GAGetBasketActionType());
$oArticleList = oxNew(ArticleList::class);
$oArticle = oxNew( Article::class);
$oArticle->load($basketAction->product);
$oArticleList->offsetSet($oArticle->getId(), $oArticle);
$oParentView->addTplParam('aD3GABasketProdInfos', $oArticleList);
$oParentView->addTplParam('dAmount', $basketAction->amount);
Registry::getSession()->deleteVariable('d3GABasketAction');
}
}
}
public function isImpressionViewList()
{
// ToDo: has to be completed
$impressionViews = ['search', 'start', 'alist', 'vendorlist', 'manufacturerlist', 'details', 'oxwarticledetails'];
$oCurrentView = Registry::getConfig()->getActiveView();
return in_array(strtolower($oCurrentView->getClassKey()), $impressionViews);
}
public function isCheckoutViewList()
{
// ToDo: has to be completed
$impressionViews = ['basket', 'user', 'payment', 'order'];
$oCurrentView = Registry::getConfig()->getActiveView();
return in_array(strtolower($oCurrentView->getClassKey()), $impressionViews);
}
public function isPurchasedList()
{
$impressionViews = ['thankyou'];
$oCurrentView = Registry::getConfig()->getActiveView();
return in_array(strtolower($oCurrentView->getClassKey()), $impressionViews);
}
public function d3GAGetImpressionViewType()
{
switch (strtolower(Registry::getConfig()->getActiveView()->getClassKey())) {
case 'details':
case 'oxwarticledetails':
return 'view_item';
case 'basket':
return 'begin_checkout';
case 'user':
case 'payment':
case 'order':
return 'checkout_progress';
default:
return 'view_item_list';
}
}
public function d3GAGetCheckoutStep()
{
switch (strtolower(Registry::getConfig()->getActiveView()->getClassKey())) {
case 'basket':
return 1;
case 'user':
return 2;
case 'payment':
return 3;
case 'order':
return 4;
}
return 0;
}
public function d3GAGetBasketActionType()
{
$basketAction = Registry::getSession()->getVariable('d3GABasketAction');
switch ($basketAction->action) {
case 'toBasket':
return 'add_to_cart';
case 'oxwarticledetails':
return 'remove_from_cart';
}
}
public function d3GAGetImpressionListType()
{
$oCurrentView = Registry::getConfig()->getActiveView();
// ToDo: has to be completed
switch ($oCurrentView->getClassKey()) {
case 'search':
return "Search Results";
case 'start':
return "Start Page Results";
case 'alist':
return "Category Results";
case 'vendorlist':
return "Vendor List Results";
case 'manufacturerlist':
return "Manufacturer List Results";
}
}
/**
* @return string
*/
private function _d3getModId()
{
return $this->_sModId;
}
/**
* @return string
*/
public function afGetMoreUrls()
{
if (false == d3_cfg_mod::get($this->_sModId)->getValue('blD3GAAllowDomainLinker')) {
return '';
}
$sSeparator = ',';
return implode($sSeparator, $this->_d3GetNonBaseLanguageUrls());
}
/**
* @return array
*/
protected function _d3GetNonBaseLanguageUrls()
{
$myConfig = oxRegistry::getConfig();
$aLanguageUrls = $myConfig->getConfigParam('aLanguageURLs');
$aSslLanguageUrls = $myConfig->getConfigParam('aLanguageSSLURLs');
$aUrls = array();
if ($myConfig->getConfigParam('bl_perfLoadLanguages')) {
$aLanguages = oxRegistry::getLang()->getLanguageArray(null, true, true);
reset($aLanguages);
foreach ($aLanguages as $oVal) {
$this->_d3AddLanguageUrlsToList($aLanguageUrls, $oVal, $aSslLanguageUrls, $aUrls);
}
}
$this->_d3UnsetCurrentUrl($aUrls);
return $aUrls;
}
/**
* @param $aLanguageUrls
* @param $oVal
* @param $aSslLanguageUrls
* @param $aUrls
*
* @return array
*/
protected function _d3AddLanguageUrlsToList($aLanguageUrls, $oVal, $aSslLanguageUrls, &$aUrls)
{
$blIsSsl = oxRegistry::getConfig()->isSsl();
if ($this->_d3CheckLanguageUrlsToList($aLanguageUrls, $oVal, $blIsSsl)) {
$sUrl = $this->_d3GANormalizeUrl($aLanguageUrls[$oVal->id]);
$aUrls[md5($sUrl)] = "'" . $sUrl . "'";
}
if ($this->_d3CheckLanguageUrlsToList($aSslLanguageUrls, $oVal, !$blIsSsl)) {
$sSslUrl = $this->_d3GANormalizeUrl($aLanguageUrls[$oVal->id]);
$aUrls[md5($sSslUrl)] = "'" . $sSslUrl . "'";
}
return $aUrls;
}
/**
* @param $sUrl
*
* @return string
*/
protected function _d3GANormalizeUrl($sUrl)
{
$sPattern = "^http(s?)://";
/** @var \D3\ModCfg\Application\Model\d3str $oD3Str */
$oD3Str = oxNew(\D3\ModCfg\Application\Model\d3str::class);
return preg_replace('@'.$sPattern.'@', '', $oD3Str->untrailingslashit($sUrl));
}
/**
* @param $aUrls
*/
protected function _d3UnsetCurrentUrl(&$aUrls)
{
unset($aUrls[md5($this->_d3GANormalizeUrl(oxRegistry::getConfig()->getCurrentShopUrl()))]);
}
/**
* @param $aLanguageUrls
* @param $oVal
* @param $blIsSsl
*
* @return bool
*/
protected function _d3CheckLanguageUrlsToList($aLanguageUrls, $oVal, $blIsSsl)
{
return $blIsSsl || $aLanguageUrls[$oVal->id] != $aLanguageUrls[oxRegistry::getLang()->getBaseLanguage()];
}
/**
* @return string
*/
public function d3getSendPageViewParameters()
{
if (d3_cfg_mod::get($this->_sModId)->getValue('sD3GAType') == 'async') {
return $this->_d3getAsyncSendpageViewParameters();
} elseif (d3_cfg_mod::get($this->_sModId)->getValue('sD3GAType') == 'universal') {
return $this->_d3getUniversalSendPageViewParameters();
} elseif (d3_cfg_mod::get($this->_sModId)->getValue('sD3GAType') == 'gtag') {
return $this->_d3getGtagSendPageViewParameters();
}
}
/**
* @return string
*/
protected function _d3getAsyncSendpageViewParameters()
{
$aParameter = array();
/** @var oxUBase $oCurrentView */
$oCurrentView = oxRegistry::getConfig()->getActiveView();
$oCurrentView->getIsOrderStep();
$aParameter = $this->_d3getAsynchSendpageViewClassParameter($oCurrentView, $aParameter);
if (count($aParameter)) {
return ", " . implode(',', $aParameter) . "";
}
return '';
}
/**
* @return string
*/
protected function _d3getUniversalSendPageViewParameters()
{
$aParameter = array();
/** @var oxUBase $oCurrentView */
$oCurrentView = oxRegistry::getConfig()->getActiveView();
$oCurrentView->getIsOrderStep();
$aParameter = $this->_d3getUniversalSendPageViewPageParameter($oCurrentView, $aParameter);
$aParameter = $this->_d3getUniversalSendPageViewDebugParameter($aParameter);
if (count($aParameter)) {
return ", {" . implode(',', $aParameter) . "}";
}
return '';
}
protected function _d3getGtagSendPageViewParameters()
{
return '';
}
/**
* @return bool
*/
protected function _d3HasNoPageParameter()
{
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
return true;
}
return false;
}
/**
* Indicates the type of page that the tag is on. Valid values:
*
* home - Used on the home page or landing page of your site.
* searchresults - Used on pages where the results of a user's search are displayed.
* category - Used on pages that list multiple items within a category, for example a page showing all shoes in a given style.
* product - Used on individual product pages.
* cart - Used on the cart/basket/checkout page.
* purchase - Used on the page shown once a user has purchased (and so converted), for example a "Thank You" or confirmation page.
* other - Used where the page does not fit into the other types of page, for example a "Contact Us" or "About Us" page.
*
* @link https://developers.google.com/adwords-remarketing-tag/parameters#retail-sites
* @return string
*/
public function d3GetGAPageType()
{
$oCurrentView = oxRegistry::getConfig()->getActiveView();
$key = strtolower($oCurrentView->getClassName());
if (array_key_exists($key, $this->aD3GAPageTypes)) {
return $this->aD3GAPageTypes[$key];
};
return 'other';
}
/**
* @return string
*/
public function d3GetGTSLang()
{
$aHomeCountries = oxRegistry::getConfig()->getConfigParam('aHomeCountry');
$aKeys = array_keys($aHomeCountries);
$sHomeCountryId = $aHomeCountries[current($aKeys)];
/** @var oxcountry $oCountry */
$oCountry = oxNew('oxcountry');
$oCountry->load($sHomeCountryId);
return strtolower(oxRegistry::getLang()->getLanguageAbbr()).'_'.
strtoupper($oCountry->getFieldData('OXISOALPHA2'));
}
/**
* @return array
*/
public function d3GATSGetProdInfos()
{
startProfile(__METHOD__);
$oCurrentView = Registry::getConfig()->getActiveView();
$aArticleIds = array();
$sMethodName = 'get'.ucfirst($oCurrentView->getClassKey())."ProdList";
$oArticleLister = oxNew('d3_google_trustedstore_articlelister');
if (method_exists($oArticleLister, $sMethodName)) {
stopProfile(__METHOD__);
return call_user_func(array($oArticleLister, $sMethodName), $oCurrentView);
}
stopProfile(__METHOD__);
return array('aArtIdList' => $aArticleIds);
}
/**
* @return ArticleList
*/
public function d3GAGetProdInfos()
{
startProfile(__METHOD__);
$oCurrentView = Registry::getConfig()->getActiveView();
$oArticleList = oxNew(ArticleList::class);
$sMethodName = 'get'.ucfirst($oCurrentView->getClassKey())."ProdList";
$oArticleLister = oxNew('d3_google_articlelister');
if (method_exists($oArticleLister, $sMethodName)) {
stopProfile(__METHOD__);
return call_user_func(array($oArticleLister, $sMethodName), $oCurrentView);
}
stopProfile(__METHOD__);
return $oArticleList;
}
/**
* @param array $aArticleIds
*
* @return string
*/
public function d3GATSGetProdIdList($aArticleIds)
{
if (count($aArticleIds)) {
$aKeys = array_keys($aArticleIds);
return $aArticleIds[current($aKeys)];
} else {
return "not_set";
}
}
/**
* @return array
*/
public function d3GetGAProdInfos()
{
startProfile(__METHOD__);
$oCurrentView = oxRegistry::getConfig()->getActiveView();
$aArticleIds = array();
$dPrice = 0;
$sMethodName = 'get'.ucfirst($oCurrentView->getClassName())."ProdList";
$oArticleLister = oxNew('d3_google_remarketing_articlelister');
if (method_exists($oArticleLister, $sMethodName)) {
stopProfile(__METHOD__);
$aRet = call_user_func(array($oArticleLister, $sMethodName), $oCurrentView);
stopProfile(__METHOD__);
return $aRet;
}
stopProfile(__METHOD__);
return array('aArtIdList' => $aArticleIds, 'dPrice' => $dPrice);
}
/**
* @param array $aArticleIds
*
* @return string
*/
public function d3GetGAProdIdList($aArticleIds, $blFormatArray = true)
{
if (count($aArticleIds)) {
return $blFormatArray ?
"['".implode("', '", $aArticleIds)."']" :
"'".implode(", ", $aArticleIds)."'";
} else {
return $blFormatArray ?
"''" :
false;
}
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getCreateDomainNameParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('sD3GASetDomainName')) {
$aParameter[] = "'cookieDomain': '" . d3_cfg_mod::get($this->_sModId)->getValue('sD3GASetDomainName') . "'";
$aParameter[] = "'legacyCookieDomain': '" .
d3_cfg_mod::get($this->_sModId)->getValue('sD3GASetDomainName') . "'";
return $aParameter;
}
return $aParameter;
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getCreateCookiePathParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('sD3GASetCookiePath')) {
$aParameter[] = "'cookiePath': '" . d3_cfg_mod::get($this->_sModId)->getValue('sD3GASetCookiePath') . "'";
return $aParameter;
}
return $aParameter;
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getCreateDomainLinkerParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('blD3GAAllowDomainLinker')) {
$aParameter[] = "'allowLinker': true";
return $aParameter;
}
return $aParameter;
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getCreateSpeedSamplerateParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('iD3GASiteSpeedSampleRate')) {
$aParameter[] = "'siteSpeedSampleRate': " .
d3_cfg_mod::get($this->_sModId)->getValue('iD3GASiteSpeedSampleRate');
return $aParameter;
}
return $aParameter;
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getCreateSamplerateParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('iD3GASampleRate')) {
$aParameter[] = "'sampleRate': " . d3_cfg_mod::get($this->_sModId)->getValue('iD3GASampleRate');
return $aParameter;
}
return $aParameter;
}
/**
* @param $aParameter
* @return array
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
protected function _d3getCreateAnonymizeIpParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->getValue('blD3GAAnonymizeIP')) {
$aParameter[] = "'anonymize_ip': true'";
}
return $aParameter;
}
/**
* @param oxUBase $oCurrentView
* @param array $aParameter
*
* @return array
*/
protected function _d3getAsynchSendpageViewClassParameter($oCurrentView, $aParameter)
{
if ($oCurrentView->getIsOrderStep() ||
strtolower($oCurrentView->getClassName()) == 'thankyou' ||
$this->_d3HasNoPageParameter()
) {
$aParameter[] = "'/{$oCurrentView->getClassName()}.html'";
return $aParameter;
}
return $aParameter;
}
/**
* @param oxUBase $oCurrentView
* @param array $aParameter
*
* @return array
*/
protected function _d3getGtagSendPageViewPageParameter($oCurrentView, $aParameter)
{
if ($oCurrentView->getIsOrderStep() || strtolower($oCurrentView->getClassName()) == 'thankyou') {
$aParameter[] = "'page_path': '/{$oCurrentView->getClassName()}.html'";
$aParameter[] = "'page_title': 'Checkout: " . ucfirst($oCurrentView->getClassName()) . "'";
} elseif ($this->_d3HasNoPageParameter()) {
$aParameter[] = "'page_path': '/{$oCurrentView->getClassName()}.html'";
$aParameter[] = "'page_title': '" . ucfirst($oCurrentView->getClassName()) . "'";
}
return $aParameter;
}
/**
* @param $aParameter
*
* @return array
*/
protected function _d3getUniversalSendPageViewDebugParameter($aParameter)
{
if (d3_cfg_mod::get($this->_sModId)->hasDebugMode()) {
$aParameter[] = "
'hitCallback': function() {
alert('analytics.js done sending data');
}
";
return $aParameter;
}
return $aParameter;
}
/**
* @return int
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function d3GetSendNoBounceEventTime()
{
$iTime = d3_cfg_mod::get($this->_sModId)->getValue('iSendNoBounceEventTime');
if (isset($iTime) && is_int($iTime)) {
return $iTime;
}
return 10000;
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @link http://www.aikme.de
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) & aikme GmbH
*/
class d3_order_googleanalytics extends d3_order_googleanalytics_parent
{
public function init()
{
parent::init();
$this->_d3SetIsNewCustomer();
}
protected function _d3SetIsNewCustomer()
{
$oUser = $this->getUser();
$isNewCustomer = (isset($oUser) && $oUser instanceof oxuser) ? $oUser->inGroup('oxidnotyetordered') : 0 ;
oxRegistry::getSession()->setVariable('iD3GANewCustomer', (int)$isNewCustomer);
}
}

View File

@ -0,0 +1,290 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @link http://www.aikme.de
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch) & aikme GmbH
*/
class d3_thankyou_googleanalytics extends d3_thankyou_googleanalytics_parent
{
private $_sModCfgId = 'd3_googleanalytics';
public $aD3GAWeekendDays = array(
6, // Samstag
7, // Sonntag
);
/**
* Format Tag-Monat (jeweils mit führenden Nullen)
* @var array
*/
public $aD3GAfixFeastDays = array(
'01-01', // Neujahr
'01-05', // Tag der Arbeit
'03-10', // Tag der deutschen Einheit
'25-12', // 1. Weihnachtsfeiertag
'26-12', // 2. Weihnachtsfeiertag
);
protected $_blD3GADateChanged = false;
/**
* @return int
*/
public function isNewCustomer()
{
$iIsNewCustomer = oxRegistry::getSession()->getVariable("iD3GANewCustomer");
oxRegistry::getSession()->deleteVariable("iD3GANewCustomer");
return $iIsNewCustomer;
}
/**
* @param $sGACode
*/
public function logCode($sGACode)
{
\D3\ModCfg\Application\Model\Configuration\d3_cfg_mod::get($this->_sModCfgId)->d3getLog()->log(
\D3\ModCfg\Application\Model\Log\d3log::NOTICE,
__CLASS__,
__FUNCTION__,
__LINE__,
'GA TrackingCode',
$sGACode
);
}
/**
* @return oxcountry
*/
public function d3GAGetUserCountry()
{
$sCountryId = $this->getOrder()->getFieldData('oxbillcountryid');
/** @var oxcountry $oCountry */
$oCountry = oxNew('oxcountry');
$oCountry->load($sCountryId);
return $oCountry;
}
/**
* @return string
*/
public function d3GAgetEstimatedShippingDate()
{
startProfile(__METHOD__);
$iTimeStamp = $this->_d3GAgetEstimatedDate('iEstShippingTimeValue', time());
stopProfile(__METHOD__);
return $iTimeStamp;
}
/**
* @return string
*/
public function d3GAgetEstimatedDeliveryDate()
{
startProfile(__METHOD__);
$iShippingDate = $this->d3GAgetEstimatedShippingDate();
$iTimeStamp = $this->_d3GAgetEstimatedDate('iEstDeliveryTimeValue', $iShippingDate);
stopProfile(__METHOD__);
return $iTimeStamp;
}
/**
* @param string $sModCfgVarName
* @param int $iTimestamp
*
* @return int
*/
protected function _d3GAgetEstimatedDate($sModCfgVarName, $iTimestamp)
{
// change shipping time for not on stock articles
if ($sModCfgVarName == 'iEstShippingTimeValue' && $this->hasOutOfStockArticles()) {
$sModCfgVarName = 'iEstShippingTimeValueOutOfStock';
}
$iTimeValue = \D3\ModCfg\Application\Model\Configuration\d3_cfg_mod::get($this->_sModCfgId)->getValue($sModCfgVarName);
for ($i = 0; $i < $iTimeValue; $i++) {
$iTimestamp += 86400;
// check, if transportation day is a working day, else transportation has a break
do {
$this->_blD3GADateChanged = false;
$iTimestamp = $this->_d3GAskipIdlePeriod($iTimestamp);
} while ($this->_blD3GADateChanged === true);
}
return $iTimestamp;
}
/**
* @param $iTimestamp
*
* @return int
*/
protected function _d3GAskipIdlePeriod($iTimestamp)
{
startProfile(__METHOD__);
$iWeekday = date('N', $iTimestamp);
if (in_array($iWeekday, $this->aD3GAWeekendDays)) {
$iOffset = 8 - $iWeekday;
$iTimestamp += $iOffset * 86400;
$this->_blD3GADateChanged = true;
}
stopProfile(__METHOD__);
return $this->_d3GAskipFeastDays($iTimestamp);
}
/**
* @param $iTimestamp
*
* @return int
*/
protected function _d3GAskipFeastDays($iTimestamp)
{
startProfile(__METHOD__);
while (in_array(date('d-m', $iTimestamp), $this->aD3GAfixFeastDays)) {
$iTimestamp += 86400;
$this->_blD3GADateChanged = true;
}
stopProfile(__METHOD__);
return $iTimestamp;
}
/**
* @return string
*/
public function d3GAhasBackorderPreorder()
{
return $this->hasOutOfStockArticles() ? 'Y' : 'N';
}
/**
* @param oxorderarticle $oOrderArticle
*
* @return bool
*/
protected function _d3GAhasArticleBackorderPreorder(oxorderarticle $oOrderArticle)
{
/** @var oxarticle $oArticle */
$oArticle = $oOrderArticle->getArticle();
if ($oArticle->getFieldData('oxstockflag') != 4 // Fremdlager
&& $oOrderArticle->getFieldData('oxamount') > $oOrderArticle->getFieldData('oxstock')
) {
return true;
}
return false;
}
/**
* @return string
*/
public function d3GAhasDigitalGoods()
{
/** @var oxorderarticle $oOrderArticle */
foreach ($this->getOrder()->getOrderArticles() as $oOrderArticle) {
if ($this->_d3GAhasArticleDigitalGoods($oOrderArticle)) {
return 'Y';
}
};
return 'N';
}
/**
* @param oxorderarticle $oOrderArticle
*
* @return bool
*/
protected function _d3GAhasArticleDigitalGoods(oxorderarticle $oOrderArticle)
{
/** @var oxarticle $oArticle */
$oArticle = $oOrderArticle->getArticle();
$oArticleFileList = $oArticle->getArticleFiles();
if ($oArticle->getFieldData('oxisdownloadable')
&& $oArticleFileList->count()
) {
if ($this->_d3GAhasArticlePurchasedDownload($oArticleFileList)) {
return true;
}
}
return false;
}
/**
* @param oxList $oArticleFileList
*
* @return bool
*/
protected function _d3GAhasArticlePurchasedDownload(oxList $oArticleFileList)
{
/** @var oxfile $oArticleFile */
foreach ($oArticleFileList->getArray() as $oArticleFile) {
if ($oArticleFile->getFieldData('oxpurchasedonly')) {
return true;
}
}
return false;
}
/**
* @param oxorderarticle $oOrderArticle
*
* @return string
*/
public function d3GAgetProductId($oOrderArticle)
{
switch (\D3\ModCfg\Application\Model\Configuration\d3_cfg_mod::get($this->_sModCfgId)->getValue('sD3GATSShoppingArtId')) {
case 'oxartnum':
return $oOrderArticle->getFieldData('oxartnum');
case 'oxid':
return $oOrderArticle->getFieldData('oxartid');
};
return $oOrderArticle->getFieldData(\D3\ModCfg\Application\Model\Configuration\d3_cfg_mod::get($this->_sModCfgId)->getValue('sD3GATSShoppingArtId'));
}
/**
* @return bool
*/
public function hasOutOfStockArticles()
{
if (oxRegistry::getConfig()->getConfigParam('blUseStock')) {
foreach ($this->getOrder()->getOrderArticles() as $oOrderArticle) {
if ($this->_d3GAhasArticleBackorderPreorder($oOrderArticle)) {
return true;
}
}
}
return false;
}
}

View File

@ -0,0 +1,36 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_oxutilsview_googleanalytics extends d3_oxutilsview_googleanalytics_parent
{
/**
* @param object $oSmarty
*
* @return null|void
*/
protected function _fillCommonSmartyProperties($oSmarty)
{
parent::_fillCommonSmartyProperties($oSmarty);
$oSmarty->plugins_dir[] =
oxRegistry::getConfig()->getActiveView()->getViewConfig()->getModulePath('d3_googleanalytics').
'core/smarty/plugins';
}
}

View File

@ -0,0 +1,91 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright © Data Development, Thomas Dartsch
* @author Data Development - Daniel Seifert <ds@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_oxbasket_googleanalytics extends d3_oxbasket_googleanalytics_parent
{
/**
* @return string
*/
public function d3GetCurrentLocatorTitle()
{
$sTitle = '';
/** @var \OxidEsales\Eshop\Application\Controller\FrontendController $oView */
$oView = oxRegistry::getConfig()->getActiveView();
if (method_exists($oView, 'getBreadCrumb') &&
($aPaths = $oView->getBreadCrumb())
) {
foreach ($aPaths as $aPath) {
$sTitle .= "/".$aPath['title'];
}
} elseif ($oView->getClassName() == 'details' &&
(
(
($oCatTree = $oView->getCategoryTree()) &&
($oCatPath = $oCatTree->getPath())
) || (
($oCatTree = $oView->getManufacturerTree()) &&
($oCatPath = $oCatTree->getPath())
)
)
) {
foreach ($oCatPath as $oCat) {
$sTitle .= "/".$oCat->getFieldData('oxtitle');
}
} else {
$sTitle = "page: ".ucfirst($oView->getClassName());
}
return $sTitle;
}
/**
* @param string $sProductID
* @param float $dAmount
* @param null $aSel
* @param null $aPersParam
* @param bool $blOverride
* @param bool $blBundle
* @param null $sOldBasketItemId
*
* @return object
*/
public function addToBasket(
$sProductID,
$dAmount,
$aSel = null,
$aPersParam = null,
$blOverride = false,
$blBundle = false,
$sOldBasketItemId = null
) {
$oBasketItem = parent::addToBasket(
$sProductID,
$dAmount,
$aSel,
$aPersParam,
$blOverride,
$blBundle,
$sOldBasketItemId
);
if ($oBasketItem) {
$oBasketItem->d3SetLocatorTitle($this->d3GetCurrentLocatorTitle());
}
return $oBasketItem;
}
}

View File

@ -0,0 +1,38 @@
<?php
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright © Data Development, Thomas Dartsch
* @author Data Development - Daniel Seifert <ds@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_oxbasketitem_googleanalytics extends d3_oxbasketitem_googleanalytics_parent
{
protected $_sD3LocatorTitle;
/**
* @param $sLocatorTitle
*/
public function d3SetLocatorTitle($sLocatorTitle)
{
if (false == $this->_sD3LocatorTitle) {
$this->_sD3LocatorTitle = $sLocatorTitle;
}
}
/**
* @return string
*/
public function d3GetLocatorTitle()
{
return $this->_sD3LocatorTitle;
}
}

View File

@ -0,0 +1,139 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
class d3_oxorder_googleanalytics extends d3_oxorder_googleanalytics_parent
{
/**
* @return oxUserPayment
*/
public function getPayment()
{
if (!$this->_oPayment) {
$this->_oPayment = oxNew('oxpayment');
$this->_oPayment->Load($this->getFieldData('oxpaymenttype'));
}
return parent::getPayment();
}
/**
* @return array
*/
public function d3getVoucherSerieList()
{
$sSelect =
"SELECT oxvoucherserieid FROM oxvouchers WHERE oxorderid = " . oxDb::getDb()->quote($this->getId());
$aVoucherIds = (array) oxDb::getDb()->getAll($sSelect);
$aVoucherSerieList = array();
foreach ($aVoucherIds as $aVoucherId) {
$oVoucherSerie = oxNew('oxvoucherserie');
$oVoucherSerie->Load($aVoucherId[0]);
$aVoucherSerieList[] = $oVoucherSerie;
}
return $aVoucherSerieList;
}
/**
* @param array $aArticleList
*
* @return null|void
*/
protected function _setOrderArticles($aArticleList)
{
parent::_setOrderArticles($aArticleList);
/** @var d3_oxbasketitem_googleanalytics $oBasketItem */
foreach ($aArticleList as $oBasketItem) {
/** @var oxorderarticle $oOrderArticle */
foreach ($this->_oArticles as $sArticleId => $oOrderArticle) {
$blArtIdMatch = $oOrderArticle->getFieldData('oxartid') == $oBasketItem->getProductId();
$blAmountMatch = $oOrderArticle->getFieldData('oxamount') == $oBasketItem->getAmount();
$blPersParamMatch = (null == $oBasketItem->getPersParams() || $oOrderArticle->getFieldData('oxpersparam') == $oBasketItem->getPersParams());
if ($blArtIdMatch && $blAmountMatch && $blPersParamMatch) {
$this->_oArticles->offsetGet($sArticleId)->assign(array('d3_galocator' => $oBasketItem->d3GetLocatorTitle()));
}
}
}
}
/**
* @return float
*/
public function d3GetOrderPayVat()
{
return round(
($this->getFieldData('oxpaycost') / (1 + $this->getFieldData('oxpayvat') / 100))
* ($this->getFieldData('oxpayvat')),
$this->getOrderCurrency()->decimal
) / 100;
}
/**
* @return float
*/
public function d3GetOrderDelVat()
{
return round(
($this->getFieldData('oxdelcost') / (1 + $this->getFieldData('oxdelvat') / 100))
* ($this->getFieldData('oxdelvat')),
$this->getOrderCurrency()->decimal
) / 100;
}
/**
* @return float
*/
public function d3GetOrderWrapVat()
{
return round(
($this->getFieldData('oxwrapcost') / (1 + $this->getFieldData('oxwrapvat') / 100))
* ($this->getFieldData('oxwrapvat')),
$this->getOrderCurrency()->decimal
) / 100;
}
/**
* @return float
*/
public function d3GetOrderCardVat()
{
return round(
($this->getFieldData('oxcardcost') / (1 + $this->getFieldData('oxcardvat') / 100))
* ($this->getFieldData('oxcardvat')),
$this->getOrderCurrency()->decimal
) / 100;
}
/**
* @return float
*/
public function d3GetTaxTotal()
{
$dVat = $this->getFieldData('oxartvatprice1')
+ $this->getFieldData('oxartvatprice2')
+ $this->d3GetOrderPayVat()
+ $this->d3GetOrderDelVat()
+ $this->d3GetOrderWrapVat()
+ $this->d3GetOrderCardVat();
return sprintf('%.2f', $dVat);
}
}

View File

@ -0,0 +1,16 @@
#d3GAOptOut {
position : fixed;
bottom : -3px;
left : -5px;
font-size : 11px;
padding : 4px 20px 6px 17px;
background : none repeat scroll 0 0 #fff;
opacity : 0.6;
z-index : 9999;
border : 1px solid #d3d3d3;
border-radius : 3px;
}
#d3GAOptOut a {
display : block;
}

View File

@ -0,0 +1,9 @@
if (null === document.body) {
// add body tag, if it's missing because framesets
var b=document.createElement('body');
document.getElementsByTagName('html')[0].appendChild(b);
}
var e=document.createElement('div');
e.id='SePiRENuJOBWx';
e.style.display='none';
document.body.appendChild(e);

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,340 @@
<?php
use D3\ModCfg\Application\Model\Install\d3install_updatebase;
/**
* This Software is the property of Data Development and is protected
* by copyright law - it is NOT Freeware.
*
* Any unauthorized use of this software without a valid license
* is a violation of the license agreement and will be prosecuted by
* civil and criminal law.
*
* http://www.shopmodule.com
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
* @link http://www.oxidmodule.com
*/
class d3_googleanalytics_update extends d3install_updatebase
{
public $sModKey = 'd3_googleanalytics';
public $sModName = 'Google Services Schnittstelle';
public $sModVersion = '4.0.0.1';
public $sModRevision = '245';
// heredoc syntax using for class members is available from PHP 5.3 up
public $sBaseConf = <<<KEY
--------------------------------------------------------------------------------
d2Xv2==WEsweG5EdmVncG5rbytzdkZIL0hRdEFVd2dLdXF2aUlhTzdxRlpHSnE1WU5FK1A3RDNueVNvQ
XVWSzNaUVNRNm9uY0ZSRlhsa09LVHA4b29iQTZOUUJnWUZmdFhLbGpZRkxDRjNkYnQ1T3JYRC9UeThXV
zlTS2hXQlhaMnVuWFhvYW5DZGxIeHpQcXhydHluQkZCcGVSdmpidjVLU2N2RG1jbHVYdzA0K0daSHZMO
FFXbDRuK2RDZnpoRVJPK1V5QmF2a2hQd1hyb2ZIRnh1YW95WWFnZjJpRXZpcFpYNmJTaHRkTlVNVzNuU
DBMRkZDb01tU2VycVN2LzdhKzZHQXFmQWtuMmpkY0pnaGt0Unc3Q2hMbWNycTd4a3MwZ0pZZUpaL2lZU
m5oemNmTVd5dlk1a0d6MlBqdEJ0b0wxNEY3cUJ6NVFlTW90TUZUWUwveHY4ZmhRPT0=
--------------------------------------------------------------------------------
KEY;
public $sRequirements = '';
public $sBaseValue = <<<KEY
--------------------------------------------------------------------------------
173v2==MjVveS9GVlBiQ3JIWWJvRlhhMFpRTFdnLzIvaDUzUnFyMGEwQ2Fla3JnTjkyd3hnL2dBMUgxV
XpiZE9RbEVKRmNCMzV3bXl6YWdRSnRqRFdicWQybk9iVjVocWZydXFJZElrUGhyUmNiTS9UQ04yVUpIV
klyM0t4YTVzZURoQWVQT2N6L0xod3hhamRvWUkrSkRtUHEyS21oTUp1UXhrSU5IYTFac3hoTWZmZHlLa
U44aURva05Iem4vZE4rcEV6NEpZaEZienVFVEpIOGZjdjBKMy9QVTI5VVAydVpwMFNZN2FEMnNQT09Cd
0xCaEVvTjdMWGVXSU9tSkNDWWRHenppZENrVVpHMlhiSERFV1B3YzhLYVJ4dys4T0c0K3lRUEw1VUVpN
kNhbVlPdWpyRHNRY2g5M0k0ZkxJbzcrZEhvWExMSzlxOVpydDRVWFQxcG93aUpBPT0=
--------------------------------------------------------------------------------
KEY;
protected $_aUpdateMethods = array(
array(
'check' => 'checkModCfgItemExist',
'do' => 'updateModCfgItemExist'
),
array(
'check' => 'checkFields',
'do' => 'fixFields'
),
array(
'check' => 'checkContentGANoticeItemExist',
'do' => 'updateContentGANoticeItemExist'
),
array(
'check' => 'checkModCfgSameRevision',
'do' => 'updateModCfgSameRevision'
),
);
public $aFields = array(
'D3_GALOCATOR' => array(
'sTableName' => 'oxorderarticles',
'sFieldName' => 'D3_GALOCATOR',
'sType' => 'VARCHAR(255)',
'blNull' => false,
'sDefault' => '',
'sComment' => '',
'sExtra' => '',
'blMultilang' => false,
),
);
protected $_aRefreshMetaModuleIds = array('d3_googleanalytics');
/**
* @return bool
*/
public function checkModCfgItemExist()
{
$blRet = false;
foreach ($this->getShopList() as $oShop) {
/** @var $oShop oxshop */
$aWhere = array(
'oxmodid' => $this->sModKey,
'oxnewrevision' => $this->sModRevision,
'oxshopid' => $oShop->getId(),
);
$blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere);
if ($blRet) {
return $blRet;
}
}
return $blRet;
}
/**
* @return bool
*/
public function updateModCfgItemExist()
{
$blRet = false;
if ($this->checkModCfgItemExist()) {
foreach ($this->getShopList() as $oShop) {
/** @var $oShop oxshop */
$aWhere = array(
'oxmodid' => $this->sModKey,
'oxshopid' => $oShop->getId(),
'oxnewrevision' => $this->sModRevision,
);
if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere)) {
// update don't use this property
unset($aWhere['oxnewrevision']);
$aInsertFields = array(
'OXID' => array(
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . "')",
'force_update' => false,
'use_quote' => false,
),
'OXSHOPID' => array(
'content' => $oShop->getId(),
'force_update' => false,
'use_quote' => true,
),
'OXMODID' => array(
'content' => $this->sModKey,
'force_update' => true,
'use_quote' => true,
),
'OXNAME' => array(
'content' => $this->sModName,
'force_update' => true,
'use_quote' => true,
),
'OXACTIVE' => array(
'content' => "0",
'force_update' => false,
'use_quote' => false,
),
'OXBASECONFIG' => array(
'content' => $this->sBaseConf,
'force_update' => true,
'use_quote' => true,
),
'OXINSTALLDATE' => array(
'content' => "NOW()",
'force_update' => true,
'use_quote' => false,
),
'OXVERSION' => array(
'content' => $this->sModVersion,
'force_update' => true,
'use_quote' => true,
),
'OXSHOPVERSION' => array(
'content' => oxRegistry::getConfig()->getEdition(),
'force_update' => true,
'use_quote' => true,
),
'OXREQUIREMENTS' => array(
'content' => $this->sRequirements,
'force_update' => true,
'use_quote' => true,
),
'OXVALUE' => array(
'content' => $this->sBaseValue,
'force_update' => false,
'use_quote' => true,
),
'OXNEWREVISION' => array(
'content' => $this->sModRevision,
'force_update' => true,
'use_quote' => true,
),
);
$aRet = $this->_updateTableItem2('d3_cfg_mod', $aInsertFields, $aWhere);
$blRet = $aRet['blRet'];
$this->setActionLog('SQL', $aRet['sql'], __METHOD__);
$this->setUpdateBreak(false);
if ($this->getStepByStepMode()) {
break;
}
}
}
}
return $blRet;
}
/**
* @return bool
*/
public function checkContentGANoticeItemExist()
{
$blRet = false;
foreach ($this->getShopList() as $oShop) {
/** @var $oShop oxshop */
$aWhere = array(
'oxloadid' => 'Analytics_Security_Informations',
'oxshopid' => $oShop->getId(),
);
$blRet = $this->_checkTableItemNotExist('oxcontents', $aWhere);
if ($blRet) {
return $blRet;
}
}
return $blRet;
}
/**
* @return bool
*/
public function updateContentGANoticeItemExist()
{
$blRet = false;
if ($this->checkContentGANoticeItemExist()) {
foreach ($this->getShopList() as $oShop) {
/** @var $oShop oxshop */
$aWhere = array(
'oxloadid' => 'Analytics_Security_Informations',
'oxshopid' => $oShop->getId(),
);
if ($this->_checkTableItemNotExist('oxcontents', $aWhere)) {
$aInsertFields = array(
'OXID' => array(
'content' => "md5(RAND())",
'force_update' => false,
),
'OXLOADID' => array(
'content' => "'Analytics_Security_Informations'",
'force_update' => true,
),
'OXSHOPID' => array(
'content' => "'" . $oShop->getId() . "'",
'force_update' => true,
),
'OXSNIPPET' => array(
'content' => "'1'",
'force_update' => false,
),
'OXTYPE' => array(
'content' => "'0'",
'force_update' => false,
),
'OXACTIVE' => array(
'content' => "'1'",
'force_update' => false,
),
'OXACTIVE_1' => array(
'content' => "'1'",
'force_update' => false,
),
'OXPOSITION' => array(
'content' => "''",
'force_update' => false,
),
'OXTITLE' => array(
'content' => "'Analytics Datenschutz Information'",
'force_update' => false,
),
'OXCONTENT' => array(
'content' => "'<p>Diese Website benutzt Google Analytics, einen Webanalysedienst der Google\r\n\r\nInc. (&quot;Google&quot;). Google Analytics verwendet sog. &quot;Cookies&quot;, Textdateien, die auf\r\n\r\nIhrem Computer gespeichert werden und die eine Analyse der Benutzung der Website\r\n\r\ndurch Sie ermöglichen. Die durch den Cookie erzeugten Informationen über Ihre\r\n\r\nBenutzung dieser Website (einschließlich Ihrer IP-Adresse<span style=\"color: #800000\">, die jedoch mit der Methode _anonymizeIp() anonymisiert wird, so dass Sie nicht mehr einem Anschluss\r\n\r\nzugeordnet werden kann</span>) wird an einen Server von Google in den USA\r\n\r\nübertragen und dort gespeichert. Google wird diese Informationen benutzen, um\r\n\r\nIhre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten für\r\n\r\ndie Websitebetreiber zusammenzustellen und um weitere mit der Websitenutzung und\r\n\r\nder Internetnutzung verbundene Dienstleistungen zu erbringen. Auch wird Google\r\n\r\ndiese Informationen gegebenenfalls an Dritte übertragen, sofern dies gesetzlich\r\n\r\nvorgeschrieben oder soweit Dritte diese Daten im Auftrag von Google verarbeiten.\r\n\r\nGoogle wird in keinem Fall Ihre IP-Adresse mit anderen Daten von Google in\r\n\r\nVerbindung bringen. Sie können die Installation der Cookies durch eine\r\n\r\nentsprechende Einstellung Ihrer Browser Software verhindern; wir weisen Sie\r\n\r\njedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche\r\n\r\nFunktionen dieser Website vollumfänglich nutzen können. Durch die Nutzung dieser\r\n\r\nWebsite erklären Sie sich mit der Bearbeitung der über Sie erhobenen Daten durch\r\n\r\nGoogle in der zuvor beschriebenen Art und Weise und zu dem zuvor benannten Zweck\r\n\r\neinverstanden.</p>\r\n<p><span style=\"color: #800000\">Sie können der Erhebung der\r\n\r\nDaten durch Google-Analytics mit Wirkung für die Zukunft widersprechen, indem\r\n\r\nsie ein Deaktivierungs-Add-on (<a href=\"http://tools.google.com/dlpage/gaoptout?hl=de\" title=\"\">http://tools.google.com/dlpage/gaoptout?hl=de</a>)\r\n\r\nfür Ihren Browser installieren.</span></p>'",
'force_update' => false,
),
'OXCATID' => array(
'content' => "''",
'force_update' => false,
),
'OXFOLDER' => array(
'content' => "'CMSFOLDER_USERINFO'",
'force_update' => false,
),
);
$aRet = $this->_updateTableItem2('oxcontents', $aInsertFields, $aWhere);
$blRet = $aRet['blRet'];
$this->setActionLog('SQL', $aRet['sql'], __METHOD__);
$this->setUpdateBreak(false);
if ($this->getStepByStepMode()) {
break;
}
}
}
}
return $blRet;
}
/**
* @return bool
*/
public function checkModCfgSameRevision()
{
return $this->_checkModCfgSameRevision($this->sModKey);
}
/**
* @return bool
*/
public function updateModCfgSameRevision()
{
$blRet = false;
if ($this->checkModCfgSameRevision($this->sModKey)) {
$aRet = $this->_updateModCfgSameRevision($this->sModKey);
$this->setActionLog('SQL', $aRet['sql'], __METHOD__);
$this->setUpdateBreak(false);
$blRet = $aRet['blRet'];
}
return $blRet;
}
}

View File

@ -0,0 +1,13 @@
<?php
$sLangName = "Deutsch";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
//Navigation
'charset' => 'UTF-8',
'D3_GOOGLEANALYTICS_OPTOUT' => 'Klicken Sie hier, um Google Analytics zu deaktivieren.',
);

View File

@ -0,0 +1,13 @@
<?php
$sLangName = "English";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
//Navigation
'charset' => 'UTF-8',
'D3_GOOGLEANALYTICS_OPTOUT' => 'Click here to opt-out of Google Analytics.',
);

View File

@ -0,0 +1,406 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
$sLangName = "Deutsch";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
//Navigation
'charset' => 'UTF-8',
'd3mxgoogleanalytics' => "<i class='fa fa-google'></i> Google Services",
'd3mxgoogleanalytics_settings' => 'Einstellungen',
'd3tbclgoogleanalytics_main' => 'Analytics',
'd3tbclgoogleanalytics_adwords' => 'AdWords',
'd3tbclgoogleanalytics_trustedstore' => 'zertifizierter Händler',
'D3_GOOGLEANALYTICS_CFG_TITLE' => 'Google Analytics Schnittstelle - Einstellungen',
'D3_GOOGLEANALYTICS_MAIN' => 'Grundeinstellungen',
'D3_GOOGLEANALYTICS_MAIN_DEBUG' => 'Aktivieren Sie mit dem Schalter den Debugmodus.'.
' Nach dem erfolgreichen &Uuml;bertragen des Trackingcodes erhalten Sie eine Meldung im Browser gezeigt. '.
'Deaktivieren Sie die Funktion f&uuml;r den Livebetrieb.',
'D3_GOOGLEANALYTICS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.com/analytics/" target="_blank">"Google Analytics"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dies erledigt das vorliegende Modul für Sie. '.
'Die Einstellungen zum Trackingcode nehmen Sie ebenfalls hier vor.',
'D3_GOOGLEANALYTICS_MAIN_GATYPE' => 'TrackingCode-Typ',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_GTAG' => 'gtag (nicht Google Tag Manager)',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_DESC' => 'Aktuell priorisiert Google den Trackingtyp '.
'"gtag". Für frühere Trackingtypen verwenden Sie bitte die entsprechenden Versionen unseres Moduls.',
'D3_GOOGLEANALYTICS_MAIN_GAID' => 'Analyics-ID',
'D3_GOOGLEANALYTICS_MAIN_GAID_DESC' => 'F&uuml;gen Sie hier die Google Analytics '.
'Konto-ID ein. Diese finden Sie in Ihrem GA-Konto und beginnt im Normalfall mit "UA-".',
'D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP' => 'IP-Adressen anonymisiert &uuml;bertragen '.
'(dringend empfohlen)',
'D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP_DESC' => '<p>Die IP-Adressen Ihrer Shopbesucher werden '.
'anonymisiert. Zwar werden dadurch die Gebietszuordnungen etwas ungenauer. Jedoch k&ouml;nnen Sie nur mit '.
'dieser Einstellung den Datenschutzvorschriften in Deutschland entsprechen.</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+anonymizeIp" target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE' => "Tracking auswerten bei...",
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_DESC' => '<p>Im Regelfall werden die &uuml;bertragenen '.
'Daten f&uuml;r alle Seitenbesucher ausgewertet und aufbereitet. Shops mit sehr hohem Besucheraufkommen '.
'geraten hiermit jedoch m&ouml;glicherweise an Limitierungen, die von Google gesetzt werden. Mit diesem Wert '.
'k&ouml;nnen Sie einstellen, wieviel Prozent der Besucherdaten von Google tats&auml;chlich ausgewertet werden '.
'sollen. Reduzieren Sie die Zahl, um Beschr&auml;nkungen zu umgehen.</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=Analytics+sampleRate+-siteSpeed" '.
'target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_1' => "% aller Besucher",
'D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME' => 'Seitenladezeit mit &uuml;bertragen',
'D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME_DESC' => '<p>Die Ladezeit Ihrer Seite ist, speziell auch '.
'in Hinblick auf verschiedene L&auml;nder, durchaus ein Faktor, der in das Ranking Ihrer Page einfliesst.<br>'.
'<br>Bei Universal-Analytics wird die Seitenladezeit generell &uuml;bertragen. Durch die Aktivierung dieser '.
'Option wird eine genauere Auswertung zus&auml;tzlich als Event &uuml;bergeben.</p><p>Weitere Informationen '.
'zu dieser Option finden Sie in der <a href="https://www.google.de/search?q=Analytics+track+page+load+time" '.
'target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE' => "Seitengeschwindigkeit messen bei...",
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_DESC' => '<p>Die Seitenladegeschwindigkeit wird nicht '.
'bei jedem Seitenaufruf gemessen. Bei wenig frequentierten Seiten verzerrt dies jedoch das Ergebnis. Soll der '.
'Standardwert von 1% ge&auml;ndert werden, tragen Sie den gew&uuml;nschten Wert hier ein. F&uuml;r Webseiten '.
'mit mehr als 1 Million Besuchern pro Tag wird dieser Wert von Google fix auf 1% gestellt.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+site+speed+sample+rate" target="gahelp">Google-Suche </a>.'.
'</p>',
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_1' => "% aller Besucher",
'D3_GOOGLEANALYTICS_MAIN_USEREMARKETING' => 'Remarketing-Auswertung erm&ouml;glichen',
'D3_GOOGLEANALYTICS_MAIN_USEREMARKETING_DESC' => '<p>Wenn Sie sich entschlie&szlig;en, '.
'Remarketing zu nutzen, setzen Sie diesen Haken. Nachdem Sie diese &Auml;nderung vorgenommen haben, '.
'erfasst und analysiert Google Analytics neben den &uuml;blichen Informationen auch das DoubleClick-Cookie, '.
'sofern vorhanden. Das DoubleClick-Cookie erm&ouml;glicht Remarketing im Google Display-Netzwerk f&uuml;r '.
'Produkte wie AdWords. Je nach verwendetem Tracking-Typ muss die Erfassung von Informationen aus dem Display-'.
'Netzwerk im Analytics-Konto aktiviert werden.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+require+displayfeatures" target="gahelp">Google-Suche </a>.'.
'</p>',
'D3_GOOGLEANALYTICS_BOUNCEOPT' => 'Absprungdaten optimieren',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH' => 'Absprungdaten-Optimierung aktivieren',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH_DESC' => 'Analytics wertet jeden Benutzer, der nicht '.
'innerhalb der Seite einen Link anklickt, als Abbrecher. Mit dieser Option kann der Wert optimiert werden.',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT1' => 'Seitenbesucher nicht als Abbrecher werten nach',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT2' => 'Millisekunden (1000 = 1 Sekunde)',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT_DESC' => '<p>Analytics wertet alle Seitenbucher, die '.
'sich nur eine Seite angesehen habe und dann den Shop verlassen, automatisch als Abbrecher. Zur '.
'Informationsbeschaffung reicht dem Kunden jedoch möglicherweise dieser eine Seitenbesuch aus. Sein Ziel '.
'konnte er erreichen. Demnach ist er eigentlich kein Abbrecher. Das Modul sendet automatisch nach der '.
'angegebenen Sekundenzahl ein EventTracking. Damit wertet Analytics diesen Besucher nur als Abbrecher, wenn '.
'er den Shop vor Ablauf dieser Zeit wieder verlässt. Verweilt er länger im Shop, wird der Besuch dann als '.
'Erfolg gewertet.</p><p>Diese Tracking-Veränderung stellt die Absprungrate daher im Analytics wesentlich '.
'genauer dar. Der Standardwert ist auf 10 Sekunden gesetzt. Ändern Sie bei Bedarf diese Angabe.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+_trackEvent+noBounce" target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT' => 'Seitenbesucher nicht als Abbrecher werten, '.
'wenn gescrollt wurde',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT_DESC' => '<p>Analytics wertet alle Seitenbucher, die '.
'sich nur eine Seite angesehen habe und dann den Shop verlassen, automatisch als Abbrecher. Zur '.
'Informationsbeschaffung reicht dem Kunden jedoch möglicherweise dieser eine Seitenbesuch aus. Sein Ziel '.
'konnte er erreichen. Demnach ist er eigentlich kein Abbrecher. Das Modul sendet automatisch ein '.
'EventTracking, wenn der Besucher die Seite gescrollt hat. Damit wertet Analytics diesen Besucher nur als '.
'Abbrecher, wenn er den Shop ohne Scrollen wieder verlässt.</p><p>Diese Tracking-Veränderung stellt die '.
'Absprungrate daher im Analytics wesentlich genauer dar.</p><p>Weitere Informationen zu dieser Option finden '.
'Sie in der <a href="https://www.google.de/search?q=_trackEvent+noBounce+scroll" target="gahelp">Google-Suche'.
'</a>.</p>',
'D3_GOOGLEANALYTICS_ECOMMERCE' => 'eCommerce-Einstellungen',
'D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA' => 'eCommerce-Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA_DESC' => '<p>Mit dieser Einstellung werden '.
'Warenkorbdaten Ihrer Kunden an Analytics &uuml;bertragen. Damit k&ouml;nnen Sie z.B. die Produktleistung und '.
'Umsatzzahlen ermitteln. Diese Option muss auch in Ihrem Analytics-Konto aktiviert werden.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+ecommerce+tracking" target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO' => 'Netto-Preise &uuml;bertragen, wenn '.
'verf&uuml;gbar',
'D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO_DESC' => 'Betreiben Sie einen B2B-Shop, &uuml;bertragen '.
'Sie Ihre Artikelpreise netto an Analytics, wenn diese auch im Shop ohne Steuer zur Verf&uuml;gung stehen. ',
'D3_GOOGLEANALYTICS_DOMAIN' => 'Multi-Domain-Einstellungen',
'D3_GOOGLEANALYTICS_DOMAIN_SETALLOWLINKER' => 'Trackingdaten von unterschiedlichen Domains '.
'verwenden',
'D3_GOOGLEANALYTICS_DOMAIN_SETALLOWLINKER_DESC' => '<p>Cross Domain Tracking erlaubt das Sammeln '.
'von Trackinginformationen auch &uuml;ber verschiedene Domains hinweg.</p><p>Weitere Informationen finden '.
'Sie <a href="https://www.google.de/search?q=Analytics+_setAllowLinker" target="gahelp">hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_SETDOMAINNAME' => 'fixiert das Tracking-Cookie auf die angegebene '.
'Domain (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_SETDOMAINNAME_DESC' => '<p>Lassen Sie dieses Feld leer, ist das '.
'Tacking-Cookie f&uuml;r unterschiedliche Seiten g&uuml;ltig. Wenn Sie statt dessen eine Domain angeben, ist '.
'das gesetzte Cookie nur f&uuml;r Seiten unter dieser Domain g&uuml;ltig. Andere zu trackende Seiten setzen '.
'dann ein neues Cookie.<br><br>Der Eintrag sollte hier so aussehen: .yourDomainName.com</p><p>Weitere '.
'Informationen finden Sie <a href="https://www.google.de/search?q=Analytics+_setDomainName" target="gahelp">'.
'hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_SETCOOKIEPATH' => 'Tracking nur auf ein Verzeichnis '.
'beschr&auml;nken (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_SETCOOKIEPATH_DESC' => '<p>Ein Eintrag hier sollte so aussehen: '.
'/myStore/</p><p>Weitere Informationen finden Sie '.
'<a href="https://www.google.de/search?q=Analytics+set+Cookie+Path" target="gahelp">hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_COOKIEPATHCOPY' => 'Cookie Informationen werden in das Verzeichnis '.
'der selben Domain kopiert (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_COOKIEPATHCOPY_DESC' => '<p>Ein Eintrag hier sollte so aussehen: '.
'/myStore/<br>Diese Option ist nur f&uuml;r den asynchronen Trackingcode verf&uuml;gbar.</p><p>Weitere '.
'Informationen finden Sie <a href="https://www.google.de/search?q=Analytics+set+Cookie+Path" target="gahelp">'.
'hier</a>.</p>',
'D3_GOOGLEANALYTICS_BROWSER' => 'Browser-Daten',
'D3_GOOGLEANALYTICS_BROWSER_SETCLIENTINFO' => '<span style="font-weight: bold;">Deaktiviert'.
'</span> die Erkennung von Browserdaten (z.B. Name und Version). Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETCLIENTINFO_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._getClientInfo" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTFLASH' => '<span style="font-weight: bold;">Unterbindet'.
'</span> die Erkennung, ob beim Kunden das Flash-Plugin installiert ist.',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTFLASH_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._setDetectFlash" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTTITLE' => '<span style="font-weight: bold;">Verhindert'.
'</span> die Erkennung des Seitentitels.',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTTITLE_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._setDetectTitle" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING' => 'Remarketing (via Analytics)',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT' => 'Remarketingdaten als individuelle Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT_DESC' => 'Aktivieren Sie die Option, wenn Sie die '.
'Remarketingdaten au&szlig;erhalb von AdWords &uuml;bertragen m&ouml;chten. Diese werden dann als '.
'individuelle Daten gesendet. Richten Sie die Dimensionen so ein, wie dies unter '.
'<a href="https://support.google.com/analytics/answer/3455600?hl=de&ref_topic=3455490" target="gahelp">dem '.
'Google-Beitrag</a> beschrieben ist.<br>Zus&auml;tzliche &quot;individuelle Daten&quot; werden dann ab der '.
'4. Dimension &uuml;bermittelt.',
'D3_GOOGLEANALYTICS_CUSTOMVARS' => 'individuelle Daten',
'D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT' => 'individuelle Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT_DESC' => 'Mit individuellen Daten k&ouml;nnen Sie '.
'Parameter &uuml;bermitteln, die sonst im Rahmen des Trackingcodes nicht gesammelt werden. Erg&auml;nzen Sie '.
'den entsprechenden Abschnitt im Template "modules/d3/d3_googleanalytics/views/tpl/widget/'.
'd3_googleanalytics.tpl" (f&uuml;r Async) oder "modules/d3/d3_googleanalytics/views/tpl/widget/inc/'.
'd3ga_universal_custom.tpl" (f&uuml;r Universal) um die gew&uuml;nschten Daten. Details F&uuml;r die '.
'Einrichtung der Datenaufzeichnung bei Analytics entnehmen Sie bitte der Moduldokumentation.<br><br>Weitere '.
'Informationen finden Sie <a href="http://code.google.com/apis/analytics/docs/tracking/'.
'gaTrackingCustomVariables.html" target="gahelp">hier</a>.<br>Auf Anregung durch <a href="http://'.
'www.commodule.de/blog/tracking/zahlungsarten-in-google-analytics-tracken/" target="Commodule">Commodule-Blog'.
'</a> haben wir nun noch weitere Beispiele hinterlegt. Vielen Dank f&uuml;r diese Unterst&uuml;tzung!',
'D3_GOOGLEANALYTICS_SECURITYINFORMATIONS' => 'Im CMS-Baustein "Analytics_Security_'.
'Informations" ist ein Text hinterlegt, den Sie Ihren Kunden unter Ihrer Datenschutzerkl&auml;rung '.
'verf&uuml;gbar machen sollten. Kl&auml;ren Sie jedoch bitte vor Verwendung von Google Analytics Tracking und '.
'diesem Hinweistext ab, ob beides mit den Datenschutzbestimmung Ihres Landes konform geht. '.
'Ausschlie&szlig;lich der Shopbetreiber haftet f&uuml;r Verst&ouml;&szlig;e. Beraten Sie sich im Zweifel mit '.
'Ihrem Rechtsanwalt.<br><br>Nach Aktivierung des Tracking-Codes dauert es in der Regel ca. 24 Stunden, bis '.
'die ersten Tracking-Daten in Analytics zur Verf&uuml;gung stehen.',
'D3_GOOGLEANALYTICS_ADWORDSGENERAL' => 'Conversion-Tracking',
'D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING' => 'Conversion-Tracking-Code aktivieren',
'D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING_DESC' => 'Diese Option aktiviert den AdWords-Code. Dann '.
'ist die Eingabe der Conversion-ID und des Conversion-Labels obligatorisch.',
'D3_GOOGLEANALYTICS_ADWORDS_CONVID' => 'Conversion-ID',
'D3_GOOGLEANALYTICS_ADWORDS_CONVID_DESC' => '<p>Diese ID finden Sie in Ihrem AdWords-Konto.'.
'</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=AdWords+conversion+id" '.
'target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL' => 'Conversion-Label',
'D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL_DESC' => '<p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=AdWords+conversion+label" '.
'target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_ADWORDS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.de/AdWords" target="_blank">"Google Adwords"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_ADWORDS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dies erledigt das vorliegende Modul für Sie. '.
'Die Einstellungen zum Trackingcode nehmen Sie ebenfalls hier vor.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN' => 'Kampagnen-Tracking',
'D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK' => 'AdWords-Kampagnendaten <span style="'.
'font-weight: bold;">nicht</span> &uuml;bertragen',
'D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK_DESC' => 'Das Kampagnentracking ist im Standard '.
'aktiviert. Setzen Sie diesen Haken, um die Kampagnen&uuml;bertragung zu deaktivieren.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT' => 'Kampagnenlaufzeit (optional, sonst 6 Monate) - '.
'nur f&uuml;r Async-Code',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_DESC' => 'Geben Sie hier eine optionale Laufzeit dieser '.
'Kampagne in Millisekunden an.<br><br>30 Tage = 2592000000<br>365 Tage = 31536000000<br><br>F&uuml;r '.
'Universal Analytics tragen Sie diesen Wert bitte in Ihrem Analytics-Konto nach.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_MS' => 'Millisekunden',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY' => 'erzwinge Verwendung der folgenden Kampagne',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY_DESC' => 'die hier festgelegte Kampagne wird zwingend '.
'verwendet, auch wenn die Cookie-Einstellungen schon eine andere Kampagne liefern.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY' => 'Kampagnen-ID (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY_DESC' => 'Geben Sie hier die ID dieser Kamapagne an.<br>'.
'<br>Weitere Informationen finden Sie hier: <ul><li>Universal: <a href="https://developers.google.com/'.
'analytics/devguides/collection/analyticsjs/field-reference#campaignId" target="gahelp">hier</a></li></ul>'.
'Diese Angabe ist nur in Universal Analytics verf&uuml;gbar.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY' => 'Kampagnenname (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY_DESC' => 'Unter diesem Namen sehen Sie die Auswertung '.
'der Daten aus dieser Shopkampagne in Analytics.<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: '.
'<a href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._'.
'setCampNameKey" target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/'.
'devguides/collection/analyticsjs/field-reference#campaignName" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY' => 'Kampagnenmedium (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY_DESC' => 'Definieren Sie das Medium dieser Kampagne '.
'(z.B. Werbebanner, Mailkampagne oder auch Klickkampagne). Diese Einstellung finden Sie in der Kampagnen'.
'auswertung unter "Keywords".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://'.
'code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampMediumKey" '.
'target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/'.
'collection/analyticsjs/field-reference#campaignMedium" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY' => 'Kampagnenquelle (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY_DESC' => 'Benennen Sie hier die Quelle der Shopkampagne, '.
'vergeben Sie zum Beispiel den Webseiten-Name oder den Firmenname.<br><br>Weitere Informationen finden Sie '.
'hier: <ul><li>Async: <a href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#'.
'_gat.GA_Tracker_._setCampSourceKey" target="gahelp">hier</a></li><li>Universal: <a href="https://developers.'.
'google.com/analytics/devguides/collection/analyticsjs/field-reference#campaignSource" target="gahelp">hier'.
'</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY' => 'Schl&uuml;sselwort(e) Ihrer Kampagne (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY_DESC' => 'Auch diese Keywords erscheinen in Analytics '.
'unter "Keywords".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://code.google.'.
'com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampTermKey" target="gahelp">'.
'hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/collection/analyticsjs'.
'/field-reference#campaignKeyword" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY' => 'Inhaltsbeschreibung der Kampagne (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY_DESC' => 'Den beschrieben Inhalt finden Sie in der '.
'Auswertung als "Ad Content".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://'.
'code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampContentKey" '.
'target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/'.
'collection/analyticsjs/field-reference#campaignContent" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSREMARKETING' => 'Remarketing (via AdWords)',
'D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING' => 'Remarketing-Code aktivieren',
'D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING_DESC' => 'Die Option aktiviert den Remarketing-Code. '.
'Dann ist die Eingabe der Conversion-ID obligatorisch.',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID' => 'Remarketing Conversion-ID',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID_DESC' => 'Tragen Sie hier die zu Ihrem eingerichteten '.
'Remarketing zugehörige Conversion-ID ein. Diese kann mit Ihrer AdWords-Conversion-Tracking-ID identisch '.
'sein. Auch Abweichungen sind möglich.',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVLABEL' => 'Remarketing Conversion-Label (optional)',
'd3tbclgoogleanalytics_campaigns' => 'andere Kampagnen',
'D3_GOOGLEANALYTICS_CAMPAIGNS_DESC' => 'Diese Einstellungen betreffen andere (auch '.
'google-fremde) Kampagnen, die mit den Leistungen des Moduls nicht abgedeckt sind. Details zu den Kampagnen '.
'und dessen Implementierung erhalten Sie beim jeweiligen Anbieter.',
'D3_GOOGLEANALYTICS_CAMPAIGNS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Konfigurieren Sie diesen bei Ihem '.
'Kampagnenanbieter und tragen Sie diesen dann hier ein das Eingabefeld ein.',
'D3_GOOGLEANALYTICS_CAMPAIGNSETTINGS' => 'Kampagnen-Einstellungen',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK' => 'Kampagnencode übertragen',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK_DESC' => 'Nur mit dieser Option wird der eingegebene '.
'Kampagnencode ausgeliefert',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY' => 'Kampagnendaten nur in Bestellabschlussseite '.
'verwenden',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY_DESC' => 'Ist dieser Haken nicht gesetzt, wird der '.
'Kampagnencode shopweit eingef&uuml;gt. Ob diese Einstellung notwendig ist, erfahren Sie bei Ihrem Conversion '.
'Tracking Anbieter.',
'D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE' => 'Code',
'D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE_DESC' => 'Kopieren Sie hier den Kampagnen-Tracking-Code '.
'ein, den Sie vom Anbieter erhalten haben. Kopieren Sie auch ein eventuell vorhandenes "script"-Tag mit. '.
'Dieser Code wird 1:1 in den Seitenquelltext eingef&uuml;gt und nicht geparst.',
'D3_GOOGLEANALYTICS_TS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.de/zertifiziertehaendler/" target="_blank">"Google Zertifizierter Händler"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_TS_DESC1' => 'Während der Aktivierung werden Sie '.
'aufgefordert, einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dieser wird von unserem Modul '.
'eingebunden. Damit können Sie die Qualifizierungsphase starten. Erst nach erfolgreicher Beendigung sehen Sie '.
'das "Google Zertifizierter Händler"-Siegel. Über dessen Darstellung entscheidet allein Google.',
'D3_GOOGLEANALYTICS_TS_ACTIVE' => '"Zertifizierter Händler" im Shop aktivieren',
'D3_GOOGLEANALYTICS_TS_ACTIVE_DESC' => 'Dieser Haken bindet die nötigen Trackingcodes '.
'in den Quelltext Ihres Shops ein. Ob Sie das Gütesiegel im Shop sehen, entscheidet jedoch nur Google intern. '.
'Sind Sie der Meinung, das Siegel sollte angezeigt werden, wenden Sie sich bitte an Ihren Betreuer bei Google.',
'D3_GOOGLEANALYTICS_TS_ID' => 'Konto-ID',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER' => 'Zeitraum vom Bestelleingang bis zum Versand '.
'bei lagernden Artikeln',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS' => 'Werktag(e)',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier '.
'den für am Lager befindlicher Artikel im Normalfall größten Zeitraum bis zum Versand in Tagen an (z.B. 3 bei '.
'"1 bis 3 Tage"). Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum abgeschlossenen '.
'Kauf.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen festen Feiertag, wird der '.
'nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht berücksichtigt. Um die '.
'Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse entsprechend.</p><p>Die '.
'Unterscheidung zwischen lagernden und nicht lagernden Artikeln wird nur bei aktivierter '.
'Lagerstandsverwaltung getroffen. Sonst werden alle Artikel als "lagernd" angesehen.</p>',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_OUTOFSTOCK' => 'Zeitraum vom Bestelleingang bis zum Versand '.
'bei <b>nicht</b> lagernden Artikeln',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTEROUTOFSTOCK_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier '.
'den für <b>nicht</b> am Lager befindlicher Artikel im Normalfall größten Zeitraum bis zum Versand in Tagen '.
'an (z.B. 3 bei "1 bis 3 Tage"). Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum '.
'abgeschlossenen Kauf.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen festen Feiertag, '.
'wird der nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht berücksichtigt. '.
'Um die Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse entsprechend.</p>',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER' => 'Zeitraum vom Versand bis zur Lieferung beim '.
'Empfänger',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS' => 'Werktag(e)',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum die bestellten Artikel in der Regel beim Kunden eintreffen. Geben Sie hier den für '.
'Normalfälle größten Zeitraum für die Lieferung in Tagen an (z.B. 4 bei "1 bis 4 Tage"). Der errechnete '.
'Termin wird dem Kunden per Mail mitgeteilt.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen '.
'festen Feiertag, wird der nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht '.
'berücksichtigt. Um die Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse '.
'entsprechend.</p>',
'D3_GOOGLEANALYTICS_TS_SHOPPING' => 'Verbindung zu Google Shopping',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE' => 'zusätzliche Daten aus Google Shopping '.
'übertragen',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC' => 'Verwenden Sie Google Shopping und möchten '.
'zusätzliche Daten zur Identifizierung übertragen, setzen Sie diesen Haken. Die folgenden Angaben sind dann '.
'ebenfalls erforderlich.',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID' => 'Google Shopping Kontonummer',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC' => 'Tragen Sie hier die Kontonummer (Account ID) '.
'aus Google Shopping ein.',
'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY' => 'Kürzel des Landes Ihres Google Shopping-Kontos',
'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC' => 'Geben Sie hier das Land Ihres Google Shopping '.
'Kontos an. Erwartet wird der ISO-3166-Ländercode (z.B.: DE, CH, AT, FR).',
'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE' => 'Kürzel der Sprache Ihres Google Shopping-Kontos',
'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC' => 'Geben Sie hier die Sprache Ihres Google '.
'Shopping Kontos an. Erwartet wird der ISO-639-1-Sprachcode (z.B.: de, en, fr).',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID' => 'Identifikation Ihrer Artikel bei Google '.
'Shopping',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_ARTNUM' => 'Artikelnummer (oxartnum)',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_OXID' => 'interne Ident-Nummer (oxid)',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC' => 'Über welches Feld kann Google Shopping die '.
'dort hinterlegten Artikel identfizieren?',
'D3_GOOGLEANALYTICS_METADATA_TITLE' => 'Google Services Schnittstelle',
'D3_GOOGLEANALYTICS_METADATA_DESC' => 'Dieses Modul stellt Ihnen die schnelle und '.
'unkomplizierte Einbindung Ihres Google-Analytics-Kontos in Ihren Shop zur Verf&uuml;gung. Hierbei werden '.
'&uuml;ber standardisierte Schnittstellen die Besucherdaten und eCommerce-Daten zu Google &uuml;bertragen. '.
'Ebenfalls &uuml;bermittelt werden Daten der Website-Suche.',
'D3_GOOGLEANALYTICS_MAIN_USEOPTOUT' => 'Opt Out anbieten',
'D3_GOOGLEANALYTICS_MAIN_USEOPTOUT_DESC' => '<p>Wird dieser Haken gesetzt, wird im Frontend '.
'ein Opt-Out-Bereich im Header angezeigt. In dem Bereich kann der Benutzer einen Link anklicken, '.
'mit dem das Tracking für diese Seite deaktiviert wird.</p><p>Weitere Informationen zu dieser Option finden '.
'Sie in der <a href="https://www.google.de/search?q=Analytics+_opt+out+script" target="gahelp">Google-Suche'.
'</a>.</p>',
'D3_GOOGLEANALYTICS_ADBLOCKER' => 'AdBlocker entdeckt - Bitte deaktivieren Sie diesen f<>r diese Seite, da sonst '.
'Teile des Admin-Bereichs nicht richtig geladen werden k<>nnen.',
// Erweiterung des Links in der Fussnote "Hilfe Starten"
'D3_GOOGLEANALYTICS_HELPLINK' => 'Fragen-zu-speziellen-Modulen/Google-Analytics/',
);
/*
[{oxmultilang ident="GENERAL_YOUWANTTODELETE"}]
*/

View File

@ -0,0 +1,421 @@
<?php
/**
* This module is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This module is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For further informations, see <http://www.gnu.org/licenses/>.
*
* @link http://www.oxidmodule.com
* @link http://www.shopmodule.com
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
*/
$sLangName = "English";
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
//Navigation
'charset' => 'UTF-8',
'd3mxgoogleanalytics' => "<i class='fa fa-google'></i> Google Services",
'd3mxgoogleanalytics_settings' => 'Settings',
'd3tbclgoogleanalytics_main' => 'Analytics',
'd3tbclgoogleanalytics_adwords' => 'AdWords',
'd3tbclgoogleanalytics_trustedstore' => 'Trusted Store',
'D3_GOOGLEANALYTICS_CFG_TITLE' => 'Google Services Connector - Settings',
'D3_GOOGLEANALYTICS_MAIN' => 'Main Settings',
'D3_GOOGLEANALYTICS_MAIN_DEBUG' => 'Aktivieren Sie mit dem Schalter den Debugmodus.'.
' Nach dem erfolgreichen &Uuml;bertragen des Trackingcodes erhalten Sie eine Meldung im Browser gezeigt. '.
'Deaktivieren Sie die Funktion f&uuml;r den Livebetrieb.',
'D3_GOOGLEANALYTICS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.com/analytics/" target="_blank">"Google Analytics"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dies erledigt das vorliegende Modul für Sie. '.
'Die Einstellungen zum Trackingcode nehmen Sie ebenfalls hier vor.',
'D3_GOOGLEANALYTICS_MAIN_GATYPE' => 'Tracking code type',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_UNIVERSAL' => 'Universal',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_UNIVERSAL_DESC' => 'F&uuml;r den Wechsel auf den Universal-'.
'Analytics-Trackingcode sind vorab &Auml;nderungen in Ihrem Analytics-Konto durchzuf&uuml;hren. Bitte '.
'konsultieren Sie vorab den Analytics-Migrationsleitfaden. Den Link finden Sie im Erkl&auml;rungstext '.
'dieser Option.\\n\\nBitte beachten Sie, dass mit Wechsel des Trackingcodes m&ouml;glicherweise andere '.
'Optionen im Modul verf&uuml;gbar sind. Kontrollieren Sie diese bitte noch einmal.',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_ASYNC' => 'asynchron',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_ASYNC_DESC' => 'Ein Wechsel vom neuen Universal-Analytics-'.
'Trackingcode zum bisherigen asynchronen Trackingcode wird von Google nicht angeboten. &Auml;ndern Sie diese '.
'Einstellung nur, wenn Ihr Analytics-Account noch auf dem asynchronen Trackingcode basiert.\\n\\nBitte '.
'beachten Sie, dass mit Wechsel des Trackingcodes m&ouml;glicherweise andere Optionen im Modul verf&uuml;gbar '.
'sind. Kontrollieren Sie diese bitte noch einmal.',
'D3_GOOGLEANALYTICS_MAIN_GATYPE_DESC' => 'Aktuell priorisiert Google den Trackingtyp '.
'"Universal". Setzen Sie hier den Typ, den Sie in Ihrem Analytics-Konto auch verwenden. Nutzen Sie noch den '.
'asynchronen Trackingcode, lesen Sie vor der Umstellung den <a href="'.
'https://support.google.com/analytics/answer/3450662?hl=de" target="gahelp">Leitfaden</a> zum Wechsel.<br><br>'.
'Manche der folgenden Optionen stehen Ihnen nur f&uuml;r einen Tracking-Typ zur Verf&uuml;gung und sind daher '.
'm&ouml;glicherweise ausgegraut.',
'D3_GOOGLEANALYTICS_MAIN_GAID' => 'Analyics id',
'D3_GOOGLEANALYTICS_MAIN_GAID_DESC' => 'F&uuml;gen Sie hier die Google Analytics '.
'Konto-ID ein. Diese finden Sie in Ihrem GA-Konto und beginnt im Normalfall mit "UA-".',
'D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP' => 'IP-Adressen anonymisiert &uuml;bertragen '.
'(dringend empfohlen)',
'D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP_DESC' => '<p>Die IP-Adressen Ihrer Shopbesucher werden '.
'anonymisiert. Zwar werden dadurch die Gebietszuordnungen etwas ungenauer. Jedoch k&ouml;nnen Sie nur mit '.
'dieser Einstellung den Datenschutzvorschriften in Deutschland entsprechen.</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+anonymizeIp" target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE' => "Tracking auswerten bei...",
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_DESC' => '<p>Im Regelfall werden die &uuml;bertragenen '.
'Daten f&uuml;r alle Seitenbesucher ausgewertet und aufbereitet. Shops mit sehr hohem Besucheraufkommen '.
'geraten hiermit jedoch m&ouml;glicherweise an Limitierungen, die von Google gesetzt werden. Mit diesem Wert '.
'k&ouml;nnen Sie einstellen, wieviel Prozent der Besucherdaten von Google tats&auml;chlich ausgewertet werden '.
'sollen. Reduzieren Sie die Zahl, um Beschr&auml;nkungen zu umgehen.</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=Analytics+sampleRate+-siteSpeed" '.
'target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SAMPLERATE_1' => "% aller Besucher",
'D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME' => 'Seitenladezeit mit &uuml;bertragen',
'D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME_DESC' => '<p>Die Ladezeit Ihrer Seite ist, speziell auch '.
'in Hinblick auf verschiedene L&auml;nder, durchaus ein Faktor, der in das Ranking Ihrer Page einfliesst.<br>'.
'<br>Bei Universal-Analytics wird die Seitenladezeit generell &uuml;bertragen. Durch die Aktivierung dieser '.
'Option wird eine genauere Auswertung zus&auml;tzlich als Event &uuml;bergeben.</p><p>Weitere Informationen '.
'zu dieser Option finden Sie in der <a href="https://www.google.de/search?q=Analytics+track+page+load+time" '.
'target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE' => "Seitengeschwindigkeit messen bei...",
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_DESC' => '<p>Die Seitenladegeschwindigkeit wird nicht '.
'bei jedem Seitenaufruf gemessen. Bei wenig frequentierten Seiten verzerrt dies jedoch das Ergebnis. Soll der '.
'Standardwert von 1% ge&auml;ndert werden, tragen Sie den gew&uuml;nschten Wert hier ein. F&uuml;r Webseiten '.
'mit mehr als 1 Million Besuchern pro Tag wird dieser Wert von Google fix auf 1% gestellt.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+site+speed+sample+rate" target="gahelp">Google-Suche </a>.'.
'</p>',
'D3_GOOGLEANALYTICS_MAIN_SITESPEEDSAMPLERATE_1' => "% aller Besucher",
'D3_GOOGLEANALYTICS_MAIN_USEREMARKETING' => 'Remarketing-Auswertung erm&ouml;glichen',
'D3_GOOGLEANALYTICS_MAIN_USEREMARKETING_DESC' => '<p>Wenn Sie sich entschlie&szlig;en, '.
'Remarketing zu nutzen, setzen Sie diesen Haken. Nachdem Sie diese &Auml;nderung vorgenommen haben, '.
'erfasst und analysiert Google Analytics neben den &uuml;blichen Informationen auch das DoubleClick-Cookie, '.
'sofern vorhanden. Das DoubleClick-Cookie erm&ouml;glicht Remarketing im Google Display-Netzwerk f&uuml;r '.
'Produkte wie AdWords. Je nach verwendetem Tracking-Typ muss die Erfassung von Informationen aus dem Display-'.
'Netzwerk im Analytics-Konto aktiviert werden.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+require+displayfeatures" target="gahelp">Google-Suche </a>.'.
'</p>',
'D3_GOOGLEANALYTICS_BOUNCEOPT' => 'Bounce rate optimzation',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH' => 'Absprungdaten-Optimierung aktivieren',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH_DESC' => 'Analytics wertet jeden Benutzer, der nicht '.
'innerhalb der Seite einen Link anklickt, als Abbrecher. Mit dieser Option kann der Wert optimiert werden.',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT1' => 'Seitenbesucher nicht als Abbrecher werten nach',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT2' => 'Millisekunden (1000 = 1 Sekunde)',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT_DESC' => '<p>Analytics wertet alle Seitenbucher, die '.
'sich nur eine Seite angesehen habe und dann den Shop verlassen, automatisch als Abbrecher. Zur '.
'Informationsbeschaffung reicht dem Kunden jedoch möglicherweise dieser eine Seitenbesuch aus. Sein Ziel '.
'konnte er erreichen. Demnach ist er eigentlich kein Abbrecher. Das Modul sendet automatisch nach der '.
'angegebenen Sekundenzahl ein EventTracking. Damit wertet Analytics diesen Besucher nur als Abbrecher, wenn '.
'er den Shop vor Ablauf dieser Zeit wieder verlässt. Verweilt er länger im Shop, wird der Besuch dann als '.
'Erfolg gewertet.</p><p>Diese Tracking-Veränderung stellt die Absprungrate daher im Analytics wesentlich '.
'genauer dar. Der Standardwert ist auf 10 Sekunden gesetzt. Ändern Sie bei Bedarf diese Angabe.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+_trackEvent+noBounce" target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT' => 'Seitenbesucher nicht als Abbrecher werten, '.
'wenn gescrollt wurde',
'D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT_DESC' => '<p>Analytics wertet alle Seitenbucher, die '.
'sich nur eine Seite angesehen habe und dann den Shop verlassen, automatisch als Abbrecher. Zur '.
'Informationsbeschaffung reicht dem Kunden jedoch möglicherweise dieser eine Seitenbesuch aus. Sein Ziel '.
'konnte er erreichen. Demnach ist er eigentlich kein Abbrecher. Das Modul sendet automatisch ein '.
'EventTracking, wenn der Besucher die Seite gescrollt hat. Damit wertet Analytics diesen Besucher nur als '.
'Abbrecher, wenn er den Shop ohne Scrollen wieder verlässt.</p><p>Diese Tracking-Veränderung stellt die '.
'Absprungrate daher im Analytics wesentlich genauer dar.</p><p>Weitere Informationen zu dieser Option finden '.
'Sie in der <a href="https://www.google.de/search?q=_trackEvent+noBounce+scroll" target="gahelp">Google-Suche'.
'</a>.</p>',
'D3_GOOGLEANALYTICS_ECOMMERCE' => 'eCommerce settings',
'D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA' => 'eCommerce-Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA_DESC' => '<p>Mit dieser Einstellung werden '.
'Warenkorbdaten Ihrer Kunden an Analytics &uuml;bertragen. Damit k&ouml;nnen Sie z.B. die Produktleistung und '.
'Umsatzzahlen ermitteln. Diese Option muss auch in Ihrem Analytics-Konto aktiviert werden.</p><p>Weitere '.
'Informationen zu dieser Option finden Sie in der '.
'<a href="https://www.google.de/search?q=Analytics+ecommerce+tracking" target="gahelp">Google-Suche </a>.</p>',
'D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO' => 'Netto-Preise &uuml;bertragen, wenn '.
'verf&uuml;gbar',
'D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO_DESC' => 'Betreiben Sie einen B2B-Shop, &uuml;bertragen '.
'Sie Ihre Artikelpreise netto an Analytics, wenn diese auch im Shop ohne Steuer zur Verf&uuml;gung stehen. ',
'D3_GOOGLEANALYTICS_DOMAIN' => 'Multi-Domain-Einstellungen',
'D3_GOOGLEANALYTICS_DOMAIN_SETALLOWLINKER' => 'Trackingdaten von unterschiedlichen Domains '.
'verwenden',
'D3_GOOGLEANALYTICS_DOMAIN_SETALLOWLINKER_DESC' => '<p>Cross Domain Tracking erlaubt das Sammeln '.
'von Trackinginformationen auch &uuml;ber verschiedene Domains hinweg.</p><p>Weitere Informationen finden '.
'Sie <a href="https://www.google.de/search?q=Analytics+_setAllowLinker" target="gahelp">hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_SETDOMAINNAME' => 'fixiert das Tracking-Cookie auf die angegebene '.
'Domain (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_SETDOMAINNAME_DESC' => '<p>Lassen Sie dieses Feld leer, ist das '.
'Tacking-Cookie f&uuml;r unterschiedliche Seiten g&uuml;ltig. Wenn Sie statt dessen eine Domain angeben, ist '.
'das gesetzte Cookie nur f&uuml;r Seiten unter dieser Domain g&uuml;ltig. Andere zu trackende Seiten setzen '.
'dann ein neues Cookie.<br><br>Der Eintrag sollte hier so aussehen: .yourDomainName.com</p><p>Weitere '.
'Informationen finden Sie <a href="https://www.google.de/search?q=Analytics+_setDomainName" target="gahelp">'.
'hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_SETCOOKIEPATH' => 'Tracking nur auf ein Verzeichnis '.
'beschr&auml;nken (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_SETCOOKIEPATH_DESC' => '<p>Ein Eintrag hier sollte so aussehen: '.
'/myStore/</p><p>Weitere Informationen finden Sie '.
'<a href="https://www.google.de/search?q=Analytics+set+Cookie+Path" target="gahelp">hier</a>.</p>',
'D3_GOOGLEANALYTICS_DOMAIN_COOKIEPATHCOPY' => 'Cookie Informationen werden in das Verzeichnis '.
'der selben Domain kopiert (optional)',
'D3_GOOGLEANALYTICS_DOMAIN_COOKIEPATHCOPY_DESC' => '<p>Ein Eintrag hier sollte so aussehen: '.
'/myStore/<br>Diese Option ist nur f&uuml;r den asynchronen Trackingcode verf&uuml;gbar.</p><p>Weitere '.
'Informationen finden Sie <a href="https://www.google.de/search?q=Analytics+set+Cookie+Path" target="gahelp">'.
'hier</a>.</p>',
'D3_GOOGLEANALYTICS_BROWSER' => 'Browser-Daten',
'D3_GOOGLEANALYTICS_BROWSER_SETCLIENTINFO' => '<span style="font-weight: bold;">Deaktiviert'.
'</span> die Erkennung von Browserdaten (z.B. Name und Version). Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETCLIENTINFO_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._getClientInfo" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTFLASH' => '<span style="font-weight: bold;">Unterbindet'.
'</span> die Erkennung, ob beim Kunden das Flash-Plugin installiert ist.',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTFLASH_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._setDetectFlash" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTTITLE' => '<span style="font-weight: bold;">Verhindert'.
'</span> die Erkennung des Seitentitels.',
'D3_GOOGLEANALYTICS_BROWSER_SETDETECTTITLE_DESC' => 'Weitere Informationen finden Sie '.
'<a href="https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiWebClient?hl=es#'.
'_gat.GA_Tracker_._setDetectTitle" target="gahelp">hier</a>. Diese Einstellung steht f&uuml;r Universal '.
'Analytics nicht mehr zur Verf&uuml;gung',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING' => 'Remarketing (via Analytics)',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT' => 'Remarketingdaten als individuelle Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT_DESC' => 'Aktivieren Sie die Option, wenn Sie die '.
'Remarketingdaten au&szlig;erhalb von AdWords &uuml;bertragen m&ouml;chten. Diese werden dann als '.
'individuelle Daten gesendet. Richten Sie die Dimensionen so ein, wie dies unter '.
'<a href="https://support.google.com/analytics/answer/3455600?hl=de&ref_topic=3455490" target="gahelp">dem '.
'Google-Beitrag</a> beschrieben ist.<br>Zus&auml;tzliche &quot;individuelle Daten&quot; werden dann ab der '.
'4. Dimension &uuml;bermittelt.',
'D3_GOOGLEANALYTICS_CUSTOMVARS' => 'individuelle Daten',
'D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT' => 'individuelle Daten &uuml;bertragen',
'D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT_DESC' => 'Mit individuellen Daten k&ouml;nnen Sie '.
'Parameter &uuml;bermitteln, die sonst im Rahmen des Trackingcodes nicht gesammelt werden. Erg&auml;nzen Sie '.
'den entsprechenden Abschnitt im Template "modules/d3/d3_googleanalytics/views/tpl/widget/'.
'd3_googleanalytics.tpl" (f&uuml;r Async) oder "modules/d3/d3_googleanalytics/views/tpl/widget/inc/'.
'd3ga_universal_custom.tpl" (f&uuml;r Universal) um die gew&uuml;nschten Daten. Details F&uuml;r die '.
'Einrichtung der Datenaufzeichnung bei Analytics entnehmen Sie bitte der Moduldokumentation.<br><br>Weitere '.
'Informationen finden Sie <a href="http://code.google.com/apis/analytics/docs/tracking/'.
'gaTrackingCustomVariables.html" target="gahelp">hier</a>.<br>Auf Anregung durch <a href="http://'.
'www.commodule.de/blog/tracking/zahlungsarten-in-google-analytics-tracken/" target="Commodule">Commodule-Blog'.
'</a> haben wir nun noch weitere Beispiele hinterlegt. Vielen Dank f&uuml;r diese Unterst&uuml;tzung!',
'D3_GOOGLEANALYTICS_SECURITYINFORMATIONS' => 'Im CMS-Baustein "Analytics_Security_'.
'Informations" ist ein Text hinterlegt, den Sie Ihren Kunden unter Ihrer Datenschutzerkl&auml;rung '.
'verf&uuml;gbar machen sollten. Kl&auml;ren Sie jedoch bitte vor Verwendung von Google Analytics Tracking und '.
'diesem Hinweistext ab, ob beides mit den Datenschutzbestimmung Ihres Landes konform geht. '.
'Ausschlie&szlig;lich der Shopbetreiber haftet f&uuml;r Verst&ouml;&szlig;e. Beraten Sie sich im Zweifel mit '.
'Ihrem Rechtsanwalt.<br><br>Nach Aktivierung des Tracking-Codes dauert es in der Regel ca. 24 Stunden, bis '.
'die ersten Tracking-Daten in Analytics zur Verf&uuml;gung stehen.',
'D3_GOOGLEANALYTICS_ADWORDSGENERAL' => 'Conversion-Tracking',
'D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING' => 'Conversion-Tracking-Code aktivieren',
'D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING_DESC' => 'Diese Option aktiviert den AdWords-Code. Dann '.
'ist die Eingabe der Conversion-ID und des Conversion-Labels obligatorisch.',
'D3_GOOGLEANALYTICS_ADWORDS_CONVID' => 'Conversion-ID',
'D3_GOOGLEANALYTICS_ADWORDS_CONVID_DESC' => '<p>Diese ID finden Sie in Ihrem AdWords-Konto.'.
'</p><p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=AdWords+conversion+id" '.
'target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL' => 'Conversion-Label',
'D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL_DESC' => '<p>Weitere Informationen zu '.
'dieser Option finden Sie in der <a href="https://www.google.de/search?q=AdWords+conversion+label" '.
'target="gahelp">Google-Suche</a>.</p>',
'D3_GOOGLEANALYTICS_ADWORDS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.de/AdWords" target="_blank">"Google Adwords"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_ADWORDS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dies erledigt das vorliegende Modul für Sie. '.
'Die Einstellungen zum Trackingcode nehmen Sie ebenfalls hier vor.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN' => 'Kampagnen-Tracking',
'D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK' => 'AdWords-Kampagnendaten <span style="'.
'font-weight: bold;">nicht</span> &uuml;bertragen',
'D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK_DESC' => 'Das Kampagnentracking ist im Standard '.
'aktiviert. Setzen Sie diesen Haken, um die Kampagnen&uuml;bertragung zu deaktivieren.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT' => 'Kampagnenlaufzeit (optional, sonst 6 Monate) - '.
'nur f&uuml;r Async-Code',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_DESC' => 'Geben Sie hier eine optionale Laufzeit dieser '.
'Kampagne in Millisekunden an.<br><br>30 Tage = 2592000000<br>365 Tage = 31536000000<br><br>F&uuml;r '.
'Universal Analytics tragen Sie diesen Wert bitte in Ihrem Analytics-Konto nach.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_MS' => 'Millisekunden',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY' => 'erzwinge Verwendung der folgenden Kampagne',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY_DESC' => 'die hier festgelegte Kampagne wird zwingend '.
'verwendet, auch wenn die Cookie-Einstellungen schon eine andere Kampagne liefern.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY' => 'Kampagnen-ID (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY_DESC' => 'Geben Sie hier die ID dieser Kamapagne an.<br>'.
'<br>Weitere Informationen finden Sie hier: <ul><li>Universal: <a href="https://developers.google.com/'.
'analytics/devguides/collection/analyticsjs/field-reference#campaignId" target="gahelp">hier</a></li></ul>'.
'Diese Angabe ist nur in Universal Analytics verf&uuml;gbar.',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY' => 'Kampagnenname (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY_DESC' => 'Unter diesem Namen sehen Sie die Auswertung '.
'der Daten aus dieser Shopkampagne in Analytics.<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: '.
'<a href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._'.
'setCampNameKey" target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/'.
'devguides/collection/analyticsjs/field-reference#campaignName" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY' => 'Kampagnenmedium (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY_DESC' => 'Definieren Sie das Medium dieser Kampagne '.
'(z.B. Werbebanner, Mailkampagne oder auch Klickkampagne). Diese Einstellung finden Sie in der Kampagnen'.
'auswertung unter "Keywords".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://'.
'code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampMediumKey" '.
'target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/'.
'collection/analyticsjs/field-reference#campaignMedium" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY' => 'Kampagnenquelle (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY_DESC' => 'Benennen Sie hier die Quelle der Shopkampagne, '.
'vergeben Sie zum Beispiel den Webseiten-Name oder den Firmenname.<br><br>Weitere Informationen finden Sie '.
'hier: <ul><li>Async: <a href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#'.
'_gat.GA_Tracker_._setCampSourceKey" target="gahelp">hier</a></li><li>Universal: <a href="https://developers.'.
'google.com/analytics/devguides/collection/analyticsjs/field-reference#campaignSource" target="gahelp">hier'.
'</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY' => 'Schl&uuml;sselwort(e) Ihrer Kampagne (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY_DESC' => 'Auch diese Keywords erscheinen in Analytics '.
'unter "Keywords".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://code.google.'.
'com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampTermKey" target="gahelp">'.
'hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/collection/analyticsjs'.
'/field-reference#campaignKeyword" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY' => 'Inhaltsbeschreibung der Kampagne (optional)',
'D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY_DESC' => 'Den beschrieben Inhalt finden Sie in der '.
'Auswertung als "Ad Content".<br><br>Weitere Informationen finden Sie hier: <ul><li>Async: <a href="http://'.
'code.google.com/apis/analytics/docs/gaJS/gaJSApiCampaignTracking.html#_gat.GA_Tracker_._setCampContentKey" '.
'target="gahelp">hier</a></li><li>Universal: <a href="https://developers.google.com/analytics/devguides/'.
'collection/analyticsjs/field-reference#campaignContent" target="gahelp">hier</a></li></ul>',
'D3_GOOGLEANALYTICS_ADWORDSREMARKETING' => 'Remarketing (via AdWords)',
'D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING' => 'Remarketing-Code aktivieren',
'D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING_DESC' => 'Die Option aktiviert den Remarketing-Code. '.
'Dann ist die Eingabe der Conversion-ID obligatorisch.',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID' => 'Remarketing Conversion-ID',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID_DESC' => 'Tragen Sie hier die zu Ihrem eingerichteten '.
'Remarketing zugehörige Conversion-ID ein. Diese kann mit Ihrer AdWords-Conversion-Tracking-ID identisch '.
'sein. Auch Abweichungen sind möglich.',
'D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVLABEL' => 'Remarketing Conversion-Label (optional)',
'd3tbclgoogleanalytics_campaigns' => 'andere Kampagnen',
'D3_GOOGLEANALYTICS_CAMPAIGNS_DESC' => 'Diese Einstellungen betreffen andere (auch '.
'google-fremde) Kampagnen, die mit den Leistungen des Moduls nicht abgedeckt sind. Details zu den Kampagnen '.
'und dessen Implementierung erhalten Sie beim jeweiligen Anbieter.',
'D3_GOOGLEANALYTICS_CAMPAIGNS_DESC1' => 'Während der Anmeldung werden Sie aufgefordert, '.
'einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Konfigurieren Sie diesen bei Ihem '.
'Kampagnenanbieter und tragen Sie diesen dann hier ein das Eingabefeld ein.',
'D3_GOOGLEANALYTICS_CAMPAIGNSETTINGS' => 'Kampagnen-Einstellungen',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK' => 'Kampagnencode übertragen',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK_DESC' => 'Nur mit dieser Option wird der eingegebene '.
'Kampagnencode ausgeliefert',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY' => 'Kampagnendaten nur in Bestellabschlussseite '.
'verwenden',
'D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY_DESC' => 'Ist dieser Haken nicht gesetzt, wird der '.
'Kampagnencode shopweit eingef&uuml;gt. Ob diese Einstellung notwendig ist, erfahren Sie bei Ihrem Conversion '.
'Tracking Anbieter.',
'D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE' => 'Code',
'D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE_DESC' => 'Kopieren Sie hier den Kampagnen-Tracking-Code '.
'ein, den Sie vom Anbieter erhalten haben. Kopieren Sie auch ein eventuell vorhandenes "script"-Tag mit. '.
'Dieser Code wird 1:1 in den Seitenquelltext eingef&uuml;gt und nicht geparst.',
'D3_GOOGLEANALYTICS_TS_DESC' => 'Diese Einstellungen betreffen den Dienst '.
'<a href="http://www.google.com/trustedstores/" target="_blank">"Google Zertifizierter Händler"</a>. '.
'Möchten Sie diesen nutzen, melden Sie sich auf der Webseite dafür an.',
'D3_GOOGLEANALYTICS_TS_DESC1' => 'Während der Aktivierung werden Sie '.
'aufgefordert, einen Trackingcode in den Quelltext Ihrer Seite einzukopieren. Dieser wird von unserem Modul '.
'eingebunden. Damit können Sie die Qualifizierungsphase starten. Erst nach erfolgreicher Beendigung sehen Sie '.
'das "Google Zertifizierter Händler"-Siegel. Über dessen Darstellung entscheidet allein Google.',
'D3_GOOGLEANALYTICS_TS_ACTIVE' => 'activate "Trusted Store" in shop',
'D3_GOOGLEANALYTICS_TS_ACTIVE_DESC' => 'Dieser Haken bindet die nötigen Trackingcodes '.
'in den Quelltext Ihres Shops ein. Ob Sie das Gütesiegel im Shop sehen, entscheidet jedoch nur Google intern. '.
'Sind Sie der Meinung, das Siegel sollte angezeigt werden, wenden Sie sich bitte an Ihren Betreuer bei Google.',
'D3_GOOGLEANALYTICS_TS_ID' => 'account id',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER' => 'Zeitraum vom Bestelleingang bis zum Versand '.
'bei lagernden Artikeln',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS' => 'Werktag(e)',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier '.
'den für am Lager befindlicher Artikel im Normalfall größten Zeitraum bis zum Versand in Tagen an (z.B. 3 bei '.
'"1 bis 3 Tage"). Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum abgeschlossenen '.
'Kauf.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen festen Feiertag, wird der '.
'nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht berücksichtigt. Um die '.
'Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse entsprechend.</p><p>Die '.
'Unterscheidung zwischen lagernden und nicht lagernden Artikeln wird nur bei aktivierter '.
'Lagerstandsverwaltung getroffen. Sonst werden alle Artikel als "lagernd" angesehen.</p>',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_OUTOFSTOCK' => 'Zeitraum vom Bestelleingang bis zum Versand '.
'bei <b>nicht</b> lagernden Artikeln',
'D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTEROUTOFSTOCK_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum ausgehend vom Bestelleingang die bestellten Artikel versendet werden. Geben Sie hier '.
'den für <b>nicht</b> am Lager befindlicher Artikel im Normalfall größten Zeitraum bis zum Versand in Tagen '.
'an (z.B. 3 bei "1 bis 3 Tage"). Nach dem voraussichtlichen Versanddatum erhält der Kunde eine Umfrage zum '.
'abgeschlossenen Kauf.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen festen Feiertag, '.
'wird der nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht berücksichtigt. '.
'Um die Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse entsprechend.</p>',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER' => 'Zeitraum vom Versand bis zur Lieferung beim '.
'Empfänger',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS' => 'Werktag(e)',
'D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC' => '<p>Google teilt Ihrem Kunden per Mail mit, '.
'nach welchem Zeitraum die bestellten Artikel in der Regel beim Kunden eintreffen. Geben Sie hier den für '.
'Normalfälle größten Zeitraum für die Lieferung in Tagen an (z.B. 4 bei "1 bis 4 Tage"). Der errechnete '.
'Termin wird dem Kunden per Mail mitgeteilt.</p><p>Fällt der errechnete Termin auf ein Wochenende oder einen '.
'festen Feiertag, wird der nächstmögliche Termin verwendet. Bewegliche und regionale Feiertage werden nicht '.
'berücksichtigt. Um die Liste der Ausnahmen anzupassen, erweitern Sie die Überladung der thankyou-Klasse '.
'entsprechend.</p>',
'D3_GOOGLEANALYTICS_TS_SHOPPING' => 'Verbindung zu Google Shopping',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE' => 'zusätzliche Daten aus Google Shopping '.
'übertragen',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC' => 'Verwenden Sie Google Shopping und möchten '.
'zusätzliche Daten zur Identifizierung übertragen, setzen Sie diesen Haken. Die folgenden Angaben sind dann '.
'ebenfalls erforderlich.',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID' => 'Google Shopping Kontonummer',
'D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC' => 'Tragen Sie hier die Kontonummer (Account ID) '.
'aus Google Shopping ein.',
'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY' => 'Kürzel des Landes Ihres Google Shopping-Kontos',
'D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC' => 'Geben Sie hier das Land Ihres Google Shopping '.
'Kontos an. Erwartet wird der ISO-3166-Ländercode (z.B.: DE, CH, AT, FR).',
'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE' => 'Kürzel der Sprache Ihres Google Shopping-Kontos',
'D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC' => 'Geben Sie hier die Sprache Ihres Google '.
'Shopping Kontos an. Erwartet wird der ISO-639-1-Sprachcode (z.B.: de, en, fr).',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID' => 'Identifikation Ihrer Artikel bei Google '.
'Shopping',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_ARTNUM' => 'Artikelnummer (oxartnum)',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_OXID' => 'interne Ident-Nummer (oxid)',
'D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC' => 'Über welches Feld kann Google Shopping die '.
'dort hinterlegten Artikel identfizieren?',
'D3_GOOGLEANALYTICS_METADATA_TITLE' => 'Google Services Schnittstelle',
'D3_GOOGLEANALYTICS_METADATA_DESC' => 'Dieses Modul stellt Ihnen die schnelle und '.
'unkomplizierte Einbindung Ihres Google-Analytics-Kontos in Ihren Shop zur Verf&uuml;gung. Hierbei werden '.
'&uuml;ber standardisierte Schnittstellen die Besucherdaten und eCommerce-Daten zu Google &uuml;bertragen. '.
'Ebenfalls &uuml;bermittelt werden Daten der Website-Suche.',
'D3_GOOGLEANALYTICS_MAIN_USEOPTOUT' => 'Opt Out anbieten',
'D3_GOOGLEANALYTICS_MAIN_USEOPTOUT_DESC' => '<p>Wird dieser Haken gesetzt, wird im Frontend '.
'ein Opt-Out-Bereich im Header angezeigt. In dem Bereich kann der Benutzer einen Link anklicken, '.
'mit dem das Tracking für diese Seite deaktiviert wird.</p><p>Weitere Informationen zu dieser Option finden '.
'Sie in der <a href="https://www.google.de/search?q=Analytics+_opt+out+script" target="gahelp">Google-Suche'.
'</a>.</p>',
'D3_GOOGLEANALYTICS_ADBLOCKER' => 'AdBlocker detected - Please deactivate it for this page, because otherwise '.
'parts of the admin area can not be loaded correctly.',
// Erweiterung des Links in der Fussnote "Hilfe Starten"
'D3_GOOGLEANALYTICS_HELPLINK' => 'Fragen-zu-speziellen-Modulen/Google-Analytics/',
);
/*
[{oxmultilang ident="GENERAL_YOUWANTTODELETE"}]
*/

View File

@ -0,0 +1,324 @@
[{include file="headitem.tpl" title="D3_GOOGLEANALYTICS_CFG_TITLE"|oxmultilangassign}]
<script type="text/javascript">
<!--
[{if $updatelist == 1}]
UpdateList('[{$oxid}]');
[{/if}]
function UpdateList( sID)
{
var oSearch = parent.list.document.getElementById("search");
oSearch.oxid.value=sID;
oSearch.fnc.value='';
oSearch.submit();
}
function EditThis( sID)
{
var oTransfer = document.getElementById("transfer");
oTransfer.oxid.value=sID;
oTransfer.cl.value='';
oTransfer.submit();
var oSearch = parent.list.document.getElementById("search");
oSearch.actedit.value = 0;
oSearch.oxid.value=sID;
oSearch.submit();
}
function _groupExp(el) {
var _cur = el.parentNode;
if (_cur.className == "exp") _cur.className = "";
else _cur.className = "exp";
}
-->
</script>
<style type="text/css">
<!--
fieldset {
border: 1px inset black;
background-color: #F0F0F0;
}
legend {
font-weight: bold;
}
dl dt {
font-weight: normal;
width: 55%;
}
.ext_edittext {
padding: 2px;
}
td.edittext {
white-space: normal;
}
.servicedesc {
background-color: #d4ffd4;
border: 1px solid green;
margin-bottom: 10px;
padding: 5px;
text-align: center;
}
.servicedesc a {
text-decoration: underline;
}
-->
</style>
[{if $readonly}]
[{assign var="readonly" value="readonly disabled"}]
[{else}]
[{assign var="readonly" value=""}]
[{/if}]
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="actshop" value="[{$shop->id}]">
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form>
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="fnc" value="save">
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="editval[oxid]" value="[{$oxid}]">
<table border="0" width="98%">
<tr>
<td valign="top" class="edittext">
[{if $oView->getValueStatus() == 'error'}]
<hr>
<span style="font-weight: bold;">[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_DESC"}]</span>
<br>
<br>
<span class="d3modcfg_btn fixed icon status_attention">
<input type="submit" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_BTN"}]">
<span></span>
</span>
</form>
</div>
[{else}]
[{if $oView->getGaType() == 'universal'}]
[{assign var="blUniversalDisabled" value="disabled readonly"}]
[{assign var="blAsyncDisabled" value=""}]
[{elseif $oView->getGaType() == 'async'}]
[{assign var="blUniversalDisabled" value=""}]
[{assign var="blAsyncDisabled" value="disabled readonly"}]
[{else}]
[{assign var="blUniversalDisabled" value=""}]
[{assign var="blAsyncDisabled" value=""}]
[{/if}]
<div class="servicedesc">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_DESC"}] [{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_DESC1"}]</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GASetAdWordsCampaignTrack">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK"}]</label>
[{* _gaq.push(['_setCampaignTrack', false]); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GASetAdWordsCampaignTrack]" value="0">
<input id="blD3GASetAdWordsCampaignTrack" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASetAdWordsCampaignTrack')}]checked[{/if}] name="value[blD3GASetAdWordsCampaignTrack]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSCODE_SETCAMPAIGNTRACK_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blD3GASetCampNoKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY"}]</label>
[{* _gaq.push(['_setCampNOKey', 'ga_nooverride']); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GASetCampNoKey]" value="0">
<input id="blD3GASetCampNoKey" class="edittext ext_edittext" type="checkbox" value="1" [{$blUniversalDisabled}] [{if $edit->getValue('blD3GASetCampNoKey')}]checked[{/if}] name="value[blD3GASetCampNoKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNOKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampIdKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY"}]</label>
[{* _gaq.push(['_setCampId', 'ga_content']); *}]
</dt>
<dd>
<input id="sD3GASetCampIdKey" class="edittext ext_edittext" type="text" [{$blAsyncDisabled}] size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampIdKey')}]" name="value[sD3GASetCampIdKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPIDKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampNameKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY"}]</label>
[{* _gaq.push(['_setCampNameKey', 'ga_campaign']); *}]
</dt>
<dd>
<input id="sD3GASetCampNameKey" class="edittext ext_edittext" type="text" size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampNameKey')}]" name="value[sD3GASetCampNameKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPNAMEKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampMediumKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY"}]</label>
[{* _gaq.push(['_setCampMediumKey', 'ga_medium']); *}]
</dt>
<dd>
<input id="sD3GASetCampMediumKey" class="edittext ext_edittext" type="text" size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampMediumKey')}]" name="value[sD3GASetCampMediumKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPMEDIUMKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampSourceKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY"}]</label>
[{* _gaq.push(['_setCampSourceKey', 'ga_source']); *}]
</dt>
<dd>
<input id="sD3GASetCampSourceKey" class="edittext ext_edittext" type="text" size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampSourceKey')}]" name="value[sD3GASetCampSourceKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPSOURCEKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampTermKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY"}]</label>
[{* _gaq.push(['_setCampTermKey', 'ga_term']); *}]
</dt>
<dd>
<input id="sD3GASetCampTermKey" class="edittext ext_edittext" type="text" size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampTermKey')}]" name="value[sD3GASetCampTermKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPTERMKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampContentKey">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY"}]</label>
[{* _gaq.push(['_setCampContentKey', 'ga_content']); *}]
</dt>
<dd>
<input id="sD3GASetCampContentKey" class="edittext ext_edittext" type="text" size="30" maxlength="100" value="[{$edit->getValue('sD3GASetCampContentKey')}]" name="value[sD3GASetCampContentKey]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPCONTENTKEY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GASetCampaignCookieTimeout">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT"}]</label>
[{* _gaq.push(['_setCampaignCookieTimeout', 31536000000]); *}]
</dt>
<dd>
<input id="sD3GASetCampaignCookieTimeout" class="edittext ext_edittext" [{$blUniversalDisabled}] type="text" size="30" maxlength="30" value="[{$edit->getValue('sD3GASetCampaignCookieTimeout')}]" name="value[sD3GASetCampaignCookieTimeout]"> [{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_MS"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDSMAIN_SETCAMPAIGNCOOKIETIMEOUT_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSGENERAL"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GASetConversionTracking">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING"}]</label>
[{* _gaq.push(['_setCampaignTrack', false]); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GASetConversionTracking]" value="0">
<input id="blD3GASetConversionTracking" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASetConversionTracking')}]checked[{/if}] name="value[blD3GASetConversionTracking]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_SETCONVERSIONTRACKING_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GAAdWordConversionId">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_CONVID"}]</label>
</dt>
<dd>
<input type="text" class="edittext ext_edittext" size="15" maxlength="50" name="value[sD3GAAdWordConversionId]" value="[{$edit->getValue('sD3GAAdWordConversionId')}]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_CONVID_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GAAdWordConversionLabel">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL"}]</label>
</dt>
<dd>
<input type="text" class="edittext ext_edittext" size="15" maxlength="50" name="value[sD3GAAdWordConversionLabel]" value="[{$edit->getValue('sD3GAAdWordConversionLabel')}]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_CONVLABEL_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDSREMARKETING"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GASetRemarketing">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GASetRemarketing]" value="0">
<input id="blD3GASetRemarketing" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASetRemarketing')}]checked[{/if}] name="value[blD3GASetRemarketing]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_SETREMARKETING_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GARemarketingConversionId">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID"}]</label>
</dt>
<dd>
<input type="text" class="edittext ext_edittext" size="15" maxlength="15" name="value[sD3GARemarketingConversionId]" value="[{$edit->getValue('sD3GARemarketingConversionId')}]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVID_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GARemarketingConversionLabel">[{oxmultilang ident="D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVLABEL"}]</label>
</dt>
<dd>
<input type="text" class="edittext ext_edittext" size="15" maxlength="15" name="value[sD3GARemarketingConversionLabel]" value="[{$edit->getValue('sD3GARemarketingConversionLabel')}]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ADWORDS_REMARKETINGCONVLABEL_DESC"}]
</dd>
</dl>
</div>
</div>
<table width="100%">
<tr>
<td class="edittext ext_edittext" align="left"><br>
<span class="d3modcfg_btn icon status_ok">
<input type="submit" name="save" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_SAVE"}]">
<span></span>
</span>
</td>
</tr>
</table>
[{/if}]
</td>
</tr>
</table>
[{include file="d3_cfg_mod_inc.tpl"}]

View File

@ -0,0 +1,176 @@
[{include file="headitem.tpl" title="D3_GOOGLEANALYTICS_CFG_TITLE"|oxmultilangassign}]
<script type="text/javascript">
<!--
[{if $updatelist == 1}]
UpdateList('[{$oxid}]');
[{/if}]
function UpdateList( sID)
{
var oSearch = parent.list.document.getElementById("search");
oSearch.oxid.value=sID;
oSearch.fnc.value='';
oSearch.submit();
}
function EditThis( sID)
{
var oTransfer = document.getElementById("transfer");
oTransfer.oxid.value=sID;
oTransfer.cl.value='';
oTransfer.submit();
var oSearch = parent.list.document.getElementById("search");
oSearch.actedit.value = 0;
oSearch.oxid.value=sID;
oSearch.submit();
}
function _groupExp(el) {
var _cur = el.parentNode;
if (_cur.className == "exp") _cur.className = "";
else _cur.className = "exp";
}
-->
</script>
<style type="text/css">
<!--
fieldset {
border: 1px inset black;
background-color: #F0F0F0;
}
legend {
font-weight: bold;
}
dl dt {
font-weight: normal;
width: 55%;
}
.ext_edittext {
padding: 2px;
}
td.edittext {
white-space: normal;
}
.servicedesc {
background-color: #d4ffd4;
border: 1px solid green;
margin-bottom: 10px;
padding: 5px;
text-align: center;
}
.servicedesc a {
text-decoration: underline;
}
-->
</style>
[{if $readonly}]
[{assign var="readonly" value="readonly disabled"}]
[{else}]
[{assign var="readonly" value=""}]
[{/if}]
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="actshop" value="[{$shop->id}]">
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form>
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="fnc" value="save">
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="editval[oxid]" value="[{$oxid}]">
<table border="0" width="98%">
<tr>
<td valign="top" class="edittext">
[{if $oView->getValueStatus() == 'error'}]
<hr>
<span style="font-weight: bold;">[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_DESC"}]</span>
<br>
<br>
<span class="d3modcfg_btn fixed icon status_attention">
<input type="submit" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_BTN"}]">
<span></span>
</span>
</form>
</div>
[{else}]
<div class="servicedesc">[{oxmultilang ident="D3_GOOGLEANALYTICS_CAMPAIGNS_DESC"}] [{oxinputhelp ident="D3_GOOGLEANALYTICS_CAMPAIGNS_DESC1"}]</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_CAMPAIGNSETTINGS"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GASetCampaignTrack">[{oxmultilang ident="D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK"}]</label>
[{* _gaq.push(['_setCampaignTrack', false]); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GASetCampaignTrack]" value="0">
<input id="blD3GASetCampaignTrack" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASetCampaignTrack')}]checked[{/if}] name="value[blD3GASetCampaignTrack]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_SETCAMPAIGNTRACK_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blD3GASetCampaignOnThankyouOnly">[{oxmultilang ident="D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GASetCampaignOnThankyouOnly]" value="0">
<input id="blD3GASetCampaignOnThankyouOnly" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASetCampaignOnThankyouOnly')}]checked[{/if}] name="value[blD3GASetCampaignOnThankyouOnly]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_SETCAMPAIGNTHANKYOUONLY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GACampaignCode">[{oxmultilang ident="D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE"}]</label>
</dt>
<dd>
<textarea id="sD3GACampaignCode" class="edittext ext_edittext" cols="80" rows="7" name="value[sD3GACampaignCode]">[{strip}]
[{$edit->getValue('sD3GACampaignCode')}]
[{/strip}]</textarea>
[{oxinputhelp ident="D3_GOOGLEANALYTICS_CAMPAIGNCODE_CODE_DESC"}]
</dd>
</dl>
</div>
</div>
<table width="100%">
<tr>
<td class="edittext ext_edittext" align="left"><br>
<span class="d3modcfg_btn icon status_ok">
<input type="submit" name="save" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_SAVE"}]">
<span></span>
</span>
</td>
</tr>
</table>
[{/if}]
</td>
</tr>
</table>
[{include file="d3_cfg_mod_inc.tpl"}]

View File

@ -0,0 +1,407 @@
[{include file="headitem.tpl" title="D3_GOOGLEANALYTICS_CFG_TITLE"|oxmultilangassign}]
<script type="text/javascript">
<!--
[{if $updatelist == 1}]
UpdateList('[{$oxid}]');
[{/if}]
function UpdateList( sID)
{
var oSearch = parent.list.document.getElementById("search");
oSearch.oxid.value=sID;
oSearch.fnc.value='';
oSearch.submit();
}
function EditThis( sID)
{
var oTransfer = document.getElementById("transfer");
oTransfer.oxid.value=sID;
oTransfer.cl.value='';
oTransfer.submit();
var oSearch = parent.list.document.getElementById("search");
oSearch.actedit.value = 0;
oSearch.oxid.value=sID;
oSearch.submit();
}
function _groupExp(el) {
var _cur = el.parentNode;
if (_cur.className == "exp") _cur.className = "";
else _cur.className = "exp";
}
-->
</script>
<style type="text/css">
<!--
fieldset {
border: 1px inset black;
background-color: #F0F0F0;
}
legend {
font-weight: bold;
}
dl dt {
font-weight: normal;
width: 55%;
}
.ext_edittext {
padding: 2px;
}
td.edittext {
white-space: normal;
}
.servicedesc {
background-color: #d4ffd4;
border: 1px solid green;
margin-bottom: 10px;
padding: 5px;
text-align: center;
}
.servicedesc a {
text-decoration: underline;
}
-->
</style>
[{if $readonly}]
[{assign var="readonly" value="readonly disabled"}]
[{else}]
[{assign var="readonly" value=""}]
[{/if}]
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="actshop" value="[{$shop->id}]">
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form>
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="fnc" value="save">
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="editval[oxid]" value="[{$oxid}]">
<table border="0" width="98%">
<tr>
<td valign="top" class="edittext">
[{include file="d3_cfg_mod_active.tpl"}]
[{if $edit->getErrorMessage()}]
[{elseif $oView->getValueStatus() == 'error'}]
<hr>
<span style="font-weight: bold;">[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_DESC"}]</span>
<br>
<br>
<span class="d3modcfg_btn fixed icon status_attention">
<input type="submit" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_NOCONFIG_BTN"}]">
<span></span>
</span>
[{else}]
<div class="servicedesc">[{oxmultilang ident="D3_GOOGLEANALYTICS_DESC"}] [{oxinputhelp ident="D3_GOOGLEANALYTICS_DESC1"}]</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN"}]
</span>
</a>
<dl>
<dt style="height: 25px;">
<label for="sD3GAType">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_GATYPE"}]</label>
</dt>
<dd>
<input type="radio" name="value[sD3GAType]" value="gtag" checked> [{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_GATYPE_GTAG"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_GATYPE_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GAId">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_GAID"}]</label>
</dt>
<dd>
<input id="sD3GAId" class="edittext ext_edittext" type="text" size="15" maxlength="20" value="[{$edit->getValue('sD3GAId')}]" name="value[sD3GAId]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_GAID_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GAAdditionalProperties">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_ADDPROP"}]</label>
</dt>
<dd>
<textarea id="sD3GAAdditionalProperties" class="confinput" name="valuearr[sD3GAAdditionalProperties]">[{$edit->getEditValue('sD3GAAdditionalProperties')}]</textarea>
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEPREFIX_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blD3GAAnonymizeIP">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GAAnonymizeIP]" value="0">
<input id="blD3GAAnonymizeIP" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GAAnonymizeIP')}]checked[{/if}] name="value[blD3GAAnonymizeIP]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_ANONYMIZEIP_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blD3GAUseOptOut">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_USEOPTOUT"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GAUseOptOut]" value="0">
<input id="blD3GAUseOptOut" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GAUseOptOut')}]checked[{/if}] name="value[blD3GAUseOptOut]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_USEOPTOUT_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blD3GATrackPageLoadTime">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME"}]</label>
[{* _gaq.push(['_gat._trackPageLoadTime']); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GATrackPageLoadTime]" value="0">
<input id="blD3GATrackPageLoadTime" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GATrackPageLoadTime')}]checked[{/if}] name="value[blD3GATrackPageLoadTime]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_TRACKPAGELOADTIME_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_COOKIE"}]
</span>
</a>
<dl>
<dt>
<label for="sD3GACookiePrefix">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_COOKIEPREFIX"}]</label>
</dt>
<dd>
<input id="sD3GACookiePrefix" class="edittext ext_edittext" type="text" size="15" maxlength="20" value="[{$edit->getValue('sD3GACookiePrefix')}]" name="value[sD3GACookiePrefix]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEPREFIX_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GACookieDomain">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_COOKIEDOMAIN"}]</label>
</dt>
<dd>
<input id="sD3GACookieDomain" class="edittext ext_edittext" type="text" size="15" maxlength="20" value="[{$edit->getValue('sD3GACookieDomain')}]" name="value[sD3GACookieDomain]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEDOMAIN_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GACookieExpiration">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_COOKIEEXPIRATION"}]</label>
</dt>
<dd>
<input id="sD3GACookieExpiration" class="edittext ext_edittext" type="text" size="15" maxlength="20" value="[{$edit->getValue('sD3GACookieExpiration')}]" name="value[sD3GACookieExpiration]"> in Sekunden
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEEXPIRATION_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_CROSSDOMAIN"}]
</span>
</a>
<dl>
<dt>
<label for="sD3GACrossDomainDomain">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_CROSSDOMAINDOMAINS"}]</label>
</dt>
<dd>
<textarea id="sD3GACrossDomainDomain" class="confinput" name="valuearr[sD3GACrossDomainDomain]">[{$edit->getEditValue('sD3GACrossDomainDomain')}]</textarea>
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEPREFIX_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_DIMENSIONS"}]
</span>
</a>
<dl>
<dt>
<label for="sD3GADimensionList">[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN_DIMENSIONSLIST"}]</label>
</dt>
<dd>
<textarea id="sD3GADimensionList" class="confinput" name="valuearr[sD3GADimensionList]">[{$edit->getEditValue('sD3GADimensionList')}]</textarea>
[{oxinputhelp ident="D3_GOOGLEANALYTICS_MAIN_COOKIEPREFIX_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_BOUNCEOPT"}]
</span>
</a>
<dl>
<dt>
<label for="blUseBounceRateOptimization">[{oxmultilang ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blUseBounceRateOptimization]" value="0">
<input id="blUseBounceRateOptimization" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blUseBounceRateOptimization')}]checked[{/if}] name="value[blUseBounceRateOptimization]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SWITCH_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="iSendNoBounceEventTime">[{oxmultilang ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT1"}]</label>
</dt>
<dd>
<input id="iSendNoBounceEventTime" class="edittext ext_edittext" type="text" size="5" maxlength="5" value="[{if $edit->getValue('iSendNoBounceEventTime')}][{$edit->getValue('iSendNoBounceEventTime')}][{else}]10000[{/if}]" name="value[iSendNoBounceEventTime]">
[{oxmultilang ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT2"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SENDTIMEEVENT_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="blSendNoBounceEventScroll">[{oxmultilang ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blSendNoBounceEventScroll]" value="0">
<input id="blSendNoBounceEventScroll" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blSendNoBounceEventScroll')}]checked[{/if}] name="value[blSendNoBounceEventScroll]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_BOUNCEOPT_SENDSCROLLEVENT_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ECOMMERCE"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GASendECommerce">[{oxmultilang ident="D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GASendECommerce]" value="0">
<input id="blD3GASendECommerce" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GASendECommerce')}]checked[{/if}] name="value[blD3GASendECommerce]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ECOMMERCE_SENDDATA_DESC"}]
</dd>
</dl>
</div>
</div>
<table width="100%">
<tr>
<td class="edittext ext_edittext" align="left"><br>
<span class="d3modcfg_btn icon status_ok">
<input type="submit" name="save" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_SAVE"}]">
<span></span>
</span>
</td>
</tr>
</table>
<br><br>[{oxmultilang ident="D3_GOOGLEANALYTICS_SECURITYINFORMATIONS"}]
[{*--------------------------------------*}]
<hr>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ECOMMERCE"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GAUseNetto">[{oxmultilang ident="D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GAUseNetto]" value="0">
<input id="blD3GAUseNetto" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GAUseNetto')}]checked[{/if}] name="value[blD3GAUseNetto]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ECOMMERCE_USENETTO_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_ANALYTICSREMARKETING"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GAUseAnalyticsRemarketing">[{oxmultilang ident="D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT"}]</label>
</dt>
<dd>
<input type="hidden" name="value[blD3GAUseAnalyticsRemarketing]" value="0">
<input id="blD3GAUseAnalyticsRemarketing" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GAUseAnalyticsRemarketing')}]checked[{/if}] name="value[blD3GAUseAnalyticsRemarketing]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_ANALYTICSREMARKETING_TRANSMIT_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_CUSTOMVARS"}]
</span>
</a>
<dl>
<dt>
<label for="blD3GAUseCustomVars">[{oxmultilang ident="D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT"}]</label>
[{* _gaq.push(['_setCustomVar', false]); *}]
</dt>
<dd>
<input type="hidden" name="value[blD3GAUseCustomVars]" value="0">
<input id="blD3GAUseCustomVars" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('blD3GAUseCustomVars')}]checked[{/if}] name="value[blD3GAUseCustomVars]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_CUSTOMVARS_TRANSMIT_DESC"}]
</dd>
</dl>
</div>
</div>
[{/if}]
</td>
</tr>
</table>
</form>
[{include file="d3_cfg_mod_inc.tpl"}]

View File

@ -0,0 +1,238 @@
[{include file="headitem.tpl" title="D3_GOOGLEANALYTICS_CFG_TITLE"|oxmultilangassign}]
<script type="text/javascript">
<!--
[{if $updatelist == 1}]
UpdateList('[{$oxid}]');
[{/if}]
function UpdateList( sID)
{
var oSearch = parent.list.document.getElementById("search");
oSearch.oxid.value=sID;
oSearch.fnc.value='';
oSearch.submit();
}
function EditThis( sID)
{
var oTransfer = document.getElementById("transfer");
oTransfer.oxid.value=sID;
oTransfer.cl.value='';
oTransfer.submit();
var oSearch = parent.list.document.getElementById("search");
oSearch.actedit.value = 0;
oSearch.oxid.value=sID;
oSearch.submit();
}
function _groupExp(el) {
var _cur = el.parentNode;
if (_cur.className == "exp") _cur.className = "";
else _cur.className = "exp";
}
-->
</script>
<style type="text/css">
<!--
fieldset {
border: 1px inset black;
background-color: #F0F0F0;
}
legend {
font-weight: bold;
}
dl dt {
font-weight: normal;
width: 55%;
}
.ext_edittext {
padding: 2px;
}
td.edittext {
white-space: normal;
}
.servicedesc {
background-color: #d4ffd4;
border: 1px solid green;
margin-bottom: 10px;
padding: 5px;
text-align: center;
}
.servicedesc a {
text-decoration: underline;
}
-->
</style>
[{if $readonly}]
[{assign var="readonly" value="readonly disabled"}]
[{else}]
[{assign var="readonly" value=""}]
[{/if}]
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="actshop" value="[{$shop->id}]">
<input type="hidden" name="editlanguage" value="[{$editlanguage}]">
</form>
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
[{$oViewConf->getHiddenSid()}]
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
<input type="hidden" name="fnc" value="save">
<input type="hidden" name="oxid" value="[{$oxid}]">
<input type="hidden" name="editval[oxid]" value="[{$oxid}]">
<table border="0" width="98%">
<tr>
<td valign="top" class="edittext">
<div class="servicedesc">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_DESC"}] [{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_DESC1"}]</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_MAIN"}]
</span>
</a>
<dl>
<dt>
<label for="sD3GATSActive">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ACTIVE"}]</label>
</dt>
<dd>
<input type="hidden" name="value[sD3GATSActive]" value="0">
<input id="sD3GATSActive" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('sD3GATSActive')}]checked[{/if}] name="value[sD3GATSActive]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ACTIVE_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GATSId">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ID"}]</label>
</dt>
<dd>
<input id="sD3GATSId" class="edittext ext_edittext" type="text" size="15" maxlength="20" value="[{$edit->getValue('sD3GATSId')}]" name="value[sD3GATSId]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ID_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="iEstShippingTimeValue">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER"}]</label>
</dt>
<dd>
<input id="iEstShippingTimeValue" type="text" name="value[iEstShippingTimeValue]" class="edittext ext_edittext" size="3" maxlength="5" value="[{if $edit->getValue('iEstShippingTimeValue')}][{$edit->getValue('iEstShippingTimeValue')}][{else}]1[{/if}]" [{$readonly}]>
[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="iEstShippingTimeValueOutOfStock">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_OUTOFSTOCK"}]</label>
</dt>
<dd>
<input id="iEstShippingTimeValueOutOfStock" type="text" name="value[iEstShippingTimeValueOutOfStock]" class="edittext ext_edittext" size="3" maxlength="5" value="[{if $edit->getValue('iEstShippingTimeValueOutOfStock')}][{$edit->getValue('iEstShippingTimeValueOutOfStock')}][{else}]1[{/if}]" [{$readonly}]>
[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTER_DAYS"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ESTSHIPDATEAFTEROUTOFSTOCK_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="iEstDeliveryTimeValue">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER"}]</label>
</dt>
<dd>
<input id="iEstDeliveryTimeValue" type="text" name="value[iEstDeliveryTimeValue]" class="edittext ext_edittext" size="3" maxlength="5" value="[{if $edit->getValue('iEstDeliveryTimeValue')}][{$edit->getValue('iEstDeliveryTimeValue')}][{else}]1[{/if}]" [{$readonly}]>
[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DAYS"}]
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_ESTDELDATEAFTER_DESC"}]
</dd>
</dl>
</div>
</div>
<div class="groupExp">
<div class="">
<a class="rc" onclick="_groupExp(this); return false;" href="#">
<span style="font-weight: bold;">
[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPING"}]
</span>
</a>
<dl>
<dt>
<label for="sD3GATSShoppingActive">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE"}]</label>
</dt>
<dd>
<input type="hidden" name="value[sD3GATSShoppingActive]" value="0">
<input id="sD3GATSShoppingActive" class="edittext ext_edittext" type="checkbox" value="1" [{if $edit->getValue('sD3GATSShoppingActive')}]checked[{/if}] name="value[sD3GATSShoppingActive]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACTIVE_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GATSShoppingAccountId">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID"}]</label>
</dt>
<dd>
<input type="text" id="sD3GATSShoppingAccountId" class="edittext ext_edittext" value="[{if $edit->getValue('sD3GATSShoppingAccountId')}][{$edit->getValue('sD3GATSShoppingAccountId')}][{/if}]" size="20" maxlength="20" name="value[sD3GATSShoppingAccountId]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGACCOUNTID_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GATSShoppingCountry">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY"}]</label>
</dt>
<dd>
<input type="text" id="sD3GATSShoppingCountry" class="edittext ext_edittext" value="[{if $edit->getValue('sD3GATSShoppingCountry')}][{$edit->getValue('sD3GATSShoppingCountry')}][{else}]DE[{/if}]" size="5" maxlength="2" name="value[sD3GATSShoppingCountry]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGCOUNTRY_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GATSShoppingLanguage">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE"}]</label>
</dt>
<dd>
<input type="text" id="sD3GATSShoppingLanguage" class="edittext ext_edittext" value="[{if $edit->getValue('sD3GATSShoppingLanguage')}][{$edit->getValue('sD3GATSShoppingLanguage')}][{else}]de[{/if}]" size="5" maxlength="2" name="value[sD3GATSShoppingLanguage]">
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGLANGUAGE_DESC"}]
</dd>
</dl>
<dl>
<dt>
<label for="sD3GATSShoppingArtId">[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGARTID"}]</label>
</dt>
<dd>
<select id="sD3GATSShoppingArtId" name="value[sD3GATSShoppingArtId]" size="1" class="edittext ext_edittext">
<option value="oxartnum" [{if $edit->getValue('sD3GATSShoppingArtId') == 'oxartnum'}]selected[{/if}]>[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_ARTNUM"}]</option>
<option value="oxid" [{if $edit->getValue('sD3GATSShoppingArtId') == 'oxid'}]selected[{/if}]>[{oxmultilang ident="D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_OXID"}]</option>
</select>
[{oxinputhelp ident="D3_GOOGLEANALYTICS_TS_SHOPPINGARTID_DESC"}]
</dd>
</dl>
</div>
</div>
<table width="100%">
<tr>
<td class="edittext ext_edittext" align="left"><br>
<span class="d3modcfg_btn icon status_ok">
<input type="submit" name="save" value="[{oxmultilang ident="D3_CFG_MOD_GENERAL_SAVE"}]">
<span></span>
</span>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
[{include file="d3_cfg_mod_inc.tpl"}]

View File

@ -0,0 +1,30 @@
[{$smarty.block.parent}]
[{d3modcfgcheck modid="d3_googleanalytics"}]
[{/d3modcfgcheck}]
[{if $mod_d3_googleanalytics}]
[{* Content shouldn't rendered in disabled module!
Because of this reason, it can't included in d3modcfgcheck block. *}]
[{block name="BaseAdwords"}]
[{if $oD3GASettings->getValue('sD3GATSActive') && $oD3GASettings->getValue('sD3GATSId')}]
[{capture name="d3GATrustedStoreCode"}]
[{strip}]
[{include file="d3ga_universal_trustedstore.tpl"}]
[{/strip}]
[{/capture}]
[{if $oViewConf->getActiveClassName() == 'thankyou'}]
[{$oView->logCode($smarty.capture.d3GATrustedStoreCode)}]
[{/if}]
[{$smarty.capture.d3GATrustedStoreCode}]
[{/if}]
[{include file="d3ga_universal_adwordscode.tpl"}]
[{include file="d3ga_universal_remarketing.tpl"}]
[{include file="d3ga_universal_campaigncode.tpl"}]
[{/block}]
[{/if}]

View File

@ -0,0 +1,10 @@
[{$smarty.block.parent}]
[{d3modcfgcheck modid="d3_googleanalytics"}][{/d3modcfgcheck}]
[{if $mod_d3_googleanalytics}]
[{block name="BaseAnalytics"}]
[{include file="d3ga_gtag.tpl"}]
[{oxstyle include=$oViewConf->getModuleUrl('d3_googleanalytics', 'out/src/d3_googleanalytics.css')}]
[{/block}]
[{/if}]

View File

@ -0,0 +1,30 @@
[{$smarty.block.parent}]
[{d3modcfgcheck modid="d3_googleanalytics"}]
[{/d3modcfgcheck}]
[{if $mod_d3_googleanalytics && $oD3GASettings->getValue('blD3GAUseOptOut')}]
[{block name="BaseOptout"}]
<div id="d3GAOptOut">
<a href="javascript:gaOptout();">[{oxmultilang ident="D3_GOOGLEANALYTICS_OPTOUT"}]</a>
[{assign var='sGaId' value=$oD3GASettings->getValue('sD3GAId')}]
[{oxscript add="
var gaProperty = '`$sGaId`';
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
window[disableStr] = true;
}
function gaOptout() {
document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[disableStr] = true;
$('#d3GAOptOut').remove();
}
if (window[disableStr]) {
$('#d3GAOptOut').remove();
}"}]
</div>
[{/block}]
[{/if}]

View File

@ -0,0 +1,177 @@
[{if $blD3GoogleAnalyticsActive && $oD3GASettings->getValue('sD3GAId')}]
[{capture name="d3GATrackCode"}]
[{*strip*}]
[{if $oD3GASettings->getValue('blD3GAUseOptOut')}]
[{block name="d3ga_optoutscript"}]
<script type="text/javascript">
var gaProperty = '[{$oD3GASettings->getValue('sD3GAId')}]';
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
window[disableStr] = true;
}
function gaOptout() {
document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
window[disableStr] = true;
}
</script>
[{/block}]
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/ *}]
[{* Global site tag (gtag.js) - Google Analytics *}]
<script async src="https://www.googletagmanager.com/gtag/js?id=[{$oD3GASettings->getValue('sD3GAId')}]"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/setting-values *}]
gtag('set', {
'currency': '[{$oD3GAActCurrency->name}]',
});
gtag(
'config', '[{$oD3GASettings->getValue('sD3GAId')}]',
{
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/pages *}]
'page_title' : '[{$sD3GAPageTitle}]',
'page_location' : '[{$sD3GAPageLocation}]',
'page_path': '/[{$sD3GAPagePath}]',
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id *}]
[{if $oD3GASettings->getValue('sD3GACookiePrefix')}]
'cookie_prefix': '[{$oD3GASettings->getValue('sD3GACookiePrefix')}]',
[{/if}]
[{if $oD3GASettings->getValue('sD3GACookieDomain')}]
'cookie_domain': '[{$oD3GASettings->getValue('sD3GACookieDomain')}]',
[{/if}]
[{if $oD3GASettings->getValue('sD3GACookieExpiration')}]
'cookie_expires': [{$oD3GASettings->getValue('sD3GACookieExpiration')}], // in seconds
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id *}]
[{if $sD3GAUserId}]
'user_id': '[{$sD3GAUserId}]',
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain *}]
[{assign var="crossDomains" value=$oD3GASettings->getValue('sD3GACrossDomainDomain')}]
[{if $crossDomains|@count}]
'linker': { 'domains': ['[{"', '"|implode:$crossDomains}]'] },
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/custom-dims-mets
siehe auch Event *}]
[{assign var="dimensionList" value=$oD3GASettings->getValue('sD3GADimensionList')}]
[{if $dimensionList|@count || $oD3GASettings->getValue('blD3GATrackPageLoadTime')}]
'custom_map': {
[{if $oD3GASettings->getValue('blD3GATrackPageLoadTime')}]
'metric1': 'pageLoadTime',
[{/if}]
[{if $dimensionList|@count}]
[{foreach name="dimensions" from=$dimensionList item="dimensionTitle"}]
'dimension[{$smarty.foreach.dimensions.iteration}]': '[{$dimensionTitle}]',
[{/foreach}]
[{/if}]
},
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/ip-anonymization *}]
[{if $oD3GASettings->getValue('blD3GAAnonymizeIP')}]
'anonymize_ip': true,
[{/if}]
}
);
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/ *}]
[{* https://developers.google.com/gtagjs/devguide/snippet *}]
[{assign var="additionalProperties" value=$oD3GASettings->getValue('sD3GAAdditionalProperties')}]
[{if $additionalProperties|@count}]
[{foreach from=$additionalProperties item="addProp"}]
gtag('config', '[{$addProp}]');
[{/foreach}]
[{/if}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/user-timings *}]
[{if $oD3GASettings->getValue('blD3GATrackPageLoadTime')}]
// Feature detects Navigation Timing API support.
if (window.performance) {
// Gets the number of milliseconds since page load
// (and rounds the result since the value must be an integer).
let timeSincePageLoad = Math.round(performance.now());
// Sends the timing event to Google Analytics.
gtag('event', 'timing_complete', {
'name': 'load',
'value': timeSincePageLoad
});
}
[{/if}]
[{* track page load time *}]
[{if $oD3GASettings->getValue('blD3GATrackPageLoadTime')}]
[{block name="d3ga_trackpageloadtime"}]
let perfData = window.performance.timing;
let pageLoadTime =
Math.round(
(
(perfData.domComplete > 0 ? perfData.domComplete : perfData.responseEnd) - perfData.navigationStart
) / 1000
);
gtag('event', 'trackPageLoadTime', {
'pageLoadTime': pageLoadTime
});
[{/block}]
[{/if}]
[{* bounce optimization *}]
[{block name="d3ga_bounceoptimization"}]
[{if $oD3GASettings->getValue('blUseBounceRateOptimization')}]
setTimeout("gtag('event', 'NoBounce', {" +
"'event_category': 'Over defined seconds'" +
"})",[{$iD3GASendNoBounceEventTime}]);
[{if $oD3GASettings->getValue('blSendNoBounceEventScroll')}]
window.addEventListener ?
window.addEventListener('scroll', testScroll, false) :
window.attachEvent('onscroll', testScroll);
let scrollCount = 0;
function testScroll() {
++scrollCount;
if (scrollCount === 2) {
gtag('event', 'NoBounce', {
'event_category': 'window scrolled'
});
}
}
[{/if}]
[{/if}]
[{/block}]
[{include file="d3ga_gtag_ecommerce.tpl"}]
[{include file="d3ga_gtag_adwords.tpl"}]
[{include file="d3ga_gtag_custom.tpl"}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/events *}]
[{* login, logout, toBasket, fromBasket, sendContact *}]
gtag('event', 'ACTION', { 'event_category': 'CATEGORY', 'event_label': 'LABEL', 'value': 'VALUE' });
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/custom-dims-mets *}]
gtag ('event', 'age_dimension', {'age': 12});
</script>
[{*/strip*}]
[{/capture}]
[{if $oViewConf->getActiveClassName() == 'thankyou'}]
[{$oView->logCode($smarty.capture.d3GATrackCode)}]
[{/if}]
[{$smarty.capture.d3GATrackCode}]
[{/if}]

View File

@ -0,0 +1,39 @@
[{strip}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')}]
[{block name="UniversalAdwordsCampaignOn"}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampNameKey')}]
ga('set', 'campaignName', '[{$oD3GASettings->getValue('sD3GASetCampNameKey')}]');
[{/if}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampMediumKey')}]
ga('set', 'campaignMedium', '[{$oD3GASettings->getValue('sD3GASetCampMediumKey')}]');
[{/if}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampSourceKey')}]
ga('set', 'campaignSource', '[{$oD3GASettings->getValue('sD3GASetCampSourceKey')}]');
[{/if}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampTermKey')}]
ga('set', 'campaignKeyword', '[{$oD3GASettings->getValue('sD3GASetCampTermKey')}]');
[{/if}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampContentKey')}]
ga('set', 'campaignContent', '[{$oD3GASettings->getValue('sD3GASetCampContentKey')}]');
[{/if}]
[{if false == $oD3GASettings->getValue('blD3GASetAdWordsCampaignTrack')
&& $oD3GASettings->getValue('sD3GASetCampIdKey')}]
ga('set', 'campaignId', '[{$oD3GASettings->getValue('sD3GASetCampIdKey')}]');
[{/if}]
[{/block}]
[{else}]
[{block name="UniversalAdwordsCampaignOff"}]
ga('set', 'campaignTrack', false);
[{/block}]
[{/if}]
[{/strip}]

View File

@ -0,0 +1,111 @@
[{if $oD3GASettings->getValue('blD3GAUseAnalyticsRemarketing') || $oD3GASettings->getValue('blD3GAUseCustomVars')}]
[{strip}]
[{if $oViewConf->getActiveClassName() == 'thankyou'}]
[{assign var="order" value=$oView->getOrder()}]
[{assign var="oPayment" value=$order->getPayment()}]
[{assign var="oDelSet" value=$order->getDelSet()}]
[{assign var="aVoucherSerieList" value=$order->d3getVoucherSerieList()}]
[{/if}]
[{assign var="iDimensionCount" value=0}]
[{block name="AnalyticsRemarkting"}]
[{if $oD3GASettings->getValue('blD3GAUseAnalyticsRemarketing')}]
[{* dimension 1 set product ids *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $sD3GARemarketingProdId2}]
ga(
'set',
'dimension[{$iDimensionCount}]',
[{$sD3GARemarketingProdId2}]
);
[{/if}]
[{* dimension 2 set page type *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $sD3GARemarketingPageType}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$sD3GARemarketingPageType}]'
);
[{/if}]
[{* dimension 3 set product total price *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $sD3GARemarketingPrice}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$sD3GARemarketingPrice}]'
);
[{/if}]
[{/if}]
[{/block}]
[{block name="CustomVars"}]
[{if $oD3GASettings->getValue('blD3GAUseCustomVars')}]
[{* dimension 1 set customer gender *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oxcmp_user}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{if $oxcmp_user->oxuser__oxsal->value == 'MR'}]male[{elseif $oxcmp_user->oxuser__oxsal->value == 'MRS'}]female[{/if}]'
);
[{/if}]
[{* dimension 2 set payment type *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oViewConf->getActiveClassName() == 'thankyou' && $oPayment}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$oPayment->getFieldData('oxdesc')}]'
);
[{/if}]
[{* dimension 3 set delivery type *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oViewConf->getActiveClassName() == 'thankyou' && $oDelSet}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$oDelSet->getFieldData('oxtitle')}]'
);
[{/if}]
[{* dimension 4 set vouchers *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oViewConf->getActiveClassName() == 'thankyou' && $aVoucherSerieList}]
ga(
'set', {
[{foreach from=$aVoucherSerieList item="oVoucherSerie"}]
'dimension[{$iDimensionCount}]' : '[{$oVoucherSerie->getFieldData('oxserienr')}]',
[{/foreach}]
}
);
[{/if}]
[{* dimension 5 set currency *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oViewConf->getActiveClassName() == 'thankyou' && $order}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$order->getFieldData('oxcurrency')}]'
);
[{/if}]
[{* dimension 6 set new customer status *}]
[{assign var="iDimensionCount" value=$iDimensionCount+1}]
[{if $oViewConf->getActiveClassName() == 'thankyou'}]
ga(
'set',
'dimension[{$iDimensionCount}]',
'[{$oView->isNewCustomer()}]'
);
[{/if}]
[{/if}]
[{/block}]
[{/strip}][{/if}]

View File

@ -0,0 +1,80 @@
[{if $blIsImpressionViewList}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce *}]
gtag('event', '[{$sImpressionViewType}]', {
"items": [
[{foreach from=$aD3GAProdInfos name="itemlist" item="item"}]
[{assign var="oPrice" value=$item->getPrice()}]
[{assign var="oManufacturer" value=$item->getManufacturer()}]
[{assign var="oCategory" value=$item->getCategory()}]
[{include file="d3ga_gtag_ecommerceproduct.tpl" item=$item iteration=$smarty.foreach.itemlist.iteration listname=$sImpressionListType}]
[{/foreach}]
]
});
[{elseif $blIsCheckoutViewList}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce *}]
gtag('event', '[{$sImpressionViewType}]', {
"items": [
[{foreach from=$oBasket->getContents() name="itemlist" item="basketContent"}]
[{assign var="item" value=$basketContent->getArticle()}]
[{assign var="oPrice" value=$item->getPrice()}]
[{assign var="oManufacturer" value=$item->getManufacturer()}]
[{assign var="oCategory" value=$item->getCategory()}]
[{include file="d3ga_gtag_ecommerceproduct.tpl" item=$item iteration=$smarty.foreach.itemlist.iteration listname=$sImpressionListType quantity=$basketContent->getAmount()}]
[{/foreach}]
]
[{if $oVoucherList && $oVoucherList->count()}]
, "coupon": "
[{foreach from=$oVoucherList item="oVoucher"}]
[{assign var="voucherSerie" value=$oVoucher->getSerie()}]
[{$voucherSerie->getFieldData('oxserienr')}],
[{/foreach}]
"
[{/if}]
});
[{elseif $blIsPurchasedList}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce *}]
[{assign var="oCurrency" value=$oOrder->getOrderCurrency()}]
gtag('event', 'purchase', {
"transaction_id": "[{$oOrder->getFieldData('oxordernr')}]",
"affiliation": "[{$oShop->getFieldData('oxname')|escape:"quotes"}]",
"value": [{$oOrder->getFieldData('oxtotalnetsum')}],
"currency": "[{$oCurrency->name}]",
"tax": [{$dVat}],
"shipping": [{$oOrder->getFieldData('oxdelcost')}],
"items": [
[{foreach from=$oOrder->getOrderArticles() name="itemlist" item="oOrderArticle"}]
[{assign var="oArticle" value=$oOrderArticle->getArticle()}]
[{include file="d3ga_gtag_ecommerceproduct.tpl" item=$oArticle iteration=$smarty.foreach.itemlist.iteration listname="Purchase List" quantity=$oOrderArticle->getFieldData('oxamount')}]
[{/foreach}]
]
[{if $oVoucherList && $oVoucherList->count()}]
, "coupon": "
[{foreach from=$oVoucherList item="oVoucher"}]
[{assign var="voucherSerie" value=$oVoucher->getSerie()}]
[{$voucherSerie->getFieldData('oxserienr')}],
[{/foreach}]
"
[{/if}]
});
[{/if}]
[{if $blIsBasketAction}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce *}]
[{* add_to_cart + remove_from_cart *}]
gtag('event', '[{$sBasketActionType}]', {
"items": [
[{foreach from=$aD3GABasketProdInfos name="itemlist" item="item"}]
[{include file="d3ga_gtag_ecommerceproduct.tpl" item=$item iteration=$smarty.foreach.itemlist.iteration listname=$sImpressionListType quantity=$dAmount}]
[{/foreach}]
]
});
[{/if}]
[{if $blIsCheckoutViewList || $blIsPurchasedList}]
[{* https://developers.google.com/analytics/devguides/collection/gtagjs/enhanced-ecommerce *}]
gtag('event', 'set_checkout_option', {
"checkout_step": [{$iCheckoutStep}],
"checkout_option": "Shipping + Payment",
"value": "[{$checkoutOptionValue}]"
});
[{/if}]

View File

@ -0,0 +1,15 @@
[{if !$quantity}][{assign var="quantity" value=1}][{/if}]
[{assign var="oPrice" value=$item->getPrice()}]
[{assign var="oManufacturer" value=$item->getManufacturer()}]
[{assign var="oCategory" value=$item->getCategory()}]
{
"id": "[{$item->getFieldData('oxartnum')}]",
"name": "[{$item->getFieldData('oxtitle')}]",
"list_name": "[{$listname}]",
"brand": "[{if $oManufacturer}][{$oManufacturer->getTitle()}][{/if}]",
"category": "[{if $oCategory}][{$oCategory->getTitle()}][{/if}]",
"variant": "[{$item->getFieldData('oxvarselect')}]",
"list_position": [{$iteration}],
"quantity": [{$quantity}],
"price": '[{$oPrice->getPrice()}]'
},

View File

@ -0,0 +1,44 @@
[{strip}][{if $oD3GASettings->getValue('blD3GASetConversionTracking') &&
$oD3GASettings->getValue('sD3GAAdWordConversionId') && $oViewConf->getActiveClassName() == 'thankyou'}]
[{block name="UniversalAdwordsCode"}]
[{capture name="d3AdWordsCode"}]
[{assign var="order" value=$oView->getOrder()}]
[{assign var="currate" value=$order->oxorder__oxcurrate->value}]
[{if $oD3GASettings->getValue('blD3GAUseNetto')}]
[{math equation="s / r" s=$order->getOrderNetSum() r=$currate assign="sTotal"}] [{* // total - required - has to be gross sum *}]
[{else}]
[{math equation="s / r" s=$order->getTotalOrderSum() r=$currate assign="sTotal"}] [{* // total - required *}]
[{/if}]
<!-- Google Code for Conversion Page -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = [{$oD3GASettings->getValue('sD3GAAdWordConversionId')}];
var google_conversion_language = "de";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "[{$oD3GASettings->getValue('sD3GAAdWordConversionLabel')}]";
var google_conversion_value = [{$sTotal}];
var google_remarketing_only = false;
/* ]]> */
</script>
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/[{$oD3GASettings->getValue('sD3GAAdWordConversionId')}]/?value=[{$sTotal}]&amp;label=[{$oD3GASettings->getValue('sD3GAAdWordConversionLabel')}]&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
[{/capture}]
[{$oView->logCode($smarty.capture.d3AdWordsCode)}]
[{$smarty.capture.d3AdWordsCode}]
[{/block}]
[{/if}]
[{/strip}]

View File

@ -0,0 +1,8 @@
[{strip}]
[{if $oD3GASettings->getValue('blD3GASetCampaignTrack') && $oD3GASettings->getValue('sD3GACampaignCode') &&
(false == $oD3GASettings->getValue('blD3GASetCampaignOnThankyouOnly') || $oViewConf->getActiveClassName() == 'thankyou')}]
[{$oD3GASettings->getValue('sD3GACampaignCode')}]
[{/if}]
[{/strip}]

View File

@ -0,0 +1,37 @@
[{if $oD3GASettings->getValue('blD3GASetRemarketing') &&
$oD3GASettings->getValue('sD3GARemarketingConversionId')}]
[{block name="UniversalAdwordsRemarketing"}]
[{*-- Google Code f<EFBFBD>r ein Remarketing-Tag --
--------------------------------------------------
Remarketing-Tags d<>rfen nicht mit personenbezogenen Daten verkn<6B>pft oder auf Seiten platziert werden,
die sensiblen Kategorien angeh<65>ren. Weitere Informationen und Anleitungen zur Einrichtung des Tags
erhalten Sie unter: http://google.com/ads/remarketingsetup
---------------------------------------------------*}]
<script type="text/javascript">
var google_tag_params = {
ecomm_prodid: [{$sD3GARemarketingProdId}],
ecomm_pagetype: '[{$sD3GARemarketingPageType}]',
ecomm_totalvalue: [{$sD3GARemarketingPrice}]
};
</script>
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = [{$oD3GASettings->getValue('sD3GARemarketingConversionId')}];
[{if $oD3GASettings->getValue('sD3GARemarketingConversionLabel')}]
var google_conversion_label = "[{$oD3GASettings->getValue('sD3GARemarketingConversionLabel')}]";
[{/if}]
var google_custom_params = window.google_tag_params;
var google_remarketing_only = true;
/* ]]> */
</script>
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/[{$oD3GASettings->getValue('sD3GARemarketingConversionId')}]/?value=0[{if $oD3GASettings->getValue('sD3GARemarketingConversionLabel')}]&amp;label=[{$oD3GASettings->getValue('sD3GARemarketingConversionLabel')}][{/if}]&amp;guid=ON&amp;script=0"/>
</div>
</noscript>
[{/block}]
[{/if}]

View File

@ -0,0 +1,87 @@
[{block name="UniversalTrustedStoreBadge"}]
[{* https://support.google.com/trustedstoresmerchant/answer/6063080?hl=de&ref_topic=6063044 *}]
<!-- BEGIN: Google Certified Shops -->
<script type="text/javascript">
var gts = gts || [];
[{if $oD3GASettings->getValue('sD3GATSShoppingActive')}]
gts.push(["id", "[{$oD3GASettings->getValue('sD3GATSId')}]"]);
gts.push(["badge_position", "BOTTOM_RIGHT"]);
gts.push(["locale", "[{$sD3CurrentGTSLang}]"]);
[{if $sD3GATSProdId}]
gts.push(["google_base_offer_id", "[{$sD3GATSProdId}]"]);
[{/if}]
gts.push(["google_base_subaccount_id", "[{$oD3GASettings->getValue('sD3GATSShoppingAccountId')}]"]);
gts.push(["google_base_country", "[{$oD3GASettings->getValue('sD3GATSShoppingCountry')|upper}]"]);
gts.push(["google_base_language", "[{$oD3GASettings->getValue('sD3GATSShoppingLanguage')|lower}]"]);
[{/if}]
(function() {
var gts = document.createElement("script");
gts.type = "text/javascript";
gts.async = true;
gts.src = "https://www.googlecommerce.com/trustedstores/api/js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(gts, s);
})();
</script>
<!-- END: Google Certified Shops -->
[{/block}]
[{if $oViewConf->getActiveClassName() == 'thankyou'}]
[{block name="UniversalTrustedStoreOrderInfo"}]
[{* https://support.google.com/trustedstoresmerchant/answer/6063087?hl=de&ref_topic=6063044 *}]
[{assign var="oOrder" value=$oView->getOrder()}]
[{assign var="oOrderCurrency" value=$oOrder->getOrderCurrency()}]
[{assign var="oUser" value=$oOrder->getOrderUser()}]
[{assign var="oUserCountry" value=$oView->d3GAGetUserCountry()}]
[{if $oD3GASettings->getValue('blD3GAUseNetto')}]
[{assign var="sTotal" value=$oOrder->getOrderNetSum()}] [{* // total - required - has to be gross sum *}]
[{else}]
[{assign var="sTotal" value=$oOrder->getTotalOrderSum()}] [{* // total - required *}]
[{/if}]
<!-- START Google Trusted Stores Order -->
<div id="gts-order" style="display:none;" translate="no">
<!-- start order and merchant information -->
<span id="gts-o-id">[{$oOrder->getFieldData('oxordernr')}]</span>
<span id="gts-o-domain">[{$oxcmp_shop->oxshops__oxurl->value}]</span>
<span id="gts-o-email">[{$oUser->getFieldData('oxusername')}]</span>
<span id="gts-o-country">[{$oUserCountry->getFieldData('oxisoalpha2')}]</span>
<span id="gts-o-currency">[{$oOrderCurrency->name}]</span>
<span id="gts-o-total">[{$sTotal|string_format:"%.2f"}]</span>
<span id="gts-o-discounts">-[{$oOrder->getFieldData('oxdiscount')|string_format:"%.2f"}]</span>
<span id="gts-o-shipping-total">[{$oOrder->getFieldData('oxdelcost')|string_format:"%.2f"}]</span>
<span id="gts-o-tax-total">[{$oOrder->d3GetTaxTotal()}]</span>
<span id="gts-o-est-delivery-date">[{$oView->d3GAgetEstimatedDeliveryDate()|date_format:"%Y-%m-%d"}]</span>
<span id="gts-o-est-ship-date">[{$oView->d3GAgetEstimatedShippingDate()|date_format:"%Y-%m-%d"}]</span>
<span id="gts-o-has-preorder">[{$oView->d3GAhasBackorderPreorder()}]</span>
<span id="gts-o-has-digital">[{$oView->d3GAhasDigitalGoods()}]</span>
<!-- end order and merchant information -->
<!-- start repeated item specific information -->
[{foreach from=$order->getOrderArticles() item=oOrderArticle}]
[{if $oD3GASettings->getValue('blD3GAUseNetto')}]
[{assign var="sPrice" value=$oOrderArticle->oxorderarticles__oxnprice->value}]
[{else}]
[{assign var="sPrice" value=$oOrderArticle->oxorderarticles__oxprice->value}]
[{/if}]
<span class="gts-item">
<span class="gts-i-name">[{$oOrderArticle->oxorderarticles__oxtitle->value|escape:"quotes"}]</span>
<span class="gts-i-price">[{$sPrice|string_format:"%.2f"}]</span>
<span class="gts-i-quantity">[{$oOrderArticle->getFieldData('oxamount')}]</span>
[{if $oD3GASettings->getValue('sD3GATSShoppingActive')}]
<span class="gts-i-prodsearch-id">[{$oView->d3GAgetProductId($oOrderArticle)}]</span>
<span class="gts-i-prodsearch-store-id">[{$oD3GASettings->getValue('sD3GATSShoppingAccountId')}]</span>
<span class="gts-i-prodsearch-country">[{$oD3GASettings->getValue('sD3GATSShoppingCountry')|upper}]</span>
<span class="gts-i-prodsearch-language">[{$oD3GASettings->getValue('sD3GATSShoppingLanguage')|lower}]</span>
[{/if}]
</span>
[{/foreach}]
<!-- end repeated item specific informations -->
</div>
<!-- END Google Trusted Stores Order -->
[{/block}]
[{/if}]

View File

@ -1,12 +0,0 @@
---
title: Editionen
---
Das Modul **{$modulename}** erhalten Sie in verschiedenen Editionen mit unterschiedlichem Funktionsumfang.
Definition der Unterschiede:
| Free-Edition | Standard-Edition | Premium-Edition |
|:-------------:|:-----------------:|:-----------------:|
| 1 | 2 | 3 |

View File

@ -1,10 +0,0 @@
---
title: Installation / Update / Deinstallation
---
* [Anforderungen](installation/010_Anforderungen/010_Systemanforderungen.md)
* [Neuinstallation](installation/020_Neuinstallation/005_Vorbereitung.md)
* [Update](installation/030_Update/005_Updatedefinition.md)
* [Deinstallation](installation/060_Deinstallation/010_Modulerweiterungen_deaktivieren_und_entfernen.md)
Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unter [Hilfe und Support](support/010_Hilfe-und-Support.md) genannten Kontaktdaten Bescheid.

View File

@ -1,28 +0,0 @@
---
title: Systemanforderungen
---
* PHP Version
* 5.6.x bis 7.4.x
* PHP Decoder
* installierter ionCube Loader
* Shopeditionen
* OXID eShop Community Edition (CE)
* OXID eShop Professional Edition (PE)
* OXID eShop Enterprise Edition (EE)
* OXID eShop B2B Edition
* Shopversionen
* OXID eShop in Compilation Version
* 6.0.x
* 6.1.x
* 6.2.x
* Themes
* flow
* wave
* D3 Modul-Connector ([kostenfrei bei D3 erhältlich](https://www.oxidmodule.com/connector/)) ab Version 5.3.0.0
* Installation via [Composer](https://getcomposer.org)
* mindestens ein freier Cronjob zur automatischen Ausführung der angelegten Aufgaben
Beachten Sie, dass die Ihnen vorliegende Modulversion entsprechend für Ihre genutzte PHP-Version sowie dem auf Ihrem Server vorhandenen Decoder (**ionCube Loader**) kompatibel ist. Im Zweifelsfall kontaktieren Sie uns und nennen den für Ihren Shop genutzten Decoder und die PHP-Version.
Kontrollieren Sie bitte auch, ob diese Modulversion für die von Ihnen eingesetzte Shopedition (Professional Edition (PE) oder Enterprise Edition (EE)) ausgelegt ist.

View File

@ -1,5 +0,0 @@
---
title: Kompatibilität mit anderen Modulen
---
Das Modul **{$modulename}** integriert sich auch in die Erweiterung "Visual CMS" von OXID eSales AG & digidesk - media solutions, sofern diese im Shop installiert wurde. Diese Integration wurde für die Version 3.0.0 des "Visual CMS"-Moduls entwickelt.

View File

@ -1,8 +0,0 @@
---
title: beiliegende Bibliotheken
---
Dem Modul liegt eine Kopie der **XYZ**-Bibliothek bei. Bitte beachten Sie auch deren folgende Lizenzhinweise:
- Lizenzhinweis #1
- Lizenzhinweis #2

View File

@ -1,9 +0,0 @@
---
title: Vorbereitungen
---
Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version.
Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen. Existiert der Punkt [ (D3) Module ] -> [ Modul-Connector ], können Sie die installierte Version unter [ Bibliotheksverwaltung ] ablesen. Fehlt dieser Eintrag, installieren Sie den kostenfreien Connector.
Informationen zu dessen Installation finden Sie auf unserer [Homepage](https://www.oxidmodule.com/Connector/).
Klicken Sie auf den Reiter [ Downloads ] und wählen dort das für Ihre Installation passende Paket.

View File

@ -1,7 +0,0 @@
---
title: Vorbereitungen
---
Installieren Sie bitte zuerst unseren Modul-Connector in der erforderlichen Version. Ob dies evtl. schon geschehen ist, können Sie im Adminbereich Ihres Shops prüfen.
Existiert der Punkt [ (D3) Module ] -> [ Modul-Connector ], können Sie die installierte Version unter [ Bibliotheksverwaltung ] ablesen.
Fehlt dieser Eintrag, installieren Sie den Modul-Connector bitte vorab. Hinweise zu dessen Installation finden Sie in der [Modul-Connector Dokumentation](https://docs.oxidmodule.com/Modul_Connector/).

View File

@ -1,23 +0,0 @@
---
title: Patch zur Installation hinzufügen
---
### **auf der Kommandozeile**
Für das Modul **{$modulename}** sind Anpassungen an den originalen Dateien des Shops nötig. Die Änderungen werden automatisiert als Patches eingespielt. Um diese Patches integrieren zu können, ist es nötig, in der `composer.json`-Datei des Shopprojektes das Anwenden der Patches zu erlauben.
Führen Sie in der Konsole im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) diesen Befehl aus:
```bash
php composer config extra.enable-patching true
```
> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#config).
Im weiteren Ablauf der Installation werden Sie gefragt, ob die Dateien der folgenden Pakete überschrieben werden sollen:
* oxid-esales/...
Bestätigen Sie diese Frage, um den mitgelieferten Patch anzuwenden.
> [i] Beachten Sie, dass darin durchgeführte manuelle Änderungen überschrieben werden.

View File

@ -1,15 +0,0 @@
---
title: Modul zur Installation hinzufügen
---
### **auf der Kommandozeile**
Führen Sie in der Konsole im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) diesen Befehl aus, um das Modul **{$modulename}** zur Installation hinzuzufügen:
```bash
php composer require {$composerident}:^{$moduleversion} --update-no-dev
```
> [!] Achten Sie darauf, dass Composer für die Installation die selbe PHP-Version verwendet, in der auch Ihr Shop ausgeführt wird. Sie erhalten sonst möglicherweise unpassende Modulpakete.
> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).

View File

@ -1,15 +0,0 @@
---
title: Verwendung eigener Themes
---
Das Modul ist für die Verwendung mit den folgenden OXID-Themes vorbereitet:
* Wave
* Flow
* Azure
Verwenden Sie in Ihrem Shop ein angepasstes Verzeichnis für Ihre Templates (neues Theme oder CustomTheme), kopieren Sie die Templates und / oder die CSS-Dateien in die neuen Ordner.
Ähnelt Ihr neues Theme technisch einem der OXID-Originale, können Sie dieses darauf umleiten. Childs von originalen OXID- Themes benötigen keine Umleitung.
Weitere Informationen zur Umleitung finden Sie in unserer [FAQ](https://faq.d3data.de/oxid-eshop/module-oxid-eshop/anpassungen/template-bloecke-dem-eigenen-theme-zuordnen/).

View File

@ -1,5 +0,0 @@
---
title: Providerspezifische Installation
---
Manche Provider erfordern besondere Einstellungen für installierte Module. Treffen Sie bei der Installation auf spezielle Anforderungen, zu denen Sie Unterstützung benötigen, kontaktieren Sie uns bitte für weiteren Support.

View File

@ -1,19 +0,0 @@
---
title: Modul im Shop aktivieren
---
### **im Adminbereich**
Aktivieren Sie das Modul über den Shopadmin unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Aktivieren ].
### **oder auf der Kommandozeile**
Alternativ können Sie die Modulaktivierung auch auf der Kommandozeile (CLI) im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) durchführen.
```bash
./vendor/bin/oe-console oe:module:activate {$metadataident}
```
> [!] **Enterprise Edition**: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls aktiviert werden muss, um dessen Funktion dort auch zu nutzen.
> [i] **Enterprise Edition**: Zur Aktivierung in einem bestimmten Shopmandanten verwenden Sie das `--shop-id`-Argument (`...oe-console --shop-id 1 oe:module...`)

View File

@ -1,21 +0,0 @@
---
title: Shopanpassungen installieren
---
### **im Adminbereich**
Direkt nach der Modulaktivierung startet der Assistent, der Sie durch die Shopanpassung führt. Darin können Sie verschiedene Optionen der Installation wählen.
Den Installationsassistenten finden Sie auch unter den Menüpunkten [ Admin ] -> [ (D3) Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ].
Bei tiefgreifenden Änderungen an Ihrem Shop (z.B. Hinzufügen weiterer Sprachen oder Mandanten) rufen Sie den Installationsassistenten bitte erneut auf, um dann eventuell notwendige Nacharbeiten für das Modul ausführen zu lassen.
Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
### **oder auf der Kommandozeile**
Der Installationsassistent steht Ihnen ebenfalls auf der Kommandozeile (CLI) zur Verfügung. Führen Sie diesen Befehl im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) aus:
```bash
./vendor/bin/d3modules_install
```

View File

@ -1,21 +0,0 @@
---
title: TMP-Ordner leeren
---
### **im Adminbereich**
Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ (D3) Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
### **oder auf der Kommandozeile**
Alle TMP-leeren-Aktionen stehen Ihnen ebenfalls auf der Kommandozeile (CLI) zur Verfügung. Führen Sie diesen Befehl im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) aus:
```bash
./vendor/bin/d3cleartmp
```
> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
> [i] Beim Kommandozeilenaufruf werden Ihnen weitere Optionen gezeigt, mit denen Sie die Aktion gezielt steuern können.

View File

@ -1,11 +0,0 @@
---
title: Lizenzschlüssel eintragen
---
### **im Adminbereich**
Das Modul verwendet Lizenzschlüssel, um die Lizenzverwaltung für Sie und auch für uns einfacher zu gestalten. Hierbei haben Sie je nach Modul die Wahl zwischen einer kostenfreien Testlizenz und einer Lizenz für den Einsatz im Livebetrieb.
Speziell **{$modulename}** wird in unterschiedlichen (teilweise kostenfreien) Editionen für den Livebetrieb angeboten. Besuchen Sie unseren [Moduleshop](https://www.oxidmodule.com/), um mehr darüber zu erfahren.
Rufen Sie zum Anfordern des Lizenzschlüssels die Modulverwaltung im Adminbereich unter [ (D3) Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] auf. Klappen Sie den Eintrag des jeweiligen Moduls aus. Sofern erforderlich, können Sie hier den Lizenzassistenten starten, der schnell und einfach ihr Modul aktiviert.

View File

@ -1,13 +0,0 @@
---
title: Cronjob einrichten
---
Legen Sie den Cronjob für die automatische Bearbeitung der eingerichteten Aufträge an. Die für die Anlage benötigten Daten finden Sie im Adminbereich des Moduls unter [ (D3) Module ] -> [ {$menutitle} ] -> [ Einstellungen ] -> [ Grundeinstellungen ]. Weitere Informationen zum Anlegen von Cronjobs finden Sie in unserer [FAQ](https://faq.d3data.de/technik/wie-werden-cronjobs-angelegt/).
> [!!] Sie sollten unbedingt den Aufruf von `.sh`-Dateien via Browser verhindern, so dass kein Unbefugter die Datei von außen aufrufen kann. Dazu können Sie z.B. die `.htaccess`-Datei des Shops um folgende Zeilen erweitern:
```htaccess
<Files *.sh>
Require all denied
</Files>
```

View File

@ -1,7 +0,0 @@
---
title: Updatefähigkeit
---
Bei individuellen Änderungen von Moduldateien empfehlen wir, jeweils die Überladungsmöglichkeiten des Shops dafür zu verwenden. So brauchen Sie die originalen Moduldateien nicht verändern und erhalten sich so die Updatefähigkeit des Shops und des Moduls. Beachten Sie, dass Moduldateien bei Updateinstallationen überschrieben werden.
Weitere Informationen zu den Überladungsmöglichkeiten verschiedener Dateien finden Sie in unserer [FAQ](https://faq.d3data.de/category/oxid-eshop/module-oxid-eshop/anpassungen/).

View File

@ -1,16 +0,0 @@
---
Title: Schnellstart per Composer
---
## Schnellstart per Composer
### **auf der Kommandozeile**
```bash
php composer require {$composerident}:^{$moduleversion} --update-no-dev
./vendor/bin/oe-console oe:module:activate {$metadataident}
./vendor/bin/d3modules_install
./vendor/bin/d3cleartmp
```
Detailliertere Angaben zur Installation entnehmen Sie bitte den folgenden Seiten.

View File

@ -1,8 +0,0 @@
---
title: Wann kann ein Update ausgeführt werden?
---
Die Updateanweisungen können verwendet werden, wenn dieses Modul schon früher mit Hilfe von Composer installiert wurde.
Wurde die Installation bisher noch nicht durchgeführt oder die Installation wurde **nicht** über Composer
durchgeführt (weil das Modul dies z.B. früher nicht unterstützte), verwenden Sie bitte die Beschreibung unter [Neuinstallation](../020_Neuinstallation/_index.md).

View File

@ -1,19 +0,0 @@
---
title: Modul deaktivieren
---
### **im Adminbereich**
Deaktivieren Sie das Modul unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Deaktivieren ].
### **oder auf der Kommandozeile**
Alternativ können Sie die Moduldeaktivierung auch über die Kommandozeile (CLI) im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) durchführen.
```bash
./vendor/bin/oe-console oe:module:deactivate {$metadataident}
```
> [!] **Enterprise Edition**: Achten Sie darauf, dass das Modul in allen weiteren Shops (Mall) ebenfalls deaktiviert werden muss.
> [i] **Enterprise Edition**: Zur Deaktivierung in einem bestimmten Shopmandanten verwenden Sie das `--shop-id`-Argument (`...oe-console --shop-id 1 oe:module...`)

View File

@ -1,23 +0,0 @@
---
title: Patch zur Installation hinzufügen
---
### **auf der Kommandozeile**
Für das Modul **{$modulename}** sind Anpassungen an den originalen Dateien des Shops nötig. Die Änderungen werden automatisiert als Patches eingespielt. Um diese Patches integrieren zu können, ist es nötig, in der `composer.json`-Datei des Shopprojektes das Anwenden der Patches zu erlauben.
Führen Sie in der Konsole im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) diesen Befehl aus:
```bash
php composer config extra.enable-patching true
```
> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#config).
Im weiteren Ablauf der Installation werden Sie gefragt, ob die Dateien der folgenden Pakete überschrieben werden sollen:
* oxid-esales/...
Bestätigen Sie diese Frage, um den mitgelieferten Patch anzuwenden.
> [i] Beachten Sie, dass darin durchgeführte manuelle Änderungen überschrieben werden.

View File

@ -1,18 +0,0 @@
---
title: Dateien erneuern
---
### **auf der Kommandozeile**
Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres
Shops (oberhalb des `source`- und `vendor`-Verzeichnisses). Führen Sie dort diesen Befehl aus:
```bash
php composer require {$composerident}:^{$moduleversion} --update-no-dev
```
Im weiteren Ablauf werden Sie gefragt, ob die Moduldateien überschrieben werden sollen. Bestätigen Sie dies für den Eintrag `{$composerident}`.
> [!] Achten Sie darauf, dass Composer für die Installation die selbe PHP-Version verwendet, in der auch Ihr Shop ausgeführt wird. Sie erhalten sonst möglicherweise unpassende Modulpakete.
> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#require).

View File

@ -1,5 +0,0 @@
---
title: Providerspezifische Installation
---
Manche Provider erfordern besondere Einstellungen für installierte Module. Treffen Sie bei der Installation auf spezielle Anforderungen, zu denen Sie Unterstützung benötigen, kontaktieren Sie uns bitte für weiteren Support.

View File

@ -1,19 +0,0 @@
---
title: Modulinformationen aktualisieren
---
### **im Adminbereich**
Wechseln Sie im Adminbereich zu [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Aktivieren ].
### **oder auf der Kommandozeile**
Alternativ können Sie die Modulaktivierung auch über die Kommandozeile (CLI) im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) durchführen.
```bash
./vendor/bin/oe-console oe:module:activate {$metadataident}
```
> [!] **Enterprise Edition**: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls aktiviert werden muss, um dessen Funktion dort auch zu nutzen.
> [i] **Enterprise Edition**: Zur Aktivierung in einem bestimmten Shopmandanten verwenden Sie das `--shop-id`-Argument (`...oe-console --shop-id 1 oe:module...`)

View File

@ -1,21 +0,0 @@
---
title: Shopanpassungen installieren
---
### **im Adminbereich**
Ob Shopanpassungen notwendig sind, ist von der Versionsänderung des Moduls abhängig.
Möglicherweise sehen Sie nach dem Neuaktivieren des Moduls den Installationsassistent, der Sie durch die Änderungen führt. Folgen Sie dann den einzelnen Schritten. Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
Wird der Assistent nicht gezeigt (Sie sehen wieder die Modulübersicht), waren keine Anpassungen am Shop notwendig.
Ob erforderliche Updates ausgeführt werden sollen, können Sie jederzeit im Adminbereich unter [ (D3) Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ] prüfen.
### **oder auf der Kommandozeile**
Der Installationsassistent steht Ihnen ebenfalls auf der Kommandozeile (CLI) zur Verfügung. Führen Sie diesen Befehl im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) aus:
```bash
./vendor/bin/d3modules_install
```

View File

@ -1,21 +0,0 @@
---
title: TMP-Ordner leeren
---
### **im Adminbereich**
Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ (D3) Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
### **oder auf der Kommandozeile**
Alle TMP-leeren-Aktionen stehen Ihnen ebenfalls auf der Kommandozeile (CLI) zur Verfügung. Führen Sie diesen Befehl im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) aus:
```bash
./vendor/bin/d3cleartmp
```
> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
> [i] Beim Kommandozeilenaufruf werden Ihnen weitere Optionen gezeigt, mit denen Sie die Aktion gezielt steuern können.

View File

@ -1,7 +0,0 @@
---
title: Lizenzschlüssel aktualisieren
---
### **im Adminbereich**
Wird für die neue Modulversion ein aktualisierter Lizenzschlüssel benötigt, tragen Sie diesen im Adminbereich unter [ (D3) Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] ein. Klappen Sie dazu den Eintrag des jeweiligen Moduls aus und starten den Lizenzassistent.

View File

@ -1,5 +0,0 @@
---
title: Erweiterungen anpassen
---
Haben Sie für dieses Modul eigene Erweiterung entwickelt, gleichen Sie dies bitte mit der neuen Fassung des Moduls ab.

View File

@ -1,29 +0,0 @@
---
title: Installationsprüfung
---
Um die erfolgreiche Installation zu prüfen, können Sie die folgende(n) Checkliste(n) verwenden:
## Einstellungsunabhängige Prüfungen
### Backend
* Modul ist unter [ Erweiterungen ] -> [ Module ] aktiv geschaltet
* Modul ist unter [ (D3) Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] aktiv geschaltet
* Modul zeigt unter [ (D3) Module ] -> [ {$menutitle} ] einen eigenen Bereich für Einstellungen
* Modul zeigt unter [ Artikel verwalten ] -> [ Artikel ] -> [ Erweitert ] die Einstellung [ Wichtigkeit des Artikels im Sortiment ]
* ... um weitere Punkte ergänzen
### Frontend
* Punkte einfügen oder Absatz entfernen
## Einstellungsabhängige Prüfungen
### Backend
* Punkte einfügen oder Absatz entfernen
### Frontend
* Punkte einfügen oder Absatz entfernen

View File

@ -1,7 +0,0 @@
---
title: Schnellstart
---
Das Modul **{$modulename}** bringt einen umfangreichen Adminbereich mit, in dem Sie die Konfigurationseinstellungen des Moduls setzen können. Über das Menü [ (D3) Module ] -> [{$menutitle}] -> [Einstellungen] erreichen Sie die Einstellseiten. Arbeiten Sie idealerweise die Optionen einmal durch. Hinweise zu den einzelnen Einstellungen finden Sie in dem dahinter stehenden Fragezeichenfeld. Durch einen Klick darauf öffnet sich der Hinweistext.
Die meisten Optionen sind zusätzlich im [Handbuch zum Modul](../manual/000_Handbuch.md) umfangreicher beschrieben.

View File

@ -1,5 +0,0 @@
---
title: Modulerweiterungen deaktivieren und entfernen
---
Deaktivieren Sie alle vorhandenen Erweiterungen, die auf dem Modul **{$modulename}** aufbauen und löschen bitte alle Dateien dieser Erweiterungen. Entfernen Sie ebenfalls alle individuellen Templateanpassungen für dieses Modul.

View File

@ -1,19 +0,0 @@
---
title: Modul deaktivieren
---
### **im Adminbereich**
Deaktivieren Sie das Modul unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von [ {$menutitle} ] auf den Button [ Deaktivieren ].
### **oder auf der Kommandozeile**
Alternativ können Sie die Moduldeaktivierung auch über die Kommandozeile (CLI) im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) durchführen.
```bash
./vendor/bin/oe-console oe:module:deactivate {$metadataident}
```
> [!] **Enterprise Edition**: Achten Sie darauf, dass das Modul in allen weiteren Shops (Mall) ebenfalls deaktiviert werden muss.
> [i] **Enterprise Edition**: Zur Deaktivierung in einem bestimmten Shopmandanten verwenden Sie das `--shop-id`-Argument (`...oe-console --shop-id 1 oe:module...`)

View File

@ -1,13 +0,0 @@
---
title: Modul aus der Installation entfernen
---
### **auf der Kommandozeile**
Starten Sie die Konsole Ihres Webservers und wechseln in das Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses). Führen Sie Sie dort diesen Befehl aus:
```Bash
php composer remove {$composerident} --no-update
```
> [i] Benötigt Ihre Installation einen anderen Aufruf von Composer, ändern Sie den Befehl bitte entsprechend ab. Für weitere Optionen dieses Befehls lesen Sie bitte die [Dokumentation von Composer](https://getcomposer.org/doc/03-cli.md#remove).

View File

@ -1,9 +0,0 @@
---
title: Dateien löschen
---
Löschen Sie den Ordner `{$modulefolder}` und seine enthaltenen Elemente aus dem Verzeichnis `source/modules/d3` Ihres Shops.
Bestätigen Sie anschließend im Shopadmin unter [ Erweiterungen ] -> [ Module ] -> [ Installierte Shop-Module ] die Nachricht:
> Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist.
> Möchten Sie alle Modulinformationen einschließlich Konfigurationseinstellungen und Blockinformationen für Templates löschen?

View File

@ -1,31 +0,0 @@
---
title: Datenbank bereinigen
---
Das Modul legt Informationen in der Datenbank ab. Sofern diese Daten nicht mehr benötigt werden, können diese gelöscht werden.
> [!] Legen Sie sich vorab bitte unbedingt eine Sicherung an, um die Daten im Zweifelsfall wiederherstellen zu können.
Für das Modul **{$modulename}** sind dies die folgende Tabellen und Felder:
* die komplette Tabelle `tablename`
* sofern vorhanden: `tablename_setX` *)
und diese Felder in bestehenden Tabellen:
* in Tabelle `oxorder`:
* das Feld `fieldname1`
* das Feld `fieldname2`
* in Tabelle `oxuser`:
* das Feld `fieldname3`
* das Feld `fieldname4`
sowie diese Einträge in bestehenden Tabellen:
* in Tabelle `d3_cfg_mod`:
* den Eintrag `oxmodid = "{$modcfgident}"` **)
*) `_setX` ist eine Tabellenliste, die mit `_set1` beginnen und shopabhängig auch Tabellen mit höheren Nummerierungen enthalten kann (z.B. `_set2`, `_set3`, …).
Zu einigen dieser Tabellen wurden die Config-Einträge `aMultiLangTables` (bei Enterprise Edition auch `aMultiShopTables`) um entsprechende Einträge ergänzt). Bereinigen Sie diese ebenfalls.
**) Diesen Eintrag gibt es ggf. für jeden Subshop. Entfernen Sie diesen nur für die Mandanten, in denen das Modul **nicht** mehr installiert ist.

View File

@ -1,21 +0,0 @@
---
title: TMP-Ordner leeren
---
### **im Adminbereich**
Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ (D3) Module ] -> [ Modul-Connector ] -> [ TMP leeren ]. Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
### **oder auf der Kommandozeile**
Alle TMP-leeren-Aktionen stehen Ihnen ebenfalls auf der Kommandozeile (CLI) zur Verfügung. Führen Sie diesen Befehl im Hauptverzeichnis Ihres Shops (oberhalb des `source`- und `vendor`-Verzeichnisses) aus:
```bash
./vendor/bin/d3cleartmp
```
> [i] Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der Datenbank-Viewtabellen, führen Sie diese bitte aus.
> [i] Beim Kommandozeilenaufruf werden Ihnen weitere Optionen gezeigt, mit denen Sie die Aktion gezielt steuern können.

View File

@ -1 +0,0 @@
It starts here.

View File

@ -1,4 +0,0 @@
---
title: Benutzerhandbuch
---

View File

@ -1,18 +0,0 @@
---
title: optische Anpassungen
---
Die Modulausgaben können durch eigene CSS-Styles angepasst werden. Um die Updatefähigkeit des Moduls zu
erhalten, übernehmen Sie die neuen Stylesheets bitte in modulunabhängige Dateien.
Die mitgelieferten Assets (CSS, JavaScripts) werden von uns über einen vorkonfigurierten Kompilierungstask
erstellt. Dieser kann via [Grunt](https://gruntjs.com/) ausgeführt werden. Möchten Sie eigene oder
angepasste Inhalte daraus kompilieren lassen, installieren Sie das Modul bitte mit Composer und der
`--prefer-source`-Option. Dann stehen Ihnen die Quelldateien im Ordner `src/build` zur Verfügung.
Diese können direkt aufgerufen werden, um eventuelle Anpassungen im zu Grunde liegenden Theme zu
integrieren. Alternativ können Sie die Sources auch in eigene Kompilierungsprozesse einbinden,
um projektspezifische Assets zu erstellen.
Details zur Verwendung des Taskrunners und der Quelldateien entnehmen Sie bitte der `README.md` im
oben erwähnten Build-Ordner.

151
setup+doku/README.md Normal file
View File

@ -0,0 +1,151 @@
# D³ Google-Services
Dieses Modul bietet eine Schritt-für-Schritt Konfiguration von Individualartikeln an. Der Kunde wählt in jedem
Schritt die von ihm gewünschte Option, die mit Bildern, Beschreibungstexten und ggf. Aufpreisinformationen
dargestellt werden können. Weiterhin gibt es optionale Freitexte, in denen z.B. Abmessungen etc. hinterlegt werden können.
## Voraussetzungen
* PHP Version
* 7.0.x bis PHP 7.2.x
* Shopversionen / -editionen
* OXID eShop Community Edition (CE), Professional Edition (PE) oder Enterprise Edition (EE) in Compilation Version
* 6.0.x
* 6.1.x
* [D³ Modul-Connector](https://www.oxidmodule.com/Modul-Connector/Modul-Connector-fuer-Oxid-CE-PE-EE.html)
* Version 5.1.1.x
### Anforderungsprüfung
Im Ordner `setup+doku` finden Sie die Datei `d3precheck.php`. Mit dieser können Sie die Mindestanforderungen auf Ihrem
Server direkt prüfen. Kopieren Sie die Datei unverändert in das `source`-Verzeichnis Ihres
installierten OXID-Shops. Rufen Sie nun über Ihren Browser die folgende Adresse auf:
[http://www.ihreadresse.de/d3precheck.php](http://www.ihreadresse.de/d3precheck.php)
Ihnen werden nun Details und Ergebnisse zur Anforderungsprüfung angezeigt.
> Wichtig! Löschen Sie diese Scripte mit Hilfe der in der Übersicht enthaltenen Funktion bitte unbedingt nach der Prüfung
wieder von Ihrem Server.
## Installation
### 1. Modul in Shop kopieren
Das erhaltene Installationspaket entpacken Sie bitte zuerst auf Ihrem Rechner. Darin finden Sie den Ordner `copy_this`.
Kopieren Sie dessen Inhalt inklusiv dessen Verzeichnisstruktur in den Stamm-Ordner Ihres Online-Shops.
Schon vorhandene Dateien überschreiben Sie bitte einfach.
> Wichtig! Achten Sie darauf, dass speziell die PHP-Dateien im Binär-Modus übertragen werden. Wie Sie diesen einstellen können, entnehmen Sie der Hilfe Ihrer FTP-Anwendung.
### 2. Modul im Shop aktivieren
Aktivieren Sie das Modul über den Shopadmin unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von
[ D³ Google Services Schnittstelle ] auf den Button [ Aktivieren ].
> Wichtig! **Enterprise Editon**: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls aktiviert werden muss,
um dessen Funktion dort auch zu nutzen.
Direkt nach der Modulaktivierung startet der Assistent, der Sie durch die Shopanpassung führt. Darin können Sie verschiedene
Optionen der Installation wählen.
Den Installationsassistenten finden Sie auch unter den Menüpunkten
[ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ].
Bei tiefgreifenden Änderungen an Ihrem Shop (z.B. Hinzufügen weiterer Sprachen oder Mandanten) rufen Sie den
Installationsassistenten bitte erneut auf, um dann eventuell notwendige Nacharbeiten für das Modul ausführen zu lassen.
Möchten Sie die Änderungen manuell installieren, können Sie sich über diesen Assistenten ebenfalls eine Checkliste erstellen.
### 3. TMP-Ordner leeren
Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ TMP leeren ].
Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
> Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der
Datenbank-Viewtabellen, führen Sie diese bitte aus.
## Update
### 1. Modul in Shop kopieren
Deaktivieren Sie das Modul über den Shopadmin unter [ Erweiterungen ] -> [ Module ]. Klicken Sie nach Auswahl von
[ D³ Google Services Schnittstelle ] auf den Button [ Dektivieren ].
> Wichtig! **Enterprise Editon**: Achten Sie darauf, dass das Modul in weiteren Shops (Mall) ebenfalls deaktiviert werden muss.
Das erhaltene Installationspaket entpacken Sie bitte zuerst auf Ihrem Rechner. Darin finden Sie den Ordner `copy_this`.
Kopieren Sie dessen Inhalt inklusiv dessen Verzeichnisstruktur in den Stamm-Ordner Ihres Online-Shops.
Schon vorhandene Dateien überschreiben Sie bitte einfach.
> Wichtig! Achten Sie darauf, dass speziell die PHP-Dateien im Binär-Modus übertragen werden. Wie Sie diesen einstellen können, entnehmen Sie der Hilfe Ihrer FTP-Anwendung.
### 2. Modul im Shop aktivieren
Ob Shopanpassungen notwendig sind, ist von der Versionsänderung des Moduls abhängig.
Möglicherweise sehen Sie nach dem Neuaktivieren des Moduls den Installationsassistent, der Sie durch die Änderungen
führt. Folgen Sie dann den einzelnen Schritten. Möchten Sie die Änderungen manuell installieren, können Sie sich
über diesen Assistenten ebenfalls eine Checkliste erstellen.
Wird der Assistent nicht gezeigt (Sie sehen wieder die Modulübersicht), waren keine Anpassungen am Shop notwendig.
Ob erforderliche Updates ausgeführt werden sollen, können Sie jederzeit im Adminbereich unter
[ D3 Module ] -> [ Modul-Connector ] -> [ Modulverwaltung ] -> [ Modulinstallation ] prüfen.
### 3. TMP-Ordner leeren
Leeren Sie das Verzeichnis `tmp` über [ Admin ] -> [ D3 Module ] -> [ Modul-Connector ] -> [ TMP leeren ].
Markieren Sie [ komplett leeren ] und klicken auf [ TMP leeren ].
Sofern die Views nicht automatisch aktualisiert werden, führen Sie dies noch durch.
> Erfordert Ihre Installation eine andere Vorgehensweise zum Leeren des Caches oder zum Aktualisieren der
Datenbank-Viewtabellen, führen Sie diese bitte aus.
## Hilfe und Support
Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unten
genannten Kontaktdaten Bescheid.
Haben Sie Fragen oder Unklarheiten in Verbindung mit diesem Modul oder dessen Installation, stehen Ihnen Hilfetexte in
unserer [Modul-FAQ](http://faq.oxidmodule.com/) zur Verfügung. Finden Sie darin die benötigten Antworten nicht, kontaktieren
Sie uns bitte unter den folgenden Möglichkeiten:
1. per E-Mail: <support@shopmodule.com> oder
2. über das Kontaktformular auf [Oxidmodule.com](https://www.oxidmodule.com/) oder
3. per Telefon: (+49) 37 21 / 26 80 90 zu unseren Bürozeiten
Geben Sie bitte an, wo und wie wir gegebenenfalls vorhandene Schwierigkeiten nachvollziehen können. Sind Ihre Fragen
shopspezifisch, benötigen wir möglicherweise Zugangsdaten zum betreffenden Shop.
Oxid-Shop spüezifische Informationen für die Einrichtung des Analytics-Kontos
=============================================================================
Folgend nun einige Informationen über Shop-Spezifische Informationen, um einige der Features von den Google Diensten besser einsetzen zu können.
"Standardseite"
------------------------
Die Startseite des Shops ist über folgende URLs Aufrufbar:
- www.meine-website.de
- www.meine-website.de/index.php
- www.meine-website.de/startseite/
"Zielvorhaben"
--------------
Bestellabschluss: Bei Abschluss einer Bestellung wird der Shop mit der URI: `/index.php?cl=thankyou` aufgerufen.
Für das Einrichten eines Trichters können folgende Informationen genutzt werden:
| Seite | Teil der URL
| ----- | ------------
| Warenkorb | /warenkorb/
| Bezahlung/Versand | /index.php?cl=payment
| Bestellübersicht | /index.php?cl=order
| Thankyou | /index.php?cl=thankyou
"Suchparameter"
---------------
Bei Nutzung der shopinternen Suche, kommt `searchparam` als Suchparameter zum Einsatz.

125
setup+doku/changelog.txt Normal file
View File

@ -0,0 +1,125 @@
=> 4.0.0.1
- "weiße" Thankyou-Seite behoben
- 7740: ecomm_totalvalue: [{$sD3GARemarketingPrice}] - als Standardewrt wird nun 0 übergeben, damit ecomm_totalvalue nicht leer bleibt und dadurch Syntaxfehler verursacht
- 7832: fehlende Angabe der Währung
=> 4.0.0.0
- Oxid V6 Release
- 6419: Korrektur der Benamung der Eingabefelder für Remarketing
=> 3.4.0.0
- Remarketing (via Analytics) eingefügt
- Remarketing-Liste für Startseite eingefügt
- Template-Blöcke eingefügt
- Titel der Konfigurationsseiten angepasst
- Staffelpreisübergaben korrigiert (#3679)
- Steuerberechnung korrigiert
- Scriptsyntax angepasst
=> 3.4.0.1
- #5078: ecomm_totalvalue darf nicht in Apostrophen stehen
- #4814: Remarketing: Werte für ecomm_pagetype anpassen
- #4509: changed_full entfernen
- AdBlock-Checker in Admin integriert, da dieser die Darstellung des Adminbereichs blockieren kann
=> 3.3.2.0
- fix: Optionen im Admin können nicht deaktivert werden
- "Zertifizierter Händler" im Shop aktivieren
- zusätzliche Daten aus Google Shopping übertragen
- fix: Zertifizierte Händler, „locale“ Eintrag auch ohne
aktive Option "zusätzliche Daten aus Google Shopping übertragen"
- fix: Kampagnencode wurde nicht übertragen
- Link "Hilfe starten" korrigieren
- Aktualisierung der Modulinstallationsanleitung / Vorabprüfung (d3precheck)
- freigegeben bis PHP 5.6
=> 3.3.1.0
- Lieferzeitangabe kann nun für lagernde und nicht lagernde Artikel getrennt angegeben werden
- Domainliste bei Verwendung mehrerer Shop-Domains korrigiert
- Schalter für Absprungratenermittlung integriert
- "Zertifizierte Händler"-Variablen werden nur gezeigt, wenn "Zertifizierter Händler" aktiv ist
- JS-Fehler bei unkonfigurierter Absprung-Zeit korrigiert
=> 3.3.0.1
- Kompatibilität zu Egate Media PayPal verbessert
=> 3.3.0.0
- Google Zertifizierte Händler eingefügt
- Hilfetexte erweitert
- Integration ins Mobile-Theme
- Optimierung der Transaktionsübergaben
- getrackte Absprungrate optimiert
- Konfigurationsvariablen korrigiert
- Fehler bei "toBasket" auf Detailseite ohne Kategorieangabe korrigiert
=> 3.2.1.0
- neue Option "Opt Out anzeigen lassen"
=> 3.2.0.0
- Tracking für gekaufte Artikel enthält Daten zur Kategorie / Seite, aus der die Artikel zuerst in den Warenkorb gelegt wurden
- Bugfix: Artikeltitel werden escaped, sofern Quotes enthalten sind
- AutoLinker-URL enthält auch abweichende SSL-URLs
=> 3.1.0.2
- Bugfix: deaktiviertes Modul kann benötigtes Objekt nicht laden
- Bugfix: Seiten ohne Klassenangaben (z.B. 404-Seiten) versuchen Artikellisten für Remarketing zu laden
=> 3.1.0.1
- Universal-Trackingcode für Multi-Domain-Nutzung angepasst
=> 3.1.0.0
- Universal-Analytics Tracking-Code implementiert
- zusätzliche Steuerungsparameter eingefügt
- Trichtererfassung vereinfacht
- konfigurierbarerer AdWords Conversion-Trackingcode integriert
- Remarketing-Tags integriert
=> 3.0.0.3
- Precheck angepasst
- Templates für 4.8.0 / 5.1.0 hinzugefügt
=> 3.0.0.2
- automatische Installation angepasst
=> 3.0.0.1
- Umstellung auf teilautomatische Installation
- Übergabe der Steuer
=> 3.0.0.0
- Umstellung auf Struktur des OXID 4.7 / 5.0
- benutzerdefinierte Variablen um "Neukunde" ergänzt
- Trackingcode in <head> verschoben
- optionales Logging integriert
=> 2.4.1
- Templates für OXID 4.6.4 kompatibel
=> 2.4.0
- Remarketing-Option eingefügt
- Metadaten vervollständigt
- Syntaxfehler im JS-Code entfernt
=> 2.3.0
- Templates für OXID 4.5.11 und 4.6.2 kompatibel
- weitere Beispiele für benutzerdefinierte Variablen eingefügt
=> 2.2.3
- Templates für OXID 4.6 eingefügt
- Metadaten eingefügt
- Templates für OXID 4.5.9 kompatibel
=> 2.2.2
- Templates für OXID 4.5.8 kompatibel
- Syntaxfehler im JS-Code entfernt
=> 2.2.1
- Templates für OXID 4.5.3 bis 4.5.6 kompatibel
- Syntaxfehler im JS-Code entfernt
=> 2.2.0
- Kampagnen können unabhängig von deren Code deaktiviert werden
- Ladezeit-Log hinzugefügt
- Preise werden in Shophauptwährung übertragen
- Templates für OXID 4.5.1 kompatibel
...

2609
setup+doku/d3precheck.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +0,0 @@
---
title: Hilfe und Support
---
Bei Bedarf bieten wir Ihnen auch gern die Installation des Moduls in Ihrem Shop an. Geben Sie uns bitte unter den unten genannten Kontaktdaten Bescheid.
Haben Sie Fragen oder Unklarheiten in Verbindung mit diesem Modul oder dessen Installation, stehen Ihnen Hilfetexte in unserem [HelpCenter](https://faq.d3data.de/) zur Verfügung. Finden Sie darin die benötigten Antworten nicht, kontaktieren Sie uns bitte unter den folgenden Möglichkeiten:
1. per E-Mail: <support@shopmodule.com> oder
2. über das Kontaktformular auf [Oxidmodule.com](https://www.oxidmodule.com/) oder
3. per Telefon: (+49) 37 21 / 26 80 90 zu unseren Bürozeiten
Geben Sie bitte an, wo und wie wir gegebenenfalls vorhandene Schwierigkeiten nachvollziehen können. Sind Ihre Fragen shopspezifisch, benötigen wir möglicherweise Zugangsdaten zum betreffenden Shop.
Wir wünschen Ihnen mit Ihrem Shop und dem Modul viel Erfolg!
Ihr D³-Team.