【问题标题】:Add Link Field in Template in Drupal 6 with CCK使用 CCK 在 Drupal 6 中的模板中添加链接字段
【发布时间】:2011-06-06 04:15:53
【问题描述】:

晚上好,

我正在使用 Drupal 6、CCK 模块和链接字段类型。全部安装并激活。

我创建了一个名为 Slider 的自定义内容类型。用户可以上传图像、标题和预告片。我为该滑块内容类型创建了一个自定义字段,以及一个名为 Link 的字段名称为:“field_link_test”。

我创建了一个条目,填写了所有数据,包括该链接字段类型的 URL,然后单击“保存”。在views-view-table--slider.tpl.php中,我添加了:

 <a href="<?php print $node->field_link_test[0]['url'] ?>">Learn More</a>

但是在前端,除了那个链接,所有的东西都显示出来了。我还尝试清空 Drupal 缓存。

有什么想法吗?

更新下面的模板代码,一切正常,除了新的链接值什么都不输出。

<div id="slider">
<div class="slider-holder">
    <?php foreach($rows as $row): ?>
    <div class="slide">
        <?php print $row['field_image_fid'] ?>
        <div class="info-slide">
            <h2><?php print $row['title'] ?></h2> 
            <p><?php print strip_tags($row['teaser']) ?></p>
            <a href="<?php print $node->field_link_test[0]['url'] ?>">Learn More</a>
        </div><!--INFO-SLIDE-->
    </div><!--SLIDE--> 
    <?php endforeach ?>
</div><!--SLIDER-HOLDER-->
<div id="control">

</div>
</div><!--SLIDER-->

【问题讨论】:

    标签: drupal drupal-6 themes cck drupal-themes


    【解决方案1】:

    简单的可能性(您可能已经检查过,但只是为了让它们不碍事):

    • 您需要在用户管理 - 权限中允许匿名/经过身份验证的用户查看该字段

    否则,如果没有一些代码进行分析,就很难判断。你能发布你的整个views-view-table--slide.tpl.php,如果可能的话,你的导出视图或导出视图的链接?

    编辑

    现在我有机会了解您的观点,我做了一些应该有所帮助的更改。

    您的链接 URL 未显示的原因是您在视图中包含“节点:链接”字段,而不是“内容:链接 (field_link_test)”字段。第一个只会链接回原始节点,而不是您的自定义链接。另外,我认为您不能从 views-view-table 调用 $node 变量(至少,当我打印它时我什么都没有得到。相反,您可以使用 $row 变量。

    我有一个模板版本,它在“link_test”字段中打印出带有“了解更多”标签的 URL。我将“了解更多”文本放在视图本身中,因为这样更易于编辑,并且与 Link CCK 类型配合使用效果更好(默认情况下,它希望添加您在节点编辑屏幕中添加的标题)。

    视图导出在这里:http://pastebin.me/0ed2942f6953cb00cab1bd5386058a13。您可以将其导入回您的站点,但您可能需要先克隆原始视图以进行备份,这样如果这不是您想要的,您可以使用旧版本。

    更新的 tpl 是:

    <div id="slider">
    <div class="slider-holder">
        <?php foreach($rows as $row): ?>
        <div class="slide">
            <?php print $row['field_image_fid'] ?>
            <div class="info-slide">
                <h2><?php print $row['title'] ?></h2> 
                <p><?php print strip_tags($row['teaser']) ?></p>
                <?php print $row['field_link_test_url'] ?>
                <?php //print_r($row); ?>
    
            </div><!--INFO-SLIDE-->
        </div><!--SLIDE--> 
        <?php endforeach ?>
    </div><!--SLIDER-HOLDER-->
    <div id="control">
    
    </div>
    </div><!--SLIDER-->
    

    如果您有任何问题/疑问,请告诉我。

    【讨论】:

    • @heavymark,您可能没有启用 CCK 子模块内容权限。如果已启用,您应该会看到为各个字段设置权限的选项。 hross 建议将一些测试代码添加到您的views-view-table--slide.tpl.php 中,这将帮助您至少了解 tpl 是否被拾取。您也可以随时打开您的视图并点击“主题:信息”以查看您的主题文件是否正在被读取,以消除您的主题文件未被包含的可能性。
    • 启用了这个新字段的内容权限和视图,但仍然没有运气。模板确实可以正常工作并显示幻灯片,它只是这个不起作用的字段。添加“var_dump($node)”返回,“NULL”。
    • 在模板文件中使用print_r($rows);能看到字段吗?
    • 不,它说,“Array ( [0] => Array ( [title] => Test Title [field_image_fid] => "
    • @heavymark,是否可以导出视图并与http://pastebin.me 之类的工具共享?如果不看内部,很难知道发生了什么。
    【解决方案2】:

    您确定模板正在被拾取(在 href 上方添加 &lt;p&gt;heavymark&lt;/p&gt;... 它会显示吗?)?

    如果出现上述情况,请在锚标记上方添加 var_dump($node) 并发布输出,以便我们更好地了解其中的内容(您可能希望启用 XDebug 以便获得更好的格式化输出,如果它尚未开启)。

    【讨论】:

      【解决方案3】:

      确保将链接字段添加到字段部分的视图中。这应该允许它在您的模板文件中进行主题化。如果您仍然没有看到它,请尝试使用

      print_r($rows,1);

      或 print_r 的某个变量来查看所有可用于主题的行。

      【讨论】:

      • 所以在视图 > 滑块项 > 在字段下 > 我能够添加新的链接字段。现在,用于在我的模板中呈现该 url 的代码是什么?这不起作用: field_link_test[0]['url'] ?>
      • 另外,在该视图部分中,该字段的 id 是“field_link_test_url”,所以我尝试添加“_url”,但模板中仍然没有显示。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多