-1

私はCodeIgniterのテンプレートパーサークラスを使用して、ビュー(MVC)にデザイナーフレンドリーな外観を与えています。表示したい一連の投稿がありますが、フロントページには、投稿の一部(最初の200文字)とそれに続く...「続きを読む」リンクのみを表示したいと思います。

投稿を出力していますが、PHP substr()関数bcを無視しているようです。テキストはフルレングスで出力されます。

モデルクラス内:

function __construct()
{
    parent::__construct();
    $this->load->library('parser'); 
    $this->load->model('MPosts');
}

function index() // BASE_URL
{
    $data = array("article_posts" => $this->MPosts->get_posts());
    $this->parser->parse('VPosts', $data);
}

ビューの内部:

<body>
{article_posts}
    <h2><a href="posts/post/{postID}">{title}</a></h2>
    <p><?=substr("{post}", 0, 200);?>...</p>
    <p><a href="posts/post/{postID}">Read More</a></p>
    <hr />
{/article_posts}
</body>
4

3 に答える 3

1

MySQLクエリを使用して記事をフェッチしているためSUBSTRING(article_column_name,1,200)、基本的に最初の200文字のみを取得するために常に使用できます。substr()

参照:https ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring

于 2013-01-14T03:33:54.650 に答える
1

parser->parse()コード内:

  • CIはload->view()、通常のビューと同じように、最初にテンプレートをプロセッサに渡します(したがって、テンプレート内でPHPコードを実行します)。
  • 次に、それを「{pseudovar}-replacer」に渡します。

この時点で、あなたは問題を理解していると確信しています:substr()文字列に適用されます"{post}"

私はあなたの場合のためにこれらのオプションを考えることができます:

  • コントローラー側を実行しますsubstr()。おそらく、問題を解決するための最速のソリューションです。
  • パーサーレイヤーを削除し、プレーンな古いPHPコードを使用します。これは非常に優れています。
  • サードパーティの超ヘビーフル機能のテンプレートエンジンを使用する
于 2013-01-14T03:40:30.000 に答える
0

echoの代わりに試してください?=

load人々は、ユーザー定義関数がモデルファイルに実装されたユーザー定義関数への呼び出しを呼び出すコントローラーのコンストラクター内の(モデル)ライブラリにコードを残す傾向があります。

于 2013-01-14T03:19:43.620 に答える