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

模块里面写了点html,打印出来竟然在顶上问一下怎么回事

赞成!
0
否决!

 

first of all, 这一切发生在drupal 6

一下这段代码是在模块里写的一段HTML。。。。在 .module 里指定的一个.inc里面

function subscribe_form() {
global $user;
if (!$user->uid){ ?>//判断没登陆的话显示登录框
     <h1 class="title">Login to emagazine</h1>     
    <br><br>
	<div class="sub">Please login or <a href="/user/register">register</a> to access the latest Oil and Gas Technology Emagazine.</div>
	<br>  
<?php
//这一句是可以调出登录窗口
 return user_login(&$form_state);

//之前用下面这两句连窗口都跑到最顶上去了
/*$_GET['q'] = 'user/login';
print drupal_get_form('user_login');*/
}
//判断如果登录并数据库里找得到这个人名的话跳转到其他页面	
elseif(db_query('SELECT user_name FROM {subscribeIN} WHERE user_name = %d', $user->uid)){
header('location:/subscribe-download');
}
else{
//最后登录过后没有名字在数据库的话填写表单,else这里是打印表单
 }
}

 

我就是很不解为什么会把这东西显示到最顶上,好像是先运行了这东西才调用主题模板。

按理来说不是这东西是在主题模板里面<?php print $content; ?> 才跑出来的么,print $content;  在主题模板里面不是div定好位置的了么,怎么会跑到出来。 试过把这段html变成return echo 出来,不过问题依旧。

请问如何修改,想在module内为某个页面加点特定的内容,是这样做么,直接写到.inc 函数里面?

在顺带问一下那个数据库elseif的判断,似乎总是为真(不管有数据表里有没有username)怀疑db_query 可以抽取到一些数组名啊什么的所以就总是真了。我应该用哪个函数呢?

 

非常感谢。要过年了,耶~~~

4 个回答

赞成!
0
否决!

这个很显然。

drupal_get_form调用subcribe_form,碰到打印语句,就会打印出来,至于其他内容,其实是作为一个结构数组给drupal_get_form去生成html语句,碰到print才会打印出来。

 

至于sql语句,我对d6不熟悉,至少,user_name = %d, %d代表什么?

赞成!
0
否决!

据说这样是为了防恶意注入具体为嘛我也不知道

赞成!
0
否决!

哪有你这样html 配合 php 写模块的。这是很不好的,你如果真的要输出html,也请把这字符串保存在 一个变量里面输出啊。

赞成!
0
否决!

谢谢诗人,新手嘛,一时神经错乱

 $form['help8'] = array(
 '#type' => 'markup',
    '#value' => '<h1 class="sub">'.t('Please login or ').'<a href="/user/register">'.t('register').'</a>'.t('to access the latest Marine Offshore Technology emagazine.').'</div>'.'<br>');	

 

搞掂了