現在、素晴らしいドキュメントでCodeIgnitersチュートリアルを行っています。ただし、頻繁に使用される用語があり、「スラッグ」と呼ばれます。私はこの用語が何を意味するのかを調べるためによく調べましたが、それが何であり、何のためにあるのか理解できません。使用例は次のとおりです。
このコードを使用すると、2つの異なるクエリを実行できます。すべてのニュースレコードを取得することも、スラッグでニュース項目を取得することもできます
スラッグは、リソースにアクセスしているときのURLの一部です。システム内のすべての車を表示する以下のようなURLがあるとします。
_http://localhost/cars
_
システム内の特定の車を参照する場合は、次のURLを提供します。
_http://localhost/cars/audi-a6/
_
URLが依然として非常に論理的であり、非常にSEフレンドリーであることに注意してください。スラッグの使用に関しては、あなた自身の裁量です。上記のaudi-a6文字列は、システム内の車の一意の識別子である可能性があります。次のフィールドを持つリレーショナルデータベースがあるとします。
_id
car_name
car_brand
car_unique_identifier
_
その後、フィールド_car_unique_identifier
_を使用して、スラッグに表示される値を保存します。上記でAudi A6車で指定した例では、これがaudi-a6文字列が存在する場所です。
ブログのように機能するpostsコントローラーがある場合など、他の方法でも使用できます。 URLエンコードされている場合、ページのタイトルはそのページのスラッグかもしれません。 「SEOを改善する最善の方法」という名前の記事については、次のURLを提供できます。
_http://localhosts/posts/best-ways-to-make-seo-better
_
その後、スラグでurl_decode()
を実行し、seoをより良くするための最適な方法を取得します。タイトルで投稿を見つけるために。
そこで停止する必要はありません—何かを表現するために複数のスラッグを持つことを決めるかもしれません— BBCがそれをどのように行っているか見てみましょう。今日からランダムな記事を取り上げました。次のURLがあります。
_http://www.bbc.co.uk/news/world-africa-24506006
_
これは、次の名前の記事へのリンクです:アフリカ連合は、ICCにリーダーに対する訴訟を取り下げることを強く求めています。 BBCが行っている方法は、スラッグの最後の部分world-africa-24506006を使用することです。これは24506006、システム内の一意のエントリを識別します。その後、彼らはおそらくworld-africaを使用して、投稿が属するカテゴリを示します(これは仮定にすぎない可能性がありますが、それでも知識に基づいた推測です) 。
最後に、研究論文用の次のDBテーブルを想像してみましょう。
_id
category
title
_
次のような例があります。
_http://localhost/papers
_
このURLは、現在システムにあるすべての研究論文を表しています。その後、次のスラッグを介して物理に関するすべての研究論文にアクセスできます。
_http://localhost/papers/physics
_
スラッグはphysicsであり、データベースの選択は現在次のようになっています。
_SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'
_
その後、次のURLを公開できます。
_http://localhost/papers/physics/gravitation
_
現在、私たちのスラッグは物理学と重力で構成されています。舞台裏でのクエリは次のようになります。
_SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'
AND LOWER(papers.title) = 'gravitation'
_
これにより、システム内のエントリを一意に識別できます。
そのため、情報を除外するためにナメクジを繰り返し使用しました。例では、スラッグなしでURLを実行したとき:
_http://localhost/papers
_
利用可能なすべての研究論文をリストしたかった。 physicsスラッグでURLを実行した場合:
_http://localhost/papers/physics
_
物理学に関するすべての研究論文をリストアップして、結果を絞りたいと考えました。最後に、2つのスラッグを提供したときに、システム内のエントリを一意に識別できました。
_http://localhost/papers/physics/gravitation
_
これを別の方法でモデル化できましたか?もちろん!システムの要件に応じて、リレーショナルテーブルを正規化および非正規化できます。パーマリンクシステムを用意しておくと、投稿テーブルは次のようになります。
_ id
title
permalink
_
その後、次のエントリがあった可能性があります。
_ | 20013 | Gravitation | physics-gravitation-breakthrough |
_
したがって、URLを公開します。
_ http://localhost/papers/physics-gravitation-breakthrough
_
上記の例では、スラッグphysics-gravitation-breakthroughにより、次の方法で投稿を一意に識別できます。
_ SELECT *
FROM papers
WHERE papers.permalink = physics-gravitation-breakthrough
_
短い答え
what-is-a-slug
この質問のURLの一部。
「スラッグ」は完全にコンテキスト依存のWordですが、プログラミング上またはこの質問に関する限り、「スラッグ」はURLを指します。 RLにすべての文字を含めることはできません を知っています。そのため、投稿、ページ、コントローラーにタイトルを入力すると、そのスラッグがURLとして使用されます。自動的に導出される可能性があります。
したがって、1行では、スラッグは任意の名前のURLフレンドリーバージョンです。
上記の答えはすべて正しいですが、質問に直接答えたいと思います。 Slug Codeigniterチュートリアルの例では、URL "news"を参照しています。データベースに$ slugまたはslugとして「ニュース」がなく、ブラウザでこのURLを実行すると、「index.php/news/view」はエラー404_pageが見つかりませんを返します。上記の回答を読んで、Slugの意味を理解するまで、この問題に遭遇しました。データベーステーブルでスラッグをニュースに変更します。ナメクジはポインターのようなものです。
以下はスラッグの例です。
<?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
?>