你在这里

【提问】自定义登录区块

主标签

现在需要自定义一个登录区块,不影响系统默认的登录区块。请问大家这个问题有解决方法么?

提供一些解决线索,这些本人正在阅读中~

drupal页面定制技巧
2011年07月22日 星期五 17:09
定制登陆界面:
http://drupal.org/node/19855

让某个条件下的节点使用新的page.tpl.php(条件自行判断)
http://drupal.org/node/46017

定制分类的界面

<?php
<br />if ($terms[0]->tid == '3') {include 'page-brochure.tpl.php'; /*load a custom page-brochure.tpl.php if the taxonomy term of the current node matches */<br />    return; }<br />
?>

定制用户信息界面
http://drupal.org/node/35728

定制搜索框
http://drupal.org/node/45295

让图片自动缩放的一段代码,也是经常用到的哦
img {max-width: 200px; width: 200px; WIDTH: expression(parseInt(this.width)>200?'200px': this.width); border:0px;}

一些常用的判断
http://drupal.org/node/23348

区块位置可见设置的一些参考
http://drupal.org/node/64135

在theme里区别显示一般分类与freetag标签
http://www.drupalchina.org/node/1521

一个国外的drupal相册制作视频教程
http://www.drupalchina.org/node/2735

views+cck+viewfield自定义页面风格录象教程
上传一个到了www.56.com,质量很差
http://www.56.com/u60/v_MTk3MjUzMzc.html

视频在群FTP里的位置/files/drupal视频录像/views+cck+viewfield自定义页面风格/

公开FTP,有好东西大家分享,但不要乱传,乱删东西,谢谢合作!
----------------------------
感谢KK125提供
size:5000M
ftp:nesbitt.dreamhost.com
usr:drupal5
psw:okk125

-----------------------------------------------------------------
按登录非登录判断:

<?php
<br />  global $user;/*是否为登录用户*/<br />if ($user->uid){/*如果是当前浏览者为登录用户则显示下面的内容*/<br />    print ;<br />  }<br />else {/*如果是当前浏览者为非登录用户则显示下面的内容*/<br />    print ;<br />  }<br />
?>

按用户uid判断,这个很适合把一些特定区块只显示给管理员:

<?php
<br />  global $user;/*是否为登录用户*/<br />if ($user->uid == 10){/*如果是当前浏览者登录且uid等于10则显示下面的内容*/<br />    print ;<br />  }<br />else {/*如果是当前浏览者uid不等于10则显示下面的内容*/<br />    print ;<br />  }<br />
?>

按角色判断,给不同用户组显示不同的内容:

<?php
<br />global $user;/*是否为登录用户*/<br />if (in_array('vips',$user->roles)) {/*假定有一个角色,叫做"vips",如登录用户属于该用户组,则显示以下内容*/<br />print ;<br />}<br />else{/*若不属于"vips"用户组则显示以下内容*/<br />print ;<br />}<br />
?>

判断用户是否有编辑权限:

<?php
<br />if (node_access('update', $node)){/*如果用户有编辑当前节点的权限,则显示以下内容。*/<br />print ;/*通常这儿是当前节点的编辑链接*/<br />}<br />else{/*如果没有,则显示以下内容。*/<br />print<br />}<br />
?>

定义主题regions:
比如,在template.php里加上:

<?php
<br />function 主题名_regions() {<br />  return array(<br />'contenttop' => t('内容顶部'),<br />'contentbottom' => t('内容底部'),<br />  );<br />}<br />
?>

现在进入管理-区块,看一下,是不是出现了“内容顶部”、“内容底部”这两个块了?举一反三,想要更多的块就很简单了。块的宽度,显示位置,也是非常灵活的。
当然,你需要然在page.tpl.php文件中加上这两句:

<?php
<br />print $contenttop<br />
?>

<?php
<br />print $contentbottom<br />
?>

上面也发了根据分类制作布局,因为制作主题比较多,经常会用到这些代码,就发个比较全面的。基本包括了类型、分类、节点、别名url。都是从官方找来整理的。官方文档是个大宝库,建议中文站用cck做个方便查阅的文档库,有时间和兴趣的可以翻译官方的book添加上去。

drupal使用php模板引擎,主题制作修改非常灵活,可以按类型按url按分类来定义不同page.tpl.php。具体操作步骤如下:
将page.tpl.php复制一份,另存为page-default.tpl.php。现在可以在page.tpl.php里定义了:

<?php
<br />if ($is_front) {<br />    include 'page-front.tpl.php';<br />    return; }<br />if (arg(0)=="node"&& arg(1)=="add" ){<br />    include 'page-add.tpl.php';<br />    return; }<br />if ($node->type == 'story') {<br />    include 'page-story.tpl.php';<br />    return; }<br />include 'page-default.tpl.php';<br />    return;<br />
?>

上面的意思就是首页使用page-front.tpl.php,路径为node/add的使用page-add.tpl.php,类型为story的节点使用page-story.tpl.php,其它都使用page-default.tpl.php

有一点要注意,drupal默认会先按url路径读取模块,比如有story类型的文章,url为http://www.500959.com /front/345,系统会先寻找page-front.tpl.php,因为node/6也是一个路径,所以默认会先根据节点的nid来读取。如果你根据类型指定了不同的page-xxx.tpl.php,读取顺序会变成这样,以nid为6的blog节点为例:page-node-6.tpl.php -> page-blog.tpl.php -> page.tpl.php

节点tpl.php需要在template里定义variables函数。定义方法见面下。这样定义了之后,系统读取顺序就是这样,以nid为6的 blog文章为例子:node-node-6.tpl.php -> node-blog.tpl.php -> node.tpl.php。

如果没有template.php就建一个,如果template里已经有variables函数,根据实际情况修改一下。

<?php
<br />function _phptemplate_variables($hook, $vars = array()) {<br />  if ($hook == 'node')<br />  {</p><p>    $alias = $_GET['q'];<br />    $suggestions = array();<br />    $name_prefix = 'node';<br />    $node_type = !empty($vars['node']->type) ? '-' . $vars['node']->type : '';<br />    $add_path = '';<br />    foreach (explode('/', $alias) as $path_part) {<br />      $add_path .= !empty($path_part) ? '-' . $path_part : '';<br />      $suggestions[] = $name_prefix . $add_path;<br />      $suggestions[] = $name_prefix . $node_type . $add_path;<br />    }</p><p>    $vars['template_files'] = $suggestions;</p><p>    if (module_exists('path')) {<br />      $alias = drupal_get_path_alias($_GET['q']);</p><p>      if ($alias != $_GET['q']) {<br />        $suggestions = array();<br />        $add_path = '';<br />        foreach (explode('/', $alias) as $path_part) {<br />          $add_path .= !empty($path_part) ? '-' . $path_part : '';<br />          $suggestions[] = $name_prefix . $add_path;<br />          $suggestions[] = $name_prefix . $node_type . $add_path;<br />        }<br />      }<br />      $vars['template_files'] = array_merge($vars['template_files'], $suggestions);<br />    }<br />  }<br />  return $vars;<br />}<br />
?>

给不同分类定义不同的page-xxxx.tpl.php:

<?php
<br />if (arg(0)=="taxonomy"&&arg(1)=="term"&&arg(2)=="214"){<br />    include 'page-term-photo.tpl.php'/*分类id为214,使用page-term-photo.tpl.php。*/<br />    return; }<br />
?>

本文转自 http://drupalsh.cn/some-drupal-theme-tips

猜你喜欢