在将其输出在模板文件中时如何替换URL字段中的字符串 -- 7 领域 和 entities 领域 drupal 相关 的问题

How to replace a string in a URL field when outputting it in a template file


2
vote

问题

中文

我为URL创建了一个新字段。在将字段输出到字段时替换URL中某些字符串的最佳方法是什么 - Field_URL.TPL.php文件?

例如,在 http://example.com/master/m/ 我需要删除"http://" 部分,并将 Master 替换为从属

是一个字段;没有 foreach() 循环。

====使用preprocess ===进行编辑 我有一个未定义的索引:field_url

与devel我得到这个

  field_url    und      0        value   

我放入预处理

  $link = $variables['field_url'][LANGUAGE_NONE][0]['value'];  $link = str_replace('http://', "", $link);  $link = str_replace('master', 'slave', $link);  $variables['link'] = $link;   

是正确的吗?

======整个钩子=======

  function lessxless_preprocess_field(&$variables) {      $link = $variables['field_url'][LANGUAGE_NONE][0]['value']; // grab value      $link = str_replace('https://', "", $link); // trim http://      $link = str_replace('master', 'slave', $link);      $variables['link'] = $link; }  sites/all/themes/lessxless/template.php   
英文原文

I created a new field for URL. What would the best way to replace certain strings in the URL when outputting the field into the field--field_url.tpl.php file be?

For example, in http://example.com/master/m/ I need to remove the "http://" part, and replace master with slave.

It is a single field; there will be no foreach() loops.

==== edit after using preprocess === i got a undefined index: field_url

with the devel i get this

field_url    und      0        value 

i put in the preprocess

$link = $variables['field_url'][LANGUAGE_NONE][0]['value'];  $link = str_replace('http://', "", $link);  $link = str_replace('master', 'slave', $link);  $variables['link'] = $link; 

is this right?

====== entire hook =======

function lessxless_preprocess_field(&$variables) {      $link = $variables['field_url'][LANGUAGE_NONE][0]['value']; // grab value      $link = str_replace('https://', "", $link); // trim http://      $link = str_replace('master', 'slave', $link);      $variables['link'] = $link; }  sites/all/themes/lessxless/template.php 
     

回答列表

3
 
vote
vote
最佳答案
 

你可能想要一个 preprocess函数在你的template.php中。在您的情况下,hook_preprocess_field()将最容易使用 - 有关如何实现这一目标的示例,请查看 template_preprocess_field()。

记住,$变量通过引用传递到预处理挂钩。从您的hook_preprocess_field(),而不是直接修改现场数据(如果您需要其他位置),检查您在检查正确字段中是否操作后可以执行此操作:

  /* devel's dpr() is handy for seeing where in the $variables array it lives if you     don't have a debugger handy. If you see 'und', that's the value for the LANGUAGE_NONE    constant. It's considered best practice to use the constant instead. */ $slave_link = $variables['field_url'][LANGUAGE_NONE][0]['value'];   $slave_link = str_replace("http://", '', $slave_link); // Trim http:// $slave_link = str_replace("master", "slave", $slave_link); // s/master/slave $variables['slave_link'] = $slave_link;  /* You can now access this variable from your                                             field--field_url.tpl.php as $slave_link */   

您也可能需要清除您的缓存在进行这些更改后。

 

You probably want a preprocess function in your template.php for this. In your case, hook_preprocess_field() will be easiest to work with - for an example of how this is implemented, check out the API documentation for template_preprocess_field().

Remember, $variables is passed into preprocess hooks by reference. From within your hook_preprocess_field(), instead of modifying the field data directly (in case you need it elsewhere), you could do something like this after checking that you're operating on the right field:

/* devel's dpr() is handy for seeing where in the $variables array it lives if you     don't have a debugger handy. If you see 'und', that's the value for the LANGUAGE_NONE    constant. It's considered best practice to use the constant instead. */ $slave_link = $variables['field_url'][LANGUAGE_NONE][0]['value'];   $slave_link = str_replace("http://", '', $slave_link); // Trim http:// $slave_link = str_replace("master", "slave", $slave_link); // s/master/slave $variables['slave_link'] = $slave_link;  /* You can now access this variable from your                                             field--field_url.tpl.php as $slave_link */ 

You may also need to clear your cache after making these changes.

 
 
         
         

相关问题

0  node_type_get_type()和hook_uninstall()  ( Node type get type and hook uninstall ) 
我有一个job_post模块,它定义了"Job_Post" 内容类型。 在此模块中,我有 hook_unistall() ,它调用 node_type_delete()删除该内容类型。 卸载后,我从注释模块中获取以下错误: 注意:尝试在commend_node_type_delete()中获取非对象的属性(.......

2  如何导入UserPoints?  ( How to import userpoints ) 
用户点模块尚未迁移集成。 看着API我可能会使用 userpoints_service_add 为批处理脚本中的每个用户分配"起始点" 值。 是否有一个选项可以在我上线时更新用户的"起始点" 值?或者我必须计算差异,只需添加调整? ...

0  在新迁移的站点上调用未定义的函数字段_attach_load()  ( Call to undefined function field attach load on a newly migrated site ) 
我将一个站点移动到另一个服务器以测试。 我收到以下错误: 在第320行中调用未定义的函数字段_attach_load()在第320行(第320行)中包含/实体。 如果我尝试访问 http://www.example.com/randomstuff ,我得到了这个 错误: 致命错误:调用undefined函数u...

3  停止在Drupal 7中显示生产服务器中的错误  ( Stop displaying errors in production server in drupal 7 ) 
如何停止Drupal显示不必要的错误? 我正在将我的drupal 7站部署到生产服务器,我想停止显示通用错误。 编辑: 我发现了关于显示在这个链接: <?php error_reporting(-1); $conf['error_level'] = 2; ini_set('display_...

1  如何在视图中渲染第一个节点会导致不同的视图模式?  ( How render first node in views result in different view mode ) 
目前,我使用 context 处理它。在调用 views_embed_view之前,我在 context中设置了一个变量和 node.tpl.php 首先结果我取消了这个变量... 有没有更好的方法来处理它?<​​/ p> ...

1  如何检索具有特定角色的用户尚未注释的节点列表  ( How to retrieve a list of nodes not already commented by a user with a specific ) 
我正在尝试制作一个管理视图(仅对角色= superator可见),只需列出我网站中没有任何主持人评论的所有节点。 请注意,我不要求向零评论显示所有节点,但列出了具有主持人角色的用户尚未评论的所有节点。 提前谢谢你帮助我。 ...

2  嵌入两个上下文过滤器(用户ID和分类学期)的视图  ( Embed a view with 2 contextual filters user id and taxonomy term ) 
我正在研究一个过滤的块视图,我想从模板设置一个额外的参数。 现在我有一个页面,其中一个网址如下: http://www.page.com/放置/测试 "test" 是一个节点(nodetype1),我已经使用上下文过滤器来获取用户ID表单"test" 以仅通过节点"测试" 的用户仅过滤节点(类型"nodetype2...

0  “再次”AJAX呼叫多个节点在一页上添加表单  ( One more ajax call for multiple node add forms on one page ) 
我想要一个页面,初始节点添加表格(小尺寸),标题行和身体textarea 3x20尺寸; 和一个按钮"再用" AJAX呼叫,以显示另一个表单加上另一个按钮等。 当然,提交按钮始终在底部。 所以问题是...哪个模块? :)我几乎无法找到搜索条款! 更新:我想添加,这个任务似乎经常使用和模块化,所以我认为它会有一个模...

3  如果登录从登录块失败,则重定向到登录页面?  ( Redirect to login page if login fails from a login block ) 
我有一个登录表单块,当用户无法登录网站时,我想用常用的错误消息将他重定向到用户/登录页面 ...

1  节点标记为多个分类系统,如何保持扩展的特定分类菜单用户已习惯到达节点  ( Node tagged with more than one taxonomy how to keep expanded the specific taxon ) 
我有与多个分类词汇相关关联的节点,因此可以以不同方式列出/达到相同的节点,例如: 品牌&gt;家庭线&gt;型号&gt;节点 角色&gt;类别&gt;节点 e.g。 法拉利&gt;顶级豪华&gt; testarossa&gt;节点&gt;节点-A 汽车&gt; Supercars&gt;节点&gt;节点-A 通...

0  在以编程保存的节点列出时,视图不会使用Pathauto URL别名  ( Views will not use pathauto url alias when listing programatically saved nodes ) 
我正在编程地保存节点,一切正常工作正常。 Pathauto也正好工作,并根据我的URL别名配置生成别名。 但是,当视图创建新节点的列表时,它使用节点/ XX而不是现有的URL别名。任何人都知道为什么可以发生这种情况?所有缓存已被清除,Cron Ran等。这是代码 $node = new stdClass(); ...

0  从URL列表中加载图像的快速方法  ( A quick way to load images from a list of urls ) 
使用媒体文件选择器窗口小部件可以从Web添加图像,而无需先将其下载到桌面。 但如果您有图像URL列表,它会很快得到乏味。 从本地驱动器添加多个图像,有一个很好的Plupload模块。但是如何方便地加载远程文件? ...

10  file_scan_directory()需要大约10秒才能执行  ( File scan directory takes about 10 seconds to execute ) 
使用xhprof我注意到 file_scan_directory() 在前页加载时需要超过10秒才能执行。为什么要花这么长时间? 这是XhProfile的输出: ...

1  如何为视图创建“添加项”上下文链接?  ( How to create an add item contextual link for views ) 
我喜欢 d7 当然,我可以将"添加项目" 按钮添加到视图的页脚中。但我需要仅向有适当许可添加项目的用户来展示它。 是有一种惯用的方式做呢? ...

1  如何按照特定节点类型的节点的数量在视图中排序用户?  ( How to sort users in a view by the number of nodes authored of a specific node t ) 
我很高兴地发现,在views 3我可以通过他们撰写撰写的节点的数量(使用关系"用户:content unitered" 和聚合/'组)来对用户进行排序,请参阅这里)。 如何执行相同的操作,但仅计算某个节点类型的节点? (我实际上在概要文件的视图中使用它(Profile2),但使用关系"配置文件:用户UID" 解决方案...

1  如何允许用户在注册时选择他们的语言?  ( How can i allow the user to choose their language upon registration ) 
有一个解决方案用于在此处在Drupal 6中显示用户/寄存器表单上的站点语言选择字段: https://stackoverflow.com/问题/ 5556895 / how-to-and-language-switcher-in-mess-register-form-in-drupal-6 但是,我个人无法将...

0  在图像样式预设名称中使用数字的风险是多少(D6中的ImageCache)  ( What is the risk of using number in image style preset name imagecache in d6 ) 
在需要写入预设名称下面有一条消息。它不建议我们编写数字: The name is used in URLs for generated images. Use only lowercase alphanumeric characters, underscores (_), and hyphens (-). ...

0  Drupal 7:如何翻译我创建的复选框的内容?  ( Drupal 7 how do i translate the content of a checkbox i created ) 
我有一个多乐曲网站,内容翻译工作。现在我添加了一个内容类型并使用了新字段的复选框/达到按钮字段。如何翻译此类字段的内容。 让我们说我放入性别男性|男性女性|女性现在我有西班牙语,并希望展示西班牙语文本。我该怎么做? 我发现有人建议我不得不使用php字段,但我甚至没有在那里看到一个php字段,虽然模块在其他地方工作,但...

0  在成功Ajax提交后,如何清除已渲染“Drupal消息”? [复制]  ( How to clear already rendered drupal messages after successful ajax submit ) 
这个问题已经在这里有一个答案: 关闭 9年前。 可能的重复: 删除tabledrag状态ajax提交 后,ajax提交和显示状态消息 我有一种自定义表单,将节点的"权重" 保存到自定义表中。表...

0  使用QueryPath和节点  ( Working with querypath and nodes ) 
即时尝试使用我的节点使用QueryPath模块,而不是很有运气。我有这个代码,我尝试将它应用于我的node.tpl文件,但它只崩溃该网站。 我是我使用这个错误的吗? global $base_root; $path_url = $base_root . request_uri(); $qp = qp($path...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.