Recently, I was asked to create a mobile version of an existing Drupal website. Ideally, the two sites would run off the same database so that the same content could be used. There are a number of ways of approaching this, but the trick in this case was that the desktop site was already complete and in production. So whatever method I used needed to be able to work with the existing configuration.
I decided to use a separate sub-domain for the mobile site: m.<domain name>.edu
Next, I needed to allow two different themes based on which version of the site a user was visiting. This could be accomplished by creating two site directories in the multi-site installation with two settings.php files with the default theme set in the mobile settings file. However, I decided to use the mobile tools module which provided theme-switching as well as redirects based on user agent.
The next problem I needed to solve was how to display panels, views, and nodes in a much more narrow screen size. For panels, this was incredibly straightforward. Panels allows you to create panel varients with conditions that decide what varient is displayed. In this case, I had two varients: one for the desktop theme and one for the mobile theme. Panels also allowed me to create overrides for the node views of specific node types. As an additional (and poorly labeled) feature, it is possible to have mobile CCK display settings (mis-labeled as a 2nd RSS tab under the display settings). These mobile display settings are only used if the panels override is being used. (Very strange, but it allowed me to create custom imagecache sizes for photo fields that I wanted to still display in the mobile version.)
Views were the trickiest. A grid view really wouldn't look good on a 320px screen no matter what. There were two options. I could create custom theme preprocess functions for each view and somehow make all of them more mobile-friendly - smaller image sizes, no grids. Or I could redirect folks from those view URLs to other pages of my choice in the theme page preprocess function. To make this slightly less ghetto, I created the alternative pages using panels. The alternative mobile URLs would only exist if the current theme was the mobile one, otherwise it would return a 404 error.
分享到:
相关推荐
《Front End Drupal: Designing, Theming, Scripting》是一本由Konstantin Käfer与Emma Hogbin共同编写的书籍,由Prentice Hall PTR于2009年4月15日出版。该书主要面向使用Drupal构建网站的设计者和开发者,旨在...
使用这个 Composer 包安装 Drupal: 不习惯作曲家? 第一步是安装 Composer。 这本质上是一个单行过程: curl -s https://getcomposer.org/installer | php Windows 用户可以在此处下载 phar 文件:[ composer)...
欢迎使用@ koromerzhin / template-drupal :waving_hand: 网站模板模板 :house: 需要 软件: 制作 码头工人 库罗默任(Koromerzhin)/ traefikproxy储存库 配置: 码头工人 主持人: drupal.traefik.me Récup...
cbf-drupal:用于CBF的Drupal模块
drupal:验证和检查版本 drupal验证和检查版本扩展名为: 现在支持最新版本!!! - 验证是否使用drupal构建了网站并检测其版本 - 显示哪些次要版本更新可用于下载并提供直接链接 - 显示哪些主要版本更新可用于下载并...
头盔图:Drupal 。 这些是利用Helm安装Drupal的说明。 该图表将使您可以设置和配置Drupal以及其他集成: 使用ProxySQL配置MySQL 使用PGBouncer配置的PostgreSQL 雷迪斯漆请查阅我们的体系结构图以获取有关Azure的...
docker-drupal Docker 上的 Drupal示例用法注意:以下过程已确认在 OS X 上使用boot2docker和boot2docker docker-compose 。 git clone ...
They will install Drupal 8, master site administration, simplify site creation via workflows, create highly-usable navigation, and much more. You'll see how to quickly change site designs with ...
litmos 和 litmos_feature 模块会将您的课程从 CallidusCloud 的 Litmos 学习平台导入到您的 Drupal 站点作为节点。 启用模块后,您将在管理配置页面中看到 Litmos 设置。 输入您的 Litmos API 凭据以启用自动课程...
"blog-drupal:将我的博客后端从旧的Forestry版本更新为Drupal" 这个标题表明了本次讨论的核心内容是关于一个博客项目,其后端管理系统正经历从旧版的Forestry CMS到Drupal的迁移过程。Forestry是一款用于Jekyll和...
"presentacion-taller-drupal:Drupal研讨会的演讲"这个标题表明我们关注的是一个关于Drupal的专题研讨会,其中可能涵盖了Drupal的高级使用、最佳实践以及最新发展趋势。 在描述中提到“要查看演示文稿,请单击”,...
【标题】"ab2015-drupal:学术信息学 2015 Drupal 课程学习"揭示了这个压缩包内容的主题,它聚焦于2015年在学术信息学领域内的一次Drupal课程的学习资源。Drupal是一个强大的开源内容管理系统(CMS),常用于构建和...
模块以下是您在每个项目中都应该拥有的一些模块: - Drupal 6、Drupal 7 - Drupal 6、Drupal 7 - Drupal 6、Drupal 7 - Drupal 6、Drupal 7 - Drupal 7 - Drupal 6、Drupal 7、Drupal 8 - Drupal 6、Drupal 7 - ...
**Ansible角色-Ansible-role-drupal:自动化Drupal部署与管理** Drupal,作为一个流行的开源内容管理系统(CMS),在Web开发领域被广泛使用。而Ansible则是一款强大的IT自动化工具,可帮助管理员进行配置管理、应用...
【标题】"jolinotif-drupal:将 JoliNotif 库集成到 Drupal 中" 在Drupal这个流行的PHP内容管理系统(CMS)中,开发者经常寻求更高效、更直观的方式来与用户进行互动。JoliNotif 是一个轻量级的 PHP 库,允许开发者...
在“public-site-and-workspace-drupal”项目中,我们可以看到 Drupal 被用于创建 Motion Bank 的公共网站和工作区。Motion Bank 是一个艺术与技术相结合的平台,可能涉及到舞蹈、多媒体艺术以及创新的在线交互。 ...
要开始使用此docker4drupal本地环境实例,请更新Makefile: 用{PRODUCT_NAME}将所有字符串更新为您想要的名称。更新docker-compose.yml 1.要开始使用此docker4drupal本地环境实例,请更新Makefile: 使用docker-...
Drupal FFLCH Plataforma Drupal美国站点位于FFLCH。 创建和编辑composer.json。 原则原则: 网站/配置文件/配置文件/ fflchprofile:配置文件自定义配置 网站/模块/自定义:módulosespecifícosde cada网站 部署...
用于Drupal的Bitnami Docker映像 什么是Drupal? Drupal是市场上功能最多的开源内容管理系统之一。 Drupal专为高性能而构建,可扩展到许多服务器,可通过REST,JSON,SOAP和其他格式轻松集成,并具有多达15,000个...
对Drupal做出React 该模块将React中的一个简单语句集成到了drupal 8块中。 先决条件 Drupal的实例 node.js npm 纱 网页包 激活模块之前 将模块放在模块的自定义文件夹中。 然后,在命令行中,将自己置于模块的...