誰かが zend でバニティ URL を生成する方法を説明してくれたら素晴らしいと思います。 blog-title .Zend を始めたばかりの初心者です。
2 に答える
最初に、入力パラメーターとして日付を受け入れ、それらの日に基づいて記事を一覧表示する、たとえばdateActionというコントローラーを作成します。記事コントローラー内にdateActionを作成したとします。
だからこのURLに仕事をさせるwww.example.com/article/date/year/2012/month/06/day/24/title/abcdef
最初
しかし今、あなたはそれを美しいものに変えたいので、Zend_Routerを使用してください
それを行った後、ブートストラップにルートを作成します
$route = new Zend_Controller_Router_Route_Regex(
'(\d+)/(\d+)/(\d+)/([a-z0-9]+)',
array(
'controller' => 'article',
'action' => 'date'
),
array(
1 => 'year',
2 =>'month',
3 => 'day',
4 =>'title'
)
);
Zend_Controller_Front::getInstance->getRouter()->addRoute('article',$route);
これで、URLhttp://www.example.com/2012/6/24/blog-title
は次のように機能します
www.example.com/article/date/year/2012/month/06/day/24/title/abcdef
作成したいものは、スラッグと呼ばれることがよくあります。スラッグを生成するために Zend フレームワークに組み込まれているものは何も知らないので、自分でスラッグを生成する必要があります。これは、スラッグを生成するための非常に簡単な方法です。
$slug = preg_replace("/[^a-zA-Z0-9 ]/", "", $title);
$slug = str_replace(" ", "-", $slug);
これをより堅牢にするために、生成したスラッグがデータベースに既に存在するかどうかを確認する必要があります。その場合、末尾に番号を自動的に追加できます。たとえば、「this-blog-post」が既に存在する場合は、「this-blog-post-1」を試してください。
スラッグの生成に加えて、zerkms のコメントに従い、このスラッグをコントローラーに渡すルートを Zend 構成に追加する必要があります。