반응 형 테마에서 블록 관리


15

오메가를 기반으로 반응 형 테마를 시작하고 처음에는 모바일 레이아웃에 집중하고 있습니다.

모바일 레이아웃에 포함하기에는 너무 '무거운'것으로 간주되는 특정 블록과 해당 레이아웃을 위해 특별히 도입해야하는 다른 블록 (워터 다운 메뉴, 톤 다운 사용자 막대 등)이 있습니다.

CSS를 사용하여 모바일 레이아웃에서 원하지 않는 블록을 쉽게 숨길 수 있고 기본 레이아웃에 모바일 특정 블록을 포함시키고 숨길 수 있습니다 (따라서 모바일에만 표시됨). 그것. 블록이 표시되지 않으면 블록에 발생하는 추가 오버 헤드가 실제로 허용되지 않습니다 (특히 숨겨진 블록의 컨텐츠가 추가하는 추가 DB 쿼리 수를 고려할 때).

페이지 빌드 초기에 블록 의사 결정 프로세스를 가로 채고 일부 OS 감지를 기반으로 블록을 제외 / 포함하는 좋은 방법이 있어야한다고 생각하지만 그 방법에 대한 빈칸을 그립니다. 가능한.

나는 또한 니스 가이 사이트 앞에서 달리고 있다는 사실을 던질 것입니다.

이를 도울 수있는 모듈 / 알려진 전략이 있습니까?

사이트가 이미 본격적으로 이루어 졌기 때문에 컨텍스트 모듈을 사용하는 것은 옵션이 아니며 추가해야합니다.이 시점에서 컨텍스트로 옮기는 것은 큰 일입니다.


4
의심의 여지없이 패널과 관련 사용자 에이전트 액세스 플러그인을 사용했을 것입니다. 문맥은 아마 똑같을 수도 있지만, 이미 말했듯이 그것은 옵션이 아닙니다. 물론 평가의 끔찍한 가능성이 있습니다 : 블록 가시성 .... 반면에, Varnish가 선행 할 때,이 블록이 수행하는 여분의 DB 쿼리는별로 문제가되지 않을까요?
Letharion

@ 레타 리온 그래, 그 생각이야, 바니쉬 스트레인을 제거하자. 이 사이트에는 수십만 명의 활성 사용자가 있으며 Varnish는 익명의 트래픽에만 관여합니다. 우리는 곧 ESI로 게임을 할 것입니다. 그러나 심지어는 문제를 생각할 수 있습니다. SEO 관점에서 볼 때 여분의 마크 업 / 메뉴는 무겁고 혼란 스러울 것입니다. 모바일 사용자. 힘든 일입니다!
Clive

1
가장 무거운 페이지에보다 지능적인 블록 처리기 (패널 / 컨텍스트 / 기타)를 추가하여 전체 사이트를 다시 실행할 필요없이 약간의 이득을 얻을 수 있습니까?
Letharion

1
나는 그것이 질문을 바보로 만들거나 완전히 게임 체인저라고 동의하지 않습니다. 바니시는 문제를 잘 처리하도록 구성 할 수 있습니다. 즉, 기본 구성을 사용하는 방법을 알지 못합니다.
Letharion

2
@Clive : "어리석은 질문과 같은 것은없고 어리석은 대답 만 있습니다!"라는 옛말이 있습니다. ;-)
AjitS

답변:


4

페이지 빌드 초기에 블록 의사 결정 프로세스를 가로 채고 일부 OS 감지를 기반으로 블록을 제외 / 포함

이 사이트 앞에서 바니시가 실행 중입니다.

주석에서 이미 언급했듯이 요청 URL에서만 캐시 하지 않고 사용자 에이전트에 따라 바니시를 구성하도록 니스를 구성해야합니다 . 니스 위키 ( VCLExampleNormalizeUserAgent )에는 관련 예제가 있습니다.

요청이 실제로되면 않는 사이트를 공격, 당신은 보여주고 표시하지 않도록하는 블록을 결정해야합니다. 나는 eval로 이것을하는 것이 재앙에 지나지 않는다고 생각할 것이다 . 따라서 가장 많이 남은 옵션은 컨텍스트패널 이다.

사이트가 이미 구축 된 상태 두 모듈 중 하나를 사용하여 모든 페이지 / 블록 배치를 다시 실행하는 것은 옵션이 아니지만 프로파일 러를 사용하여 80-20을 적용 하면 특정 페이지 만 다시 실행하여 성능을 크게 향상시킬 수 있습니다.


