You are here

使用Switchtheme模块切换drupal主题

     先简单的介绍一下这个模块,模块的下载地址为: http://drupal.org/project/switchtheme

模块用途,就是为你添加一个主题切换区块,在这里面,你可以选择主题,进行切换.而且你可以为主题设置更加友好的可读性更强的名字,并且可以根据用户的角色,来控制哪些用户可以切换主题,哪些不可以切换.另外,从6.x开始,这个模块开始支持了Browscap模块,以根据用户的浏览器来切换drupal主题。

 

       另外在Readme文件中,介绍了更详细的信息,你可以把主题实现大、中、小,3个版本,然后让用户在3着之间进行切换。

   接下来,要做的就是安装这个drupal模块,以及阅读里面的说明。它的配置是很简单的,比如为theme设置用户友好的名称,admin/settings/switchtheme,不过这里我没有配置。直接按照说明,进入区块列表页面,这就看到了这个模块创建的两个区块Switch theme form,Random theme,启用这两个区块,同时在其它的主题也启用它们,这里仅仅涉及到了核心主题。呵呵,终于看到效果了。很好,很强大。

 

   这里的随机主题模块基本上就是我想要的了。而且启用了这个模块以后,就可以使用&theme=这种方式切换主题了。不过遗憾的是,这个模块只实现了两个区块,前一个主题,后一个主题,当前主题,这些都没有实现,如果是现成的,那就最好不过了。

  

     既然没有完全实现我想要的,那么就看看这个随机模块是怎么实现的吧。我就打开了这个模块的源代码,察看随机主题区块对应的函数:

function switchtheme_display_random_block() {

  $themes = list_themes();

  shuffle($themes);

  foreach ($themes as $key => $theme) {

    $theme->screenshot = dirname($theme->filename) .'/screenshot.png';

    if (file_exists($theme->screenshot)) {

      // Return the first theme with a screenshot.

      $output = l("<img src=\"". base_path() ."$theme->screenshot\" alt=\"preview of $theme->name\"/>", $_GET['q'], array('query' => 'theme='. $theme->name, 'html' => TRUE));

      return $output;

    }

  }

}

 

    看完这个函数,当然这个drupal模块的源代码,我都读了一遍,顿时觉悟了,又到api.drupal.org上查看了函数list_themes,整个网站的难点,就这样被我攻克了。下面给大家讲解,怎么具体实现的。

相关链接: Think in Drupal

Drupal版本: