Drupal 7 开发内部培训资料, 分头诗人

drupal 7 通过编程方式设置点击子菜单的时候,父菜单自动高亮。

在默认的drupal 菜单中,点击了子菜单后,高亮的样式自动转移到子菜单,父菜单就自动取消高亮了。

但很多时候我们并不希望如此,我们更希望是当前子菜单高亮了,它的父菜单也高亮。

该怎么做呢?其实很简单,只要一个函数就可以了。

它就是menu_set_active_item()

通过他可以很方便的设置哪个菜单高亮。

这里给一个简单例子:

menu_set_active_item('user/' . $user->uid);

这代码如果生效的话,用户信息页就永远处于高亮状态了。

12个最佳的幻灯片模块

幻灯片是网站最重要的一个部分。当你访问一个网站,它基本上是首先吸引你的眼睛的。它足够大,有很多很酷的过渡效果。在这篇文章中,我收集一些最好的Drupal幻灯片模块,并跟大家一一介绍。

有很多Drupal幻灯片模块,然而,这里我只介绍高使用率的模块,并且正在积极开发和支持Drupal 7。我下载并测试他们看看他们的优缺点是什么。

1. View slideshow

这无疑是在Drupal最受欢迎的幻灯片模块。在大多数我们的Drupal主题,都使用View slideshow。通过view slideshow,你可以放任何内容(不只是图片)。它是基于jQuery,它是高度可定制:你可以为每个视图选择幻灯片设置。

例子: http://demo.symphonythemes.com/drupal7/yali

下载: http://www.drupalla.com/project/views_slideshow

使用: 170'000+

 

2. Flex Slider

在最近的项目,我倾向于采用此模块作为幻灯片视图。它看起来类似于Views slideshow,但却更加先进,它能在移动设备上支持手指划动换图,非常酷。使用这个模块,您可以在移动设备得到更好的用户体验。

如何快速查找Drupal表单的Form ID?

在开发Drupal网站的过程中,我们经常需要使用hook_form_alter(&$form, &$form_state, $form_id)或hook_form_Form_ID_alter(&$form, &$form_state)两个函数对Drupal的表单进行修改,以满足我们实际应用的需求。这2个函数有以下一些功能:

1、修改表单的labels、descriptions及其他属性
2、通过改变#weight改变元素在表单中的先后顺序
3、将一些元素用<div>或者<fieldset>包裹(wrapper)
4、隐藏或移除一些不必要的元素
5、为表单添加一些markup(标签)
6、为表单加上自己写的验证函数(例如加在第一个:array_unshift($form['#validate'], 'new_validate');)
6、等等等等等等

例如:下面这段语句就是将搜索表单的按键改成图形的,search_block_form就是这个搜索表单的Form ID(下面代码摘自老梁的mydrupal,老农【老农是antims的外号】稍微修改了一下)

function  主题名_search_block_form_alter(&$form, &$form_state) {
    $form['search_block_form']['#size'] = 30;
    $form['actions']['submit']['#value'] = t('Go'); 
    $form['action']['submit']['#type'] = 'image_button';
    $form['action']['submit']['#src'] = drupal_get_path('theme', '主题名') . '/images/search.png';
    $form['action']['submit']['#attributes']['class'][] = 'my-search-button';
}

 

从上面代码可以看出,修改一个Drupal表单,最重要的就是要知道它的Form ID。那么怎么才能快速查找它呢?
老农为您介绍最最方便的方法:

1、安装Firefox浏览器

2、安装web Developer插件

Drupal 页面请求的处理过程

1. Someone fires a request to your webserver. They might get a cookie if they've already logged into the site.
2. The server gets the request. It goes to .htaccess which says everything should go to index.php
3. index.php loads the APIs and gets them ready to handle the request
4. The Menu API which was loaded looks up the paths that different modules have registered that they handle.
5. The module gets the request and fires hooks to see whether any module wants to help while it's building the page.
6. The module returns some info back to the menu system.
7. If the everything looks good, it figures out which theme is active and hands off the raw data to the theme layer.
8. That gets kicked back to Drupal.
9. That gets kicked back to the web server, which kicks it back to the user.

通过 render 渲染drupal 的字段格式。

例如:node里面有一个field_image的字段,读取他的默认显示样式:

方法1:

$node = node_load($nid);
$content = node_view($node, 'full');
$row['image'] = drupal_render($content['field_image']);

方法2:

$node = node_load($nid);
$content = field_view_field('node', $node, 'field_image');
$row['image'] = render($content);

如果你想应用后台内容类型的设置显示格式,就需要改写代码:

$node = node_load($nid);
// Must load field content for entity before using field_view_value()
$fields = field_get_items('node', $node, 'field_image');
// $index corresponds to the value you want to render. First value = 0.
$index = 0;
$content = field_view_value('node', $node, 'field_image', $fields[$index]);
$row['image'] = render($content);

如果想自定义样式,可以

$display = array('type' => 'my_formatter');
$content = field_view_field('node', $node, 'field_image', $display);
$row['image'] = render($content)'

如何在Drupal当中获取node id?

第一种方法:

 //get node id
  global $node;
  print_r($node);
  $nid = $node->nid;
  dsm(strval($nid));

 

第二种方法:使用url ''node/{nid}'  :