정말 정말 감사합니다. 문제의 사이트는 Pantheon에 있으므로 Varnish를 구성하는 것이 옵션이라고 생각하지 않습니다. 그러나 이것은 더 일반적인 '이 이론적으로 어떻게 할 것입니까?'유형의 질문으로 바뀌 었으므로 매우 유용합니다
Clive

Pantheon을 사용하면 STYXKEY 쿠키 ( helpdesk.getpantheon.com/customer/portal/articles/425726 끝까지 )를 설정하고 Anon 사용자를 위해 니스 캐시 / 서브 를 분할 할 수 있습니다.
Jimajamma

이 현상금에 완전히 간격을두고 두 답변 사이에 나누고 싶지만 인생은 그런 종류가 아닙니다. 작은 녹색 눈금은 당신이 :) 짝짓기에 간다, 그래서 시스템에 현상금을 제공 Chapabu의를 선택
클라이브

10

나는 나이에 모듈을 사용하지 않았기 때문에 많은 세부 사항을 볼 수는 없습니다 (나는 go라는 단어에서 Context를 사용하여 모든 사이트를 구축하고 이전에는이 ​​문제가 없었지만 모바일 도구 및 공간과 함께 무언가를 넣을 수 있어야한다고 생각합니다.

공백

Spaces는 Drupal 사이트의 개별 "공간"에 의해 구성 옵션을 대체하고 대체 할 수 있도록 구성 옵션을 일반적으로 사이트 전체 레벨에서만 사용 가능하도록하기위한 API 모듈입니다. 다음과 같이 설명되었습니다.

  • 하나의 Drupal 사이트를 여러 사이트처럼 작동시키는 방법
  • 훨씬 더 구성 가능한 완전한 기능을 갖춘 유기적 그룹 또는 사용자 홈페이지를 제공하는 방법
  • 컨텍스트 구성을위한 일반화 된 API

모바일 도구

모바일 도구 모듈은 Drupal 개발자에게 방문자의 장치를 기반으로 사이트를 조정하는 데 도움이되는 몇 가지 도구를 제공합니다.

MT의 프로젝트 페이지에는 프로덕션 준비가 완료되지 않았지만 문제가 될 수 있습니다. 마지막 커밋이 이번 달에 마지막으로 업데이트 된 시점에 따라 다릅니다.

*편집하다

나는 이것에 대해 완전히 잊었다!

눈썹 모양

Browscap은 개선 된 버전의 PHP get_browser () 함수를 제공합니다.

브로우 캡 블록

Browscap Block은 가시성 옵션을 추가하여 모바일 장치에서 블록을 숨기거나 표시 할 수 있도록 구성 설정을 차단합니다.

Browscap은 서버 설정에 따라 다르지만 사용할 수있는 경우 두 번째 모듈은 블록 편집 페이지의 각 블록에 대한 추가 가시성 설정을 제공합니다.

여기에 이미지 설명을 입력하십시오


Browscap Block은 정말 유망한 감사로 보입니다. 다음 며칠 내에 확인하고 알려 드리겠습니다.
Clive

죄송합니다. 반 현상금으로 죄송합니다.
Clive

0

jQuery 크로스 브라우저 지원을 사용하여 화면 해상도를 얻을 수 있습니다.

var browserWidth  = $(window).width();
var browserHeight = $(window).height();

간단한 PHP 스크립트를 추가하여 관련 블록의 설정을 표시합니다.


고맙지 만 블록 전체에 AJAX를 사용하도록 전체 사이트를 변환하는 것은 아닙니다. 가능한 경우이 서버 측을 수행하려고합니다
Clive

0

Mobile Detect Block을 사용할 수는 있지만 현재 AdaptiveTheme해당 코드를 복제하지 않고 최종 사용자 다운로드의 무게를 줄이지 않도록 창 너비 및 Breakpoints 모듈 미디어 쿼리 와 함께 작동하는 솔루션을 찾고 있습니다. 또한 테스트 한 장치에서 Mobile Detect가 선택되지 않은 결과가 혼합되어 신뢰할 수있는 결과를 제공 할 수 없다면 Browscap처럼 쓸모가 없습니다.

어떤 사람들은 어떤 이유로 Browscap에서 벗어나기를 원하는 사람들이 있으므로 Mobile Detect 로 이동합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.