모듈 이름은 eauth 라고 가정합니다.
rhymix 최신에서 모바일 대응을 잘 모르겠습니다.
과거 방식대로라면 eauth.mobile.php 코드는 이렇습니다.
<?php require_once(__DIR__ . '/eauth.view.php'); class EauthMobile extends EauthView { }
위와 같이 view 상속 받는 것으로 간단히 mobile 대응하는게 제가 원하는 것입니다.
신규 문법을 작성하면 mobile 대응하는 방법을 잘 모르겠습니다: 크롬 개발 도구를 모바일에 맞춰 접속하면 [모바일에 최적화된 화면으로 보기] 링크가 나옵니다.
몇 가지 시도 해봤는데, 그 중 예를 들면 다음과 같이 namespace 선언 및 path, class 맞춰주는 것으로는 잘 안되는 것 같습니다: namespace Rhymix\Modules\Eauth\Mobile;
아래와 같은 구조일 때 view 상속을 받는 것으로 간단히 mobile view 대응하는 방법이 있을까요?
conf/module.xml
.. <action name="dispEauthSignupForm" class="Controllers\View" standalone="true" /> ..
controllers/View.php
<?php namespace Rhymix\Modules\Eauth\Controllers; class View extends Base { public function dispEauthSignupForm() { ... } }
네임스페이스 구조의 모듈에서는 PC냐 모바일이냐에 따라 class나 method를 구분하지 않는 것이 원칙입니다. 특정 기기에서 특별한 처리가 필요한 경우, 하나의 class나 method 안에서 분기하여 처리합니다. 예를 들어 다른 스킨을 사용하고 싶다면 아래와 같이 init()에서 스킨 경로 기본값을 설정할 수 있습니다.
public function init()
{
if (\Mobile::isFromMobilePhone())
{
$this->setTemplatePath($this->module_path . 'm.skins/default');
}
else
{
$this->setTemplatePath($this->module_path . 'skins/default');
}
}
요즘 대부분의 신규 서비스는 모바일 퍼스트 또는 적응형(반응형)으로 개발되기 때문에, 이런 최소한의 조치마저도 점차 필요없게 될 것이라고 예상하고 있습니다. 즉, 모바일용 class나 method를 따로 두도록 계속 지원해야 하는 부담보다 그냥 분기처리하는 귀찮음이 더 적고, 점점 더 적어질 것이라는 쪽에 베팅하는 설계입니다.
사이트 설정 상태에 따라서는 "모바일에 최적화된 화면으로 보기" 메뉴가 나타날 수도 있는데, 그 부분은 조만간 지워버릴 생각입니다. (아마 2.2쯤?) 지금 눈에 거슬린다면 css로 숨기셔도 됩니다.
실제로 제가 운영에 관여하는 사이트에서는 sass mixin과 최소한의 js만으로 모바일에 대응하고, 백엔드 쪽에서는 사용자가 무슨 기기를 들고 오든 아예 신경을 끄고 있습니다.