if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
  $node = node_load(arg(1));
  print_r($node);
  // Do something with $node
  // If all you need is the nid you can use
  // $nid = arg(1)

 

 

第三种方法:

$node = menu_get_object();
$nid=$node->nid;
dsm(strval($nid));

参考资料:

http://drupal.stackexchange.com/questions/6638/get-a-node-id-from-the-url

通过node.tpl.php复写,分页显示node。

如果不使用view,一个node.tpl.php复写,怎么在node.tpl.php中分页显示node

在Windows 下安装drush。

Drush是一个在命令行使用的php脚本库,在服务器本地通过php解释器调用执行,可以用命令行操作的形式管理Drupal站点,功能包括几乎所有的常用操作,比如下载安装模块和主题,管理数据库,管理用户等等。

在过往,windows 安装drush 挺麻烦的。这里有介绍了drush在windows的安装步骤,需要安装一系列的小工具软件。而现在,在windows 下安装变得非常容易,因为现在又了一个新的套件工具叫:Drush Windows Installer

它是把一些必须用到的工具整合起来一起安装并且配置好环境,使用方法:

Drush Windows Installer 安装完后,你会在桌面上发现一个图标,

直接双击它就进入了命令行窗口,cd到你的某个网站文件夹根目录下(index.php所在目录),比如我的是:

D:\wamp\www

然后就可以通过这个进行命令行操作了

最常用的命令有:

drush help (查看命令帮助)

drush cc (清缓存)

drush cron (运行cron)

 

drush dl 模块名 (下载模块,如果你有modules/contrib,那么默认就下载到这里,直接是已经解压缩的文件夹哦!)

drush en 模块名 (启用模块)

drush dis 模块名 (卸载模块)

drush fl (列出所有feature,如果启用了features模块)

drush fr feature名 (revert feature)

 

 

这里以安装drupal 为一个简单例子:

在d:\wamp\www 命令提示符下输入:

如何才能学好Drupal?

一眨眼接触Drupal已经三个多月了,这3个月来,看了一些Drupal资料,中文的有清华大学出版社的《Drupal7宝典》,英文的有《Drupal 7 first look》、《Drupal Views Coolbook》、《Drupal 7 Themes》,目前正在看《The Definitive Guide to Drupal 7》,接下来准备看《Drupal 7 Module Development》和《Pro Drupal 7 Development》。在学习过程中搭建了10几个网站,都是一些实验性的,还没搭建过正式的站点。改过别人的主题和模块,自己没写过,所以远不能算入门,最多只算初窥门径,a little而已。

学习过程中每天必看的是猪跑啦和myDrupal(诗人,你把老梁的链接地址搞错了吧?),知道了国内的一些Drupal大牛,如老葛、Lugir袁、方医生、分头诗人、上海的戴文、香港的老梁等等,对这些人相当敬仰(戴文是公司,不是个人),最大的梦想就是N年后水平能与他们比肩。

接下来学习的路还很长,学习过程中最大的体会就是Drupal太难,不是一般的难,学好它可能需要以下的知识储备:

一、PHP
Drupal是PHP开发的,因此这个是基础。要精通字符型和数组型数据结构,Drupal程序里经常看到"=>"运算符,还有嵌套数组。要学会OOP编程方法,在Drupal里也会经常看到运算符:"->"和"::"。


二、CSS(2.1和3)、HTML(DHTML、HTML5)
HTML5和CSS3是以后的趋势,一定要掌握。Drupal里响应式的主题渐成趋势,Zen、Omega、AT等都支持响应式布局,所以要了解Bootstrap之类的目前比较流行的网页架构。

三、Javascript
主要是jQuery库,以及AJAX方法

四、服务器操作系统
Windows、Linux、Unix是目前常用的服务器操作系统,要精通一个熟悉另2个。

五、WEB服务器
IIS、Apache,Nginx,其中Apache一定要精通

六、数据库
起码得懂MySQL,以及MySQL的Master/Slave配置。最好知道点NoSQL数据库,以后肯定用得着。

七节课掌握DRUPAL7应用之二:了解DRUPAL的基本功能

上一节课我们讲了DRUPAL安装,这节课我们主要了解几个DRUPAL的基础功能和设定。

1、媒体站点的主布局和基本元素

    区域一:头部 (header)

  •     标志(logo)
  •     菜单(menu)

   区域二:顶部(top)

   幻灯片(Slideshow

  

   区域三:内容区(content)

   博客列表(blog post)

  

   区域四:边栏区(sidebar)

   搜索(search)

   导航 (navigation)

   用户登陆(user login)

   投票 (poll)

   最近评论(recent comments)

  

   区域五:后记(postscript)

   自定义区块1

   自定义区块2

   自定义区块3

   自定义区块4

  

    区域六:脚注 (footer)

   底部logo(footer logo)

   底部菜单 (footer menu)

 

 

 

 


区块的管理与配置

正如你上面看到的,这是发行版本专门定制的一个主页页面,它的布局区域划分为六块。

不同区域放置了不同的区块,比如:最近评论、登录、投票等。你可以将不同的内容区块,

放在需要展示的区域中。

区块设置

你可以按照以下步骤进行区块设置:

1、进入后台管理界面——结构——区块管理(英文路径:Admin/structure/blocks),可以看到各区块列表。

页面

订阅 RSS - 博客