在短路中使用令牌和/或替换模式 -- tokens 领域 drupal 相关 的问题

Use Tokens and/or Replacement Patterns in Shortcodes


0
vote

问题

中文

寻找一种向短码添加令牌/替换模式的方法。

例如,根据其他因素创建不同文本和链接的按钮 - 类似于以下内容:

[按钮链接="MySite / [URL替换模式]" Text ="[标签替换图案]" ] [/按钮]

我需要这样做的主要原因是我正在使用视图字段视图和希望用自定义按钮替换空字段,当视图为空时包含在"子视图" 中,这需要不同,这取决于"子视图" 中应该是什么 - 我正在使用全局短路:文本区域在没有结果行为(如果是有意义)

除非当然,任何人都知道另一种实现相同结果的方法。

英文原文

Looking for a way to add a token/replacement pattern into shortcode.

For example, creating a button where different text and link is required depending on other factors - something like the following:

[button link="mysite/[url replacement pattern]" text="[label replacement pattern]"][/button]

The main reason I need to do this is that I'm using view field views and want to replace an empty field with a custom button, contained in the 'sub view' when the view is empty, which needs to be different depending on what should be in the 'sub view' - I'm using shortcodes in with Global: Text Area in the No Results Behaviour (if that makes sense)

Unless, of course, anyone knows another way to achieve the same result.

  

回答列表

0
 
vote
好的,似乎有一些有限的方法来做这一点,使用不包含在方括号内的可用替代模式。即%1 !1 ,但不是 [替换模式]

运气会有它,我需要的替代品是%1和!1值。

仍然 - 如果有人有任何想法如何在短路中使用Square括号的替换模式,而不关闭短码(这是可能发生的事情)。

 

Ok, seems there are some limited ways to do this, using available replacement patterns that are not contained within square brackets. i.e. %1 and !1, but not [replacement pattern]

Luck would have it, the replacements I need are the %1 and !1 values.

Still - would be great if anyone had any ideas how to use square bracketed replacement patterns in shortcodes without closing the shortcode (which is what appears to happen).

 
 
0
 
vote

您可以使用令牌筛选器,它将添加一个文本格式过滤器以进行令牌更换。他们只是需要确保令牌过滤器将在中的短码之前运行。更具体地说:

  1. 安装令牌筛选器
  2. 转到 admin/config/content/formats
  3. 单击"配置" 以获取您使用的文本格式。
  4. 使得令牌替换和"启用过滤器" 下的短路滤波器
  5. 在"滤波处理顺序" 下,确保令牌替换之前的短片子

这将确保在解析短路之前将更换令牌,因此将按预期工作。

奖金:

如果您使用的是任何类型的可视短路,则添加 [ ] 内容很可能会混淆编辑器(在我的情况下,它们被<代码替换为<代码> |LS| 和 |RS|分别)。

