前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Genesis框架从入门到精通(10): 样式函数

Genesis框架从入门到精通(10): 样式函数

作者头像
丘壑
发布2019-03-13 10:05:47
5410
发布2019-03-13 10:05:47
举报
文章被收录于专栏:一丘一壑

原文

Genesis Explained Formatting Functions

In the previous post of the Genesis Explained series I touched on a few functions after explaining very quickly what was in each of the files in the functions folder…

Designs By Nick the Geek
Designs By Nick the Geek

Designs By Nick the Geek

译文

Genesis Explained系列的上一篇文章中,我们快速的了解了函数文件夹中每个文件的内容,简单介绍了一些函数。我们以后再讲admin.php文件(注:此文件在Genesis1.8.0 以后已经废弃),deprecated.phpfeed.php就不讲了。不要使用deprecated.php中的任何函数,且feed.php除了它能干的事情之外也没有多大用处。

这次我们看一下formatting.php。如果你看过前一篇文章,应该还记得,该文件主要关注文本的样式处理。不是所有函数都可以被使用,我将带你深入研究其中的几个。以下是Genesis 1.6中该文件的所有函数的列表(注:依据Gensis2.8更新)

  • genesis_truncate_phrase()
  • get_the_content_limit()
  • the_content_limit()
  • genesis_rel_nofollow()
  • genesis_strip_attr()
  • genesis_tweet_linkify() (注:Genesis 2.0.0 后废除)
  • g_ent()(同上)
  • genesis_formatting_allowedtags()

它们都是干啥的,怎么用呢?

genesis_truncate_phrase($phrase, $max_characters)

该函数本质上是给genesis_get_content_limit()使用的辅助函数。它有两个必需的参数。 $phrase是要限制的文本,$max_characters是允许的最大字符数。在你在想要限制文本长度的时候可以考虑使用它。例如,我有一个客户,他在自定义菜单上放了一个下拉菜单,里面带了缩略图和标题。虽然标题可以会很长,所以如果太长的话(谁真的超过需要100多个字符的标题?),就不得不截断标题。代码如下

代码语言:javascript
复制
echo genesis_truncate_phrase( get_the_title(), 100 );

get_the_content_limit( $max_characters, $more_link_text = ‘(more…)’, $stripteaser = false )

该函数可以返回限定过长度的内容。另一个函数the_content_limit()作用相同,但是会自动把内容打印出来,能节省一点代码量。这两个函数最多接受3个参数。第一个$max_char是必需的,用于设置从多少个字符后开始裁剪内容,即保留多少个字符。后两个是可选的,如果没有传递,则是默认值。 参数$more_link_text是显示“更多…”链接的几个字的文本,默认为“more…” teaser是<!--more-->标签之前的内容,$stripteaser默认是false,不会输出任何内容。

该函数使用get_the_content()获取内容,然后删其中的html标签。这很重要,虽然这可能会有些走样,但这样可以防止出错并提供准确的字符数统计。如果不这样做可能会导致的错误是html标签没有关闭。例如,如果你在文本被截断的位置中间正好有一个链接,那么这个链接可能就会出错。其他html元素也是如此。在标签清理完并且其他方面的准备也做完之后,就使用genesis_truncate_phrase对内容进行截断,然后构建一个“更多”的链接(如果有的话)。

第一个过滤器出现的在 “get_the_content_more_link”,通过它可以修改“更多”的链接文字。下一个过滤器“get_the_content_limit”允许你在返回内容限制之前更改最终输出,你可以使用它将其包在div中,在之后、之前甚至中间注入代码,或将$link移动到开头。 the_content_limit也是一个可以用于修改“the_content_limit”输出的过滤器。但是用the_content_limit将无法获取到的$content$link$max_char变量。

用法如下

代码语言:javascript
复制
printf( '<div class="post-teaser">%s</div>', get_the_content_limit( 300, '[Keep Reading]' ) );

这将把帖子内容限制在不超过300字,并在div中输出。

genesis_rel_nofollow($xhtml)

一个简单的函数,用于创建nofollow链接。

function genesis_strip_attr( $text, $elements, $attributes, $two_passes = true )

这是一个非常复杂的函数,它接受任何$xhtml文本,然后使用提供的搜索条件(pattern)从特定元素中删除属性。$elements$attributes 参数可以是数组或字符串。 比如genesis_rel_nofollow()函数,它是用于链接中的删除任何rel属性,然后再返回给wp_rel_nofollow()函数。这可以防止rel值被重复添加。这个函数也可以用来删除标题

代码语言:javascript
复制
$link = '<a href="http://example.com" title="title">Anchor Text</a>';
echo genesis_strip_attr( $link, array( 'a' ), array( 'title' ) );
// outputs "<a href="http://example.com">Anchor Text</a>"

genesis_formatting_allowedtags()

返回在清洗内容中允许的html标签。包含过滤器可让允许更多标签或删除这些标签。

我希望这有助于你理解这些函数。接下来我将深入讲下图像函数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文
  • 译文
  • genesis_truncate_phrase($phrase, $max_characters)
  • get_the_content_limit( $max_characters, $more_link_text = ‘(more…)’, $stripteaser = false )
  • genesis_rel_nofollow($xhtml)
  • function genesis_strip_attr( $text, $elements, $attributes, $two_passes = true )
  • genesis_formatting_allowedtags()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档