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

page.tpl.php和node.tpl.php怎么写

赞成!
0
否决!

1. 想要修改主页的某一元件应该怎么做?审查元素是可以但是修改无法保存。。我把源代码拷进"page--front.tpl.php"再修改,但是发现一个坑爹的问题:管理员、一般用户和游客看到的主页是一样的。。怎么才能让其他部分保持默认值只修改想修改的地方?

 

2. node--(nid).tpl.php里面列出的变量怎么用?比如说"$promote"这个参数。。另外一个node.tpl.php怎么调用其他node的状态参数?比如:

if(node1 is submitted) {node2改为unpublished(或node2->$promote = 0)}

以上语法均不知道。。求教!谢谢了~

6 个回答

赞成!
0
否决!

1,看不懂意思,uysses 你详细点说明下。

 

2,变量就是随便用,可以 print, 也可以作为条件。每个变量的作用都列出来的。

如:$is_front: Flags true when presented in the front page. 看说明就知道返回 true 或者false,判断当前页是不是首页

例子:

1
if($is_front){print "你在首页";}

 

还可以判断是否管理员:

1
if($is_admin){print "你是管理员";}

 

而你说的 published,是$status 控制的。 详细的可以看说明

赞成!
0
否决!

1. 主页的源代码不是应该包含了每一个元素的信息吗?但是page--front.tpl.php(从page.tpl.php拷贝得到)里面为什么只有很少的语句?比如说我想对一个id=1的元件进行改写,应该怎么办?(该主页源代码的话,直接找到<div id="1" ...修改就可以了,可是drupal里面这些东西在哪里呢?)

 

2. 我的问题是,如果在node--2.tpl.php里,node1的信息怎么表示?比如说一个if语句,条件是node1已被提交过(似乎没找到is_submitted之类的变量),执行部分是使node2在主页显示,应该怎么写?

 

赞成!
0
否决!

sorry, 还是看不太懂,

 

1. 主页的源代码不是应该包含了每一个元素(这个元素是指什么)的信息吗?但是page--front.tpl.php(从page.tpl.php拷贝得到)里面为什么只有很少的语句(page--front.tpl.php 是继承了page.tpl.php 的所有东西,换句话说,如果page.tpl.php 有的, page--front.tpl.php 应该也有,你测试多下)?比如说我想对一个id=1的元件进行改写,应该怎么办?(该主页源代码的话,直接找到<div id="1" ...修改就可以了,可是drupal里面这些东西在哪里呢?)(这个说的太笼统,每个东西都有他不同的生成方式,有些是静态的,直接写在代码里面的,有的是动态获取的,写在page--front.tpl.php 的变量里面,也有可能是写在node.tpl.php 里面的。所以这个问题很难解答,太太笼统了。需要具体点。)

2. 我的问题是,如果在node--2.tpl.php里,node1的信息怎么表示?比如说一个if语句,条件是node1已被提交过(似乎没找到is_submitted之类的变量),执行部分是使node2在主页显示,应该怎么写?

node--2.tpl.php 只能控制 node/2 这页的显示,对于node/1是无法做操作的,如果你要在node/2做node/1的连接,这是可以的,如果你需求是这样,可以试一下这些模块: Similar By Terms,或者是 Relevant Content,或者是 Similar Entries

赞成!
0
否决!

嗯抱歉。。我是新手所以还不太明白drupal的结构。。这样吧举个栗子:

 

1.这是从frontpage的网页源代码里截出来的,我对这一段进行代码修改就能改变网页上“node1”的显示效果:

</div>
<div id="node-1" class="node node-webform node-promoted node-teaser clearfix" about="/smsstudy/?q=node/1" typeof="sioc:Item foaf:Document">

        <h2 property="dc:title" datatype="">
      <a href="/smsstudy/?q=node/1">Prestudy-child</a>
    </h2>
   
      <div class="meta submitted">
            <span property="dc:date dc:created" content="2012-07-08T23:11:24+00:00" datatype="xsd:dateTime" rel="sioc:has_creator">Submitted by <span class="username" xml:lang="" about="/smsstudy/?q=user/1" typeof="sioc:UserAccount" property="foaf:name">ulysseschen</span> on Sun, 07/08/2012 - 23:11</span>    </div>
 
  <div class="content clearfix">
    <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>This survey is for diabetes research related to SMS/Text messaging. We will use this survey to understand your diabetes and use of technology better. Please answer the following questions as best you can. If you need help, ask a researcher to help you. All of your responses are confidential.</p>
</div></div></div>  </div>

      <div class="link-wrapper">
      <ul class="links inline"><li class="node-readmore first last"><a href="/smsstudy/?q=node/1" rel="tag" title="Prestudy-child">Read more<span class="element-invisible"> about Prestudy-child</span></a></li>
</ul>    </div>

 

但是这些内容在page--front.tpl.php里找不到啊。。我应该去怎么做呢?

 

我之前的做法是用网页源代码直接把page--front.tpl.php的所有内容给替换了再改,但是那样做有问题(frontpage被固定死了,不管游客还是管理员登陆以后都是一样的界面)

 

谢谢!

赞成!
0
否决!

再具体点,比如说我想把node1在主页的显示标题变为鼠标悬停弹出菜单,于是写了一个js函数xxx(para)加到这一段里面,然后把上面那段程序的第二行

<div id="node-1" class="node node-webform node-promoted node-teaser clearfix" about="/smsstudy/?q=node/1" typeof="sioc:Item foaf:Document">

改成

<div id="node-1" class="node node-webform node-promoted node-teaser clearfix" about="/smsstudy/?q=node/1" typeof="sioc:Item foaf:Document" onmouseover="xxx('yyy')" onmouseout="xxx('yyy')">

 

虽然想这么干但是找不到这段代码被drupal放在哪儿了。。

赞成!
0
否决!

已解决。谢谢诗人~