Oxid Mobile Theme / Zahlungsarten

Hi zusammen,

so, nun ist die Migration auf 4.7.7 bis aufs Mobile Template abgeschlossen.
Im Augenblick ist es bei der Zahlungsartenauswahl so, dass alle Zahlungsarten angezeigt werden, diese sich aber nicht auswählen lassen.

Es bleibt quasi immer bei Vorauskasse.

Ich möchte allerdings erreichen, dass nur PayPal in der mobilen Version zur Verfügung steht.

Jemand eine Idee, wie sich das bewerkstelligen lässt?

[QUOTE=coarsy;131477]m Augenblick ist es bei der Zahlungsartenauswahl so, dass alle Zahlungsarten angezeigt werden, diese sich aber nicht auswählen lassen.

Es bleibt quasi immer bei Vorauskasse.[/QUOTE]

Das ist aber im Standard nicht so, da funktioniert die Auswahl einwandfrei.

Hmmm, ich schätze mal, dasses am DHL Plugin von OXID liegt.

Denn auch die Packstationauswahl etc. wird angezeigt, was ja grundsätzlich nicht verkehrt ist. Aber Zahlungsarten kann ich nach wie vor nicht auswählen…

Hi zusammen,

kann jemand noch bestätigen, dass sich das Mobile Theme mit dem DHL Portlet beisst? Es lassen sich keine Zahlungsarten auswählen. Man müsste wohl die Templates entsprechend für die Mobile Version anpassen, scheint nen JavaScript Fehler zu sein, genau hab ichs noch nicht untersucht…

Hi,

der Vorsicht halber:
https://bugs.oxid-esales.com/view.php?id=5410

Gruß

Subba gsi :slight_smile: Ich danke Dir!

Moin coarsy,

offenbar isses nicht reproduzierbar :frowning:

Gruß
Marco

Moinsen Marco!

Hier sind aber jetzt nur die Zahlungsarten vom DHL Modul eingebunden. Was ist mit den anderen Zahlungsarten? Es geht ja primär darum, dass die Auswahl der anderen Zahlungsarten wie PayPal, Sofortüberweisung etc. scheitert.

Eventuell liegts auch daran, dass ich noch das Basic Template einsetze. Meiner Meinung nach müsste das DHL Portlet noch extra in einer mobilen Version, also einem angepassten Templatesatz daherkommen…

Okay, es handelt sich um einen JavaScript Fehler:



TypeError: $(...).oxPayment is not a function
()index.php? (Zeile 557)
$( '#dhlpayment' ).oxPayment();

Keine Ahnung, wo der herkommt… Vielleicht hat jemand von Euch ne Idee?

Soo, jetzt funktionierts, eine JavaScript Datei wurde nicht vererbt… Habe diese nun explizit in den js/widgets Ordner gelegt und nun läufts! Wie kann ich nun Zahlungsarten im mobilen Template explizit ausschließen?

Keiner ne Idee, wie man bestimmte Zahlungsarten in Mobile unterbinden kann? Hmm, wohl eventuell im Template selbst…

musst halt aufs aktive Template prüfen, anstatt auf die Kategorie

Hi Hebsacker,

vielen Dank für den Hinweis. Jetzt fehlt mir nur noch der richtige Aufruf für die Theme ID:


<?php 
 
/**
 * disallow payment  by having a  _aTemplateDisallowPayment = array ('mobile'=>'oxidinvoice') assignment.
 */
class nomobile_payment extends nomobile_payment_parent
{
    protected $_aTemplateDisallowPayment = array ('mobile'=>'oxidinvoice','mobile'=>'oxidprepayment');
 
    public function getPaymentList()
    {
      if (is_null($this->_oPaymentList)) {
      $oPaymentList = parent::getPaymentList();
        $title = hier Funktion für Theme ID!
        if (array_key_exists($title, $this->_aTemplateDisallowPayment)){
          //disallow
          foreach ($oPaymentList as $key=>$oPayment){
            $sOxid = $oPayment->_sOXID;
            if ($sOxid == $this->_aTemplateDisallowPayment[$title]){
                unset ($this->_oPaymentList[$this->_aTemplateDisallowPayment[$title]]);
            }
        }
          //disallow
        }
      }
      return $this->_oPaymentList;
    }
}

Jemand ne Idee, wie die Funktion getActiveThemeId hier aufgerufen werden muss?

Dann wohl so:


<?php 
 
/**
 * disallow payment  by having a  _aTemplateDisallowPayment = array ('mobile'=>'oxidinvoice') assignment.
 */
class nomobile_payment extends nomobile_payment_parent
{
    protected $_aTemplateDisallowPayment = array ('mobile'=>'oxidinvoice','mobile'=>'oxidprepayment');
 
    public function getPaymentList()
    {
      if (is_null($this->_oPaymentList)) {
      
				$oPaymentList = parent::getPaymentList();
	      $oTheme = oxNew('oxTheme');
				$themeId = $oTheme->getActiveThemeId();
			
        if (array_key_exists($themeId, $this->_aTemplateDisallowPayment)){
          //disallow
          foreach ($oPaymentList as $key=>$oPayment){
            $sOxid = $oPayment->_sOXID;
            if ($sOxid == $this->_aTemplateDisallowPayment[$themeId]){
              unset ($this->_oPaymentList[$this->_aTemplateDisallowPayment[$themeId]]);
            }
        	}
        }
      }
      return $this->_oPaymentList;
    }
} 

Hier mal noch ne weitere Version… Irgendwie haut der Vergleich net hin:

 if ($sOxid == $this->_aTemplateDisallowPayment[$themeId][$i]) 

Also so dann komplett…


<?php 
 
/**
 * disallow payment  by having a  _aTemplateDisallowPayment = array ('mobile'=>'oxidinvoice') assignment.
 */
class nomobile_payment extends nomobile_payment_parent
{
    protected $_aTemplateDisallowPayment = array('mf_mobile'=> array('0'=>'oxiddebitnote','1'=> 'secupaykkiframe'));
 
    public function getPaymentList()
    {
      if(is_null($this->_oPaymentList)) {
      
				$oPaymentList = parent::getPaymentList();
	      $oTheme = oxNew('oxTheme');
				$themeId = $oTheme->getActiveThemeId();						
								
        if(array_key_exists($themeId, $this->_aTemplateDisallowPayment)){
                        
          //disallow
          $i = 0;
          foreach ($oPaymentList as $key=>$oPayment){
            $sOxid = $oPayment->_sOXID;
            
            if ($sOxid == $this->_aTemplateDisallowPayment[$themeId][$i]) {															            
              unset($this->_oPaymentList[$this->_aTemplateDisallowPayment[$themeId][$i]]);
            }
          $i++;
        	}
        }
      }
      return $this->_oPaymentList;
    }
}

Ich hab das mal zusammengefasst: https://github.com/leofonic/oxid_payment_restrictions

Super genial! Dankeschön!

[QUOTE=coarsy;131745]Soo, jetzt funktionierts, eine JavaScript Datei wurde nicht vererbt… Habe diese nun explizit in den js/widgets Ordner gelegt und nun läufts! Wie kann ich nun Zahlungsarten im mobilen Template explizit ausschließen?[/QUOTE]

Ich zwar schon eine Weile her aber kannst du dich vielleicht noch daran erinnern welche datei das genau war?
Habe das selbe Problem…was hast du genau gemacht?

Besten Dank
Florian

Es handelte sich um eine eigene Datei aus meinem Farbselector. Du Du diesen nicht hast, ist es nicht der Selbe Fehler.