在这种情况下,您可以设置预渲染挂钩,您可以在其中更改这些特定字符串(或者您可以使用的任何其他字符串,例如,您可以使用它),例如,对于块,它可能是这样的东西(对于drupal 8)

  /**  * Implements hook_entity_view_alter().      */ function my_module_entity_view_alter(array &$build, DrupalCoreBlockBlockPluginInterface $block) {   $build['#pre_render'][] = 'my_module_replace_token_wrappers'; }  function my_module_replace_token_wrappers(array $build) {   // Get the body   $body = &$build['content']['body'][0]['#text'];   // Replace the values of |LS|/|RS| with [] respectively   $body = str_replace('|LS|', '[', $body);   $body = str_replace('|RS|', ']', $body); }   
 

You can use Token filter which will add a Text format filter for token replacement. They you simply need to make sure the Token filter will run before the Shortcode one. More specifically:

  1. Install Token filter
  2. Go to admin/config/content/formats
  3. Click "Configure" for the text format you are using.
  4. Enable the Token replacement and the Shortcodes filters under "Enabled Filters"
  5. Under "Filter processing order" make sure that Token replacement precedes Shortcodes

This will ensure that the tokens will be replaced before the shortcodes are parsed and will therefore work as expected.

Bonus:

In case you are using any sort of Visual Shortcodes, adding [ or ] as content will most likely confuse the editor (in my case they were replaced with |LS| and |RS| respectively).

In that case you can set up a pre-render hook where you can change back those specific strings (or any other you might use to wrap tokens with), e.g. for blocks it could be something like that (for Drupal 8)

/**  * Implements hook_entity_view_alter().      */ function my_module_entity_view_alter(array &$build, \Drupal\Core\Block\BlockPluginInterface $block) {   $build['#pre_render'][] = 'my_module_replace_token_wrappers'; }  function my_module_replace_token_wrappers(array $build) {   // Get the body   $body = &$build['content']['body'][0]['#text'];   // Replace the values of |LS|/|RS| with [\] respectively   $body = str_replace('|LS|', '[', $body);   $body = str_replace('|RS|', ']', $body); } 
 
 

相关问题

0  获取内容页面字段值  ( Get content page field value ) 
我有一个内容页面包含三个字段。数字A:B号和总​​数。在"添加内容" 页面期间,我填写A:20和Number B:30。如何让总数自动显示20 + 30 = 50? ...

0  将用户重定向到动态URL  ( Redirect user to dynamic url ) 
我正在编写一个自定义规则,我不知道如何接近重定向的正确URL。 我有一个页面 - 网址:content/newslettivity-001,需要将匿名用户重定向到网站/content/actity-001,直到它们登录。 我在"通讯 - 活动-001" 中有一个参考字段,将标题保持为"Activity-001" 。我...

1  如何调试商务订单评论令牌不扩展消息?  ( How do i debug commerce order comments token not expanding in message ) 
使用Commerce消息。 令牌[消息:邮件 - 商业单位:field_order_comments]已开始到 - 不扩展。 IE。有时它会呈现为预期,但有时候没有。当Error_log中没有错误时。 我读到了一些令牌,一个将下划线更改为破折号。即。 [message:message-commerce-orde...

0  使用地址令牌查看  ( Use address tokens in view ) 
在视图显示中,我尝试仅显示客户的名字。通过标准 addressfield收集信息。在可用的"替换模式" 中,没有在 addressfield.tokens.inc 中创建的令牌。 这是添加功能的线程: https://www.drupal.org/node / 1188778 字段的名称为 commerce_cu...

1  如何在使用PHP过滤器时使用视图替换模式?  ( How to use views replacement patterns while using the php filter ) 
在视图中,当使用标准文本格式化器时,您可以将替换令牌(如 [title] )放入HTML代码中,或者在重写或在这种情况下在这种情况下全局文本进行Drupal渲染。 在这种情况下,我有一个节点字段,机器名称 field_story_url 在视图中使用。我的PHP函数的一部分要求我定义该字段中找到的内容,以便使用PH...

2  在块标题中使用令牌  ( Using token in block title ) 
我想使用令牌来在块标题中显示用户名。但它不起作用。 我尝试过[用户:name] 谢谢在Advacne ...

4  令牌造成错误的文本替换[关闭]  ( Tokens causing incorrect text substitutions ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,仅通过编辑此帖。 关闭 5年前。 ...

0  使用[Current-Page:查询:疑称,重定向到WebForm提交的另一页  ( Redirect to another page on webform submit using current pagequery token ) 
我正在尝试将WebForm配置为在提交后通过包括URL中的重定向位置后重定向到另一个页面: http:// mysite / content / barb?destinational = content / discus < / p> 根据WebForm,有一个令牌 [current-page:query:?]...

1  什么可能导致我的问题在规则中访问用户变量?  ( What might be causing my problem to access user variables in rules ) 
我使用模块规则链接事件触发基于访问路径的规则。问题我在条件下,我需要使用用户变量,而是没有定义错误 - 变量用户。如果我尝试php条件和使用 PHP Fatal error: Call to a member function get() on a non-object in /var/www/drupal8/co...

4  URL别名,令牌替换0S和1S,带有节点和实体[重复]  ( Url alias tokens is replacing 0s and 1s with node and entity ) 
这个问题已经在这里有一个答案: 令牌造成错误的文本替换[关闭] (1答) ...

0  从当前页面的URL抓取节点ID?  ( Grab node id from url of current page ) 
如何在当前页面的URL中获取节点ID并通过链接传递它? 1)当前页面上的URL格式:Website.com/parameter/Parameter/Parameter,第三个参数是节点ID。 2)我想抓住该节点ID并将其放入那个页面上的链接,如链接 屏幕捕获说明了这一点。 屏幕捕获 ...

0  使用菜单令牌(或类似?)来在OG组页面上创建“邀请用户链接”  ( Using menu tokens or similar to create invite user link on og group page ) 
我是新的令牌,但计划使用菜单令牌创建一个简单的菜单,允许组管理员轻松邀请用户而不进入组管理菜单。 邀请成员的默认有机组(7.2x)链路是: http://www.example.org/group/node/gid/admin/people/invite-users 作为组ID(GID)与节点ID(NID)相同,...

0  如何在过滤的文本字段中使用令牌  ( How to use tokens in a filtered text field ) 
在drupal中,创建一个字段时,有选项"文本处理" 。您可以选择"纯文本" 或"过滤文本" 。 当我创建一个具有"过滤文本" 的字段时,我无法将其用作令牌。 例如,在我的内容类型"content_page" 上,我有一个名为"intro_text" 的long_text字段。 "文本处理" 设置为"过滤文本" 。...

1  如何使用规则发送包含一个节点列表列表的电子邮件?  ( How to use rules to send an email containing a list of nodes with a selected val ) 
我尝试通过规则模块。 这就是我到目前为止的内容: 事件:"更新了mycontenttype类型的现有内容" 条件:"参数:要比较的数据:[node:field-status],数据值:sendmail" 动作: "参数:实体类型:节点,属性:状态,值:[node:field-status],限制...

1  如何将WebForm内容的电子邮件发送到当前页面作者电子邮件“令牌[当前 - 页:node:author:mail]不再工作”  ( How to email the webform content to current page author email token current pa ) 
我有一个内容类型主题,以及网络从"联系人" 为仅用于主题内容类型的块。 任何注册用户都可以创建主题,我希望使用Web Frim联系主题作者。 在过去,我在Web文件中有一个隐藏的字段,带有令牌[当前 - 页:节点:作者:mail]将WebForm信息发送到当前页面作者电子邮件"主题作者" 。 在将WebFrom更新到...

0  如何从令牌显示的结算信息中删除'div'和'span'的标记  ( How to remove markups of div and span from the billing info displayed throug ) 
我正在尝试在订单确认电子邮件中添加令牌进行计费信息。令牌是其工作,但也显示了'div'和'span'的标记。什么让我感到惊讶的是同一封电子邮件中的所有其他令牌工作正常,并且不显示任何标记UPS,但问题仅在结算信息配置文件中与字段类型的令牌?"邮政地址" 这些是我使用的两个令牌: [消息:消息 - 商业单位:Com...

0  正在使用[当前 - 页面:查询:service_name]令牌免于SQL注入?  ( Is using current pagequeryservice name token is safe from sql injection ) 
我正在使用[当前 - 页面:查询:service_name]令牌在我的项目中获取从URL的参数进入数据库(使用WebForms和令牌)。 我正在寻找代码来检查是否有某种卫生症,但我找不到一个......我需要知道它是否安全使用它,而不担心SQL注入,如果它是不安全,我想以及如何用某种preg_replace句子消毒这...

0  使用令牌插入自定义HTML  ( Inserting custom html using tokens ) 
我正在尝试通过将自己的静态HTML内容添加到某种形式的可重复使用的令牌中来减少重复编码,这些标记可以在正则代码中添加到页面机构中,但找不到方法。这是我正在寻找的: 所需内容将插入页面 menu_get_object('node', 1, $path)3 令牌的想法将此插入页面 menu_get_o...

1  如何通过邮件而不是密码重置URL获取新密码(忘记密码)  ( How to get new password by mail instead of password reset url forgot password ) 
当我们单击"忘记密码" 并输入电子邮件ID时,Drupal将通过邮件发送密码重置URL。 但是,可以通过电子邮件而不是URL发送任何随机密码? 我已检查注册密码令牌,但这将有助于仅对新的用户注册。 是否有任何模块可用? ...

0  获取分类列表中的项目  ( Get an item in a list of taxonomy ) 
你好Drupal社区, 我正在创建一个与"社论" 链接的菜单。我创建了一个名为"edito" 的分类系统,并创建了标记为此分类的文章(内容类型)。 我需要在菜单中恢复标记的最后一篇标记标记的该分类物作为链接(请参阅附加图像)。有没有人知道如何实现这一目标? 谢谢, ...




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


Licensed under cc by-sa 3.0 with attribution required.