0

初めてのsprintfを使ったテーマを使っています。これについては開発者からカスタムサポートを受けることができないので、自分で理解しようとしています。

sprintfがどのように機能するかを理解していないので、私はたくさんのページをグーグルで検索して、簡単だと思っていたものの修正を見つけようとしました。

テーマは%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タイトルがクリック可能になりますが、タイトルのページではなく、テーマフォルダーのルートに移動します。

これを理解し、それを機能させるための助けをいただければ幸いです。

4

1 に答える 1

3

Sprintfbasix

Sprintfプレースホルダーの場所(で始まる%)の最初のパラメーターにパラメーターを追加します。

例えば:

$name = 'Rob';
$str = sprintf('Hello, I am %s', $name); // become: Hello, I am Rob

後の文字%は、パラメータのタイプの最初の文字です。文字列は%s、10進数は%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パラメータの順序を使用して、文字列のどこに配置するかを決定します。最初のプレースホルダーは2番目のパラメーターを取得し、2番目のプレースホルダーは3番目のパラメーターを取得します。
これを変更したい場合は、%とタイプの間でこれを指定する必要があります。これは、場所番号<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です。リンクしたいURLではないと思いますか?のURIにリンクしたい$link。それをパラメータに入れて参照するだけです。

sprintf(
    '...'.
    '<h1><a href="%s">%s</a></h1><p>%s</p>',
    Website::get('template_uri'), $icon, $link, $title, $text
);
于 2012-07-19T17:31:09.440 に答える