Magento2: Was ist der beste Weg, um mobile Geräte zu erkennen?


9

Ich habe den folgenden Code verwendet, um Mobiltelefone in Magento1 zu erkennen.

$isMobile = Zend_Http_UserAgent_Mobile::match(
    Mage::helper('core/http')->getHttpUserAgent(),
    $_SERVER
);

Ich bin mir nicht sicher, ob auch für Magento2 etwas verfügbar ist. Hat jemand so etwas in magento2 verwendet?


Um die Client-Geräte zu erkennen, haben wir hier eine Erweiterung: github.com/EaDesgin/magento2-mobiledetect
Krishna ijjada

Lassen Sie mich wissen, wenn Sie ein Problem haben?
Vishwas Soni

Sie sollten die Antwort genehmigen oder Ihre Fragen stellen, um anderen Entwicklern zu helfen, die richtigen Lösungen zu finden.
Vishwas Soni

@VishwasSoni Ich habe versucht, Sie Lösung es gibt mir leere Seite. ohne Fehler. Deshalb habe ich noch nicht akzeptiert.
Kul

@ Kul Debuggen Sie das Problem und kam mit den Fehlern zurück, die Sie erhalten. Eine Community wird Ihnen helfen.
Vishwas Soni

Antworten:


8

Der beste Weg ist, ein mobiles Gerät zu erkennen

//Identifying if user is on mobile browser or not
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$_SERVER['HTTP_USER_AGENT'])||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($_SERVER['HTTP_USER_AGENT'],0,4))) {
    $browserStatus = 'Mobile';
}

Ich habe dies auf vielen Websites verwendet und arbeite perfekt.


Hat auch für mich gearbeitet!
Kul

7

Sie können dieselbe Klasse in Magento2 verwenden.

protected $httpHeader;

protected $mobileAgent;

public function __construct(
   ...
    \Magento\Framework\HTTP\Header $httpHeader,
    \Zend_Http_UserAgent_Mobile $mobileAgent
   ...
) {
    $this->httpHeader = $httpHeader;
    $this->mobileAgent = $mobileAgent
}

public function isMobile(){
  $userAgent = $this->httpHeader->getHttpUserAgent();

  return $this->mobileAgent->match($userAgent, $_SERVER); //the code which you want.
}

Ausnahme Nr. 0 (Ausnahme): Hinweis: Undefinierter Index: http_user_agent in /var/www/Magento2/vendor/magento/zendframework1/library/Zend/Http/UserAgent/Features/Adapter/Browscap.php in Zeile 69 Ausnahme ... Bitte helfen Sie mir
BK

1
@kranthi müssen Sie möglicherweise Ihr Plugin nach DI-Injektion erstellenphp bin\magento setup:di:compile
Sumit Kumar

@ SumitKumar lief Befehl, aber keine Verwendung
BK

Es scheint, dass Ihr Browser nicht auf http_user_agent eingestellt ist. Versuchen Sie zu verwenden, wenn Bedingung wie diese: stackoverflow.com/questions/14130830/…
Vishwas Soni

2

Sie können den folgenden Code verwenden

   protected $httpHeader;

   public function __construct(
    \Magento\Framework\Model\Context $context,
    \Magento\Framework\HTTP\Header $httpHeader,
    )
    {
         $this->httpHeader = $httpHeader;
         parent::__construct($context);
    }
    public function execute(){
      $userAgent = $this->httpHeader->getHttpUserAgent();
    }

2

Sie verwenden diese Bibliothek für Mobile Detect

Verknüpfung

Benutzerdefiniertes Modul erstellen Bibliothek im Modul hinzufügen und Helfer erstellen und diese Funktion global nutzen.

  public function isMobile() 
  {
     return $this->mobileDetector->isMobile() || $this->mobileDetector->isTablet();
  } 

Fügen Sie mobileDetector in Ihren Konstruktor ein, um die Bibliothek zu injizieren.


2

Sie müssen nur eine Klasse "\ Magento \ Framework \ HTTP \ Header" einfügen, da "\ Zend_Http_UserAgent_Mobile :: match" eine statische Methode ist. Dies funktioniert also:

/**
 * @var \Magento\Framework\HTTP\Header
 */
protected $httpHeader;

/**
 * @param \Magento\Framework\HTTP\Header $httpHeader
 */
public function __construct(
    \Magento\Framework\HTTP\Header $httpHeader
) {
    $this->httpHeader = $httpHeader;
}

/**
 * @return bool
 */
public function isMobile()
{
    $userAgent = $this->httpHeader->getHttpUserAgent();
    return \Zend_Http_UserAgent_Mobile::match($userAgent, $_SERVER);
}

1

Ich verwende Magento 2.3.2

Ich fand, dass der einfachste Weg ist, "Mobile_Detect.php" zum Ordner "magento_path / lib / internal" hinzuzufügen . Rufen Sie es dann wie folgt in meine .phtml-Vorlagendatei auf:

<?php 
include(BP.'/lib/internal/Mobile_Detect.php');
$detect = new Mobile_Detect();
if( $detect->isMobile() && !$detect->isTablet() ){
    echo "Is Mobile";
} else{
    echo "Is Desktop";
}
?>

Hoffe das hilft jemandem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.