我正在使用sprintf的主题,我很新。我无法从开发人员那里获得定制支持,所以我试图自己解决这个问题。
不了解sprintf是如何工作的,我用Google搜索了大量试图找到我认为简单的修复的页面。
主题使用%s加载文本字符串,在本例中为页面标题。我只想将标题链接到页面!而已!不能少,不多了。我能够在下面找到一些东西:
// Featured columns
case 'columns':
$count = Website::getThemeOption('front_page/columns/count');
$classes = array('one', 'two', 'three', 'four');
$columns = array();
for ($i = 0; $i < $count; $i++) {
extract(Website::getThemeOption('front_page/columns/column/'.$i, true)->toArray());
$text = DroneFunc::stringToHTML($text, false);
if ($more && $link) {
$text .= sprintf(' <a href="%s" class="more">%s</a>', $link, $more);
}
$columns[] = sprintf(
'<li class="column">'.
'<img src="%s/data/img/icons/32/%s" alt="" class="icon">'.
'<h1><a href="%1$s">%s</a></h1><p>%s</p>'.
'</li>',
Website::get('template_uri'), $icon, $title, $text
);
}
?>
<section class="columns <?php echo $classes[$count-1]; ?> clear">
<ul>
<?php echo implode('', $columns); ?>
</ul>
</section>
<?php
break;
现在最初,没有超链接引用...我添加了。现在这样做是使h1标题可点击,但它只是到主题文件夹的根目录,而不是标题的页面。
非常感谢任何理解这一点并使其发挥作用的帮助。
答案 0 :(得分:3)
Sprintf
basix Sprintf
将参数添加到占位符所在位置的第一个参数(以%
开头)。
例如:
$name = 'Rob';
$str = sprintf('Hello, I am %s', $name); // become: Hello, I am Rob
%
之后的字母是参数类型的第一个字母。字符串为%s
,小数为%d
。例如:
$name = 'Rob';
$age = 26;
$str = sprintf('Hello, I am %s and I am %d years old.', $name, $age);
// become: Hello, I am Rob and I am 26 years old.
Sprintf
使用参数的顺序来确定将其放在字符串中的位置。第一个占位符获取第二个参数,第二个占位符是thirth,等等
如果要更改此设置,则需要在%
和类型之间指定。您可以通过<place>$
执行此操作,其中<place>
是地点编号。
$name = 'Rob';
$age = 26;
$str = sprintf('Hello, I am %2$s and I am %1$d years old.', $age, $name);
// become: Hello, I am Rob and I am 26 years old.
你这样做:
'<h1><a href="%1$s">%s</a></h1><p>%s</p>'
%1$s
是第一个参数,即template_uri
。我想这不是你要链接到的网址?您想要链接到$link
中的uri。只需将其放在参数中并引用它:
sprintf(
'...'.
'<h1><a href="%s">%s</a></h1><p>%s</p>',
Website::get('template_uri'), $icon, $link, $title, $text
);