ম্যাজেন্টো 2: মোবাইল ডিভাইস সনাক্ত করার সর্বোত্তম উপায় কী?


9

আমি ম্যাজেন্টো 1 তে মোবাইল সনাক্ত করতে নীচের কোডটি ব্যবহার করেছি।

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

আমি নিশ্চিত নই যে ম্যাজেন্টো 2-তেও কিছু উপলভ্য আছে কিনা। কেউ কি ম্যাজেন্টো 2 তে এরকম কিছু ব্যবহার করেছেন?


ক্লায়েন্ট ডিভাইসগুলি সনাক্ত করতে, আমাদের এখানে একটি এক্সটেনশান রয়েছে github.com/EaDesgin/magento2-momotdetect
কৃষ্ণ ইজ্জাদ

আপনার কোন সমস্যা আছে তা আমাকে জানাবেন?
বিশ্বাস সনি

আপনার উত্তর অনুমোদন করা উচিত বা আপনার বিকাশকারীদের অন্য বিকাশকারীদের সঠিক সমাধানগুলি খুঁজতে সহায়তা করতে বলা উচিত।
বিশ্বাস সনি

@ বিশ্বসোনি আমি আপনার চেষ্টা করেছি এটির সমাধানটি আমার খালি পাতা দিন। কোন ত্রুটি ছাড়াই এজন্য আমি এখনও গ্রহণ করি নি।
কুল

@ কুল সমস্যাটি ডিবাগ করুন এবং আপনার প্রাপ্ত ত্রুটিগুলি নিয়ে ফিরে এসেছেন। একটি সম্প্রদায় আপনাকে সহায়তা করবে।
বিশ্বাস সনি

উত্তর:


8

মোবাইল ডিভাইসটি সনাক্ত করা সর্বোত্তম উপায়

//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';
}

আমি এটি বেশ কয়েকটি ওয়েবসাইটে ব্যবহার করেছি এবং নিখুঁতভাবে কাজ করছি।


আমার জন্যও কাজ করেছেন!
কুল

7

আপনি Magento2 এ একই ক্লাস ব্যবহার করতে পারেন।

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.
}

ব্যতিক্রম # 0 (ব্যতিক্রম) পেয়েছেন: বিজ্ঞপ্তি: অপরিবর্তিত সূচক: /var/www/Magento2/vendor/magento/zendframework1/library/Zend/Http/UserAgent/F Features/Adapter/Browscap.php লাইনে 69 ব্যতিক্রম ... । দয়া করে আমাকে সহায়তা করুন
বিকে

1
@ ক্রান্তি ডিআই ইঞ্জেকশনের পরে আপনার প্লাগইনটি তৈরি করতে হতে পারেphp bin\magento setup:di:compile
সুমিত কুমার

@ সুমিতকুমার কমান্ড চালাচ্ছিলেন কিন্তু কোনও কাজে লাগেনি
বিকে

দেখে মনে হচ্ছে আপনার ব্রাউজারটি http_user_agent সেট করা নেই। শর্তটি যদি এর মতো হয় তবে ব্যবহার করার চেষ্টা করুন: stackoverflow.com/questions/14130830/…
বিশ্বাস সনি

আমি একই ত্রুটিটিও পাচ্ছি - অপরিবর্তিত সূচক: http_user_agent in /var/www/Magento2/vendor/magento/zendframework1/library/Zend/Http/UserAgent/Features/Adapter/Browscap.php লাইনে 69 ব্যতিক্রম
নরেন্দ্র ব্যাস

2

আপনি নীচের কোড ব্যবহার করতে পারেন

   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

আপনি মোবাইল সনাক্তকরণের জন্য এই লাইব্রেরিটি ব্যবহার করেন

লিংক

মডিউলে কাস্টম মডিউল যুক্ত লাইব্রেরি তৈরি করুন এবং সহায়ক তৈরি করুন এবং এই কার্যটি বিশ্বব্যাপী ব্যবহারের জন্য রাখুন।

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

লাইব্রেরি ইনজেক্ট করতে আপনার কনস্ট্রাক্টরে মোবাইলডেেক্টর যুক্ত করুন।


2

আপনাকে কেবলমাত্র একটি শ্রেণি "\ ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ এইচটিটিপি er শিরোলেখ" ইনজেক্ট করতে হবে, কারণ "\ জেন্দ_হট্টপ_উজারআজেন্ট_মোবাইল :: ম্যাচ" একটি স্থির পদ্ধতি, সুতরাং এটি কাজ করবে:

/**
 * @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

আমি ম্যাজেন্টো ২.৩.২ চালাচ্ছি

আমি খুঁজে পেয়েছি যে সবচেয়ে সহজ উপায় হল "মোবাইল_ডেটেক্ট.পিএফপি" "ম্যাজেন্টো_পথ / লিবিব / অভ্যন্তরীণ" ফোল্ডারে যুক্ত করা। তারপরে এটি ব্যবহার করে আমার। Phtml টেম্পলেট ফাইলটিতে কল করুন:

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

আশা করি এটি কাউকে সাহায্য করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.