SEO meta tags under Cakephp 1.2
Setting your pages meta tag keywords and description is simple under CakePHP 1.2, all one needs is the Html Helper's meta() function. Probably the easiest way is to see how its done is with an example, this code is added to your view files :-
Show Plain TextIn my original article on meta tags I ended up setting a variable in the view and checking for the variables in the default layout file. I had tried the $html->meta() function originally but couldn't get it to work and didn't have time to figure things out.
It wasn't till I was trying to get some javascript code to output into the head section from a view using the $this->addScript() function that I realized I didn't have the echo $scripts_for_layout line in the default.ctp layout.
Not sure when or how I deleted it but in the words of Homer Simpson all I can say is DOH.
Update: 2 Dec 2008, I see an example of meta() function is now documented in the CakePHP book, please refer to this page
Notice (8): Use of undefined constant target - assumed 'target' [APP/views/posts/view.ctp(51) : eval()'d code, line 8]
$___viewFn = "/nfs/c01/h08/mnt/37061/domains/wiltonsoftware.com/html/app/views/posts/view.ctp"
$___dataForView = array(
"post" => array(
"Post" => array(),
"Comment" => array(),
"Tag" => array(),
"Category" => array()
)
)
$loadHelpers = true
$cached = false
$loadedHelpers = array(
"Html" => HtmlHelper
HtmlHelper::$tags = array
HtmlHelper::$base = ""
HtmlHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
HtmlHelper::$params = array
HtmlHelper::$action = "view"
HtmlHelper::$data = NULL
HtmlHelper::$_crumbs = array
HtmlHelper::$__docTypes = array
HtmlHelper::$helpers = NULL
HtmlHelper::$webroot = "/"
HtmlHelper::$themeWeb = NULL
HtmlHelper::$plugin = NULL
HtmlHelper::$namedArgs = NULL
HtmlHelper::$argSeparator = NULL
HtmlHelper::$validationErrors = NULL
HtmlHelper::$__tainted = NULL
HtmlHelper::$__cleaned = NULL
HtmlHelper::$_log = NULL,
"Form" => FormHelper
FormHelper::$helpers = array
FormHelper::$fieldset = array
FormHelper::$__options = array
FormHelper::$fields = array
FormHelper::$requestType = NULL
FormHelper::$base = ""
FormHelper::$webroot = "/"
FormHelper::$themeWeb = NULL
FormHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
FormHelper::$params = array
FormHelper::$action = "view"
FormHelper::$plugin = NULL
FormHelper::$data = NULL
FormHelper::$namedArgs = NULL
FormHelper::$argSeparator = NULL
FormHelper::$validationErrors = NULL
FormHelper::$tags = array
FormHelper::$__tainted = NULL
FormHelper::$__cleaned = NULL
FormHelper::$_log = NULL
FormHelper::$Html = HtmlHelper object,
"Geshi" => GeshiHelper
GeshiHelper::$validContainers = array
GeshiHelper::$containerMap = array
GeshiHelper::$validLanguages = array
GeshiHelper::$defaultLanguage = false
GeshiHelper::$langAttribute = "lang"
GeshiHelper::$showPlainTextButton = true
GeshiHelper::$helpers = NULL
GeshiHelper::$base = ""
GeshiHelper::$webroot = "/"
GeshiHelper::$themeWeb = NULL
GeshiHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
GeshiHelper::$params = array
GeshiHelper::$action = "view"
GeshiHelper::$plugin = NULL
GeshiHelper::$data = NULL
GeshiHelper::$namedArgs = NULL
GeshiHelper::$argSeparator = NULL
GeshiHelper::$validationErrors = NULL
GeshiHelper::$tags = array
GeshiHelper::$__tainted = NULL
GeshiHelper::$__cleaned = NULL
GeshiHelper::$_log = NULL,
"Rss" => RssHelper
RssHelper::$helpers = array
RssHelper::$base = ""
RssHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
RssHelper::$params = array
RssHelper::$action = "view"
RssHelper::$data = NULL
RssHelper::$model = NULL
RssHelper::$field = NULL
RssHelper::$version = "2.0"
RssHelper::$encoding = "UTF-8"
RssHelper::$webroot = "/"
RssHelper::$themeWeb = NULL
RssHelper::$plugin = NULL
RssHelper::$namedArgs = NULL
RssHelper::$argSeparator = NULL
RssHelper::$validationErrors = NULL
RssHelper::$tags = array
RssHelper::$__tainted = NULL
RssHelper::$__cleaned = NULL
RssHelper::$_log = NULL
RssHelper::$Xml = Xml object
RssHelper::$Time = TimeHelper object,
"Time" => TimeHelper
TimeHelper::$helpers = NULL
TimeHelper::$base = ""
TimeHelper::$webroot = "/"
TimeHelper::$themeWeb = NULL
TimeHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
TimeHelper::$params = array
TimeHelper::$action = "view"
TimeHelper::$plugin = NULL
TimeHelper::$data = NULL
TimeHelper::$namedArgs = NULL
TimeHelper::$argSeparator = NULL
TimeHelper::$validationErrors = NULL
TimeHelper::$tags = array
TimeHelper::$__tainted = NULL
TimeHelper::$__cleaned = NULL
TimeHelper::$_log = NULL,
"Cache" => CacheHelper
CacheHelper::$__replace = array
CacheHelper::$__match = array
CacheHelper::$view = NULL
CacheHelper::$cacheAction = NULL
CacheHelper::$helpers = NULL
CacheHelper::$base = ""
CacheHelper::$webroot = "/"
CacheHelper::$themeWeb = NULL
CacheHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
CacheHelper::$params = array
CacheHelper::$action = "view"
CacheHelper::$plugin = NULL
CacheHelper::$data = NULL
CacheHelper::$namedArgs = NULL
CacheHelper::$argSeparator = NULL
CacheHelper::$validationErrors = NULL
CacheHelper::$tags = array
CacheHelper::$__tainted = NULL
CacheHelper::$__cleaned = NULL
CacheHelper::$_log = NULL,
"Javascript" => JavascriptHelper
JavascriptHelper::$useNative = true
JavascriptHelper::$enabled = true
JavascriptHelper::$safe = false
JavascriptHelper::$tags = array
JavascriptHelper::$_blockOptions = array
JavascriptHelper::$_cachedEvents = array
JavascriptHelper::$_cacheEvents = false
JavascriptHelper::$_cacheToFile = false
JavascriptHelper::$_cacheAll = false
JavascriptHelper::$_rules = array
JavascriptHelper::$__scriptBuffer = NULL
JavascriptHelper::$helpers = NULL
JavascriptHelper::$base = ""
JavascriptHelper::$webroot = "/"
JavascriptHelper::$themeWeb = NULL
JavascriptHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
JavascriptHelper::$params = array
JavascriptHelper::$action = "view"
JavascriptHelper::$plugin = NULL
JavascriptHelper::$data = NULL
JavascriptHelper::$namedArgs = NULL
JavascriptHelper::$argSeparator = NULL
JavascriptHelper::$validationErrors = NULL
JavascriptHelper::$__tainted = NULL
JavascriptHelper::$__cleaned = NULL
JavascriptHelper::$_log = NULL,
"Session" => SessionHelper
SessionHelper::$helpers = NULL
SessionHelper::$__active = true
SessionHelper::$valid = false
SessionHelper::$error = false
SessionHelper::$_userAgent = "9fe8ac4f780b6bd4555e0eb3b5358c6b"
SessionHelper::$path = "/"
SessionHelper::$lastError = NULL
SessionHelper::$security = NULL
SessionHelper::$time = 1268321100
SessionHelper::$sessionTime = false
SessionHelper::$watchKeys = array
SessionHelper::$id = NULL
SessionHelper::$_log = NULL
SessionHelper::$base = ""
SessionHelper::$webroot = "/"
SessionHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
SessionHelper::$params = array
SessionHelper::$action = "view"
SessionHelper::$data = NULL
SessionHelper::$themeWeb = NULL
SessionHelper::$plugin = NULL
)
$helper = SessionHelper
SessionHelper::$helpers = NULL
SessionHelper::$__active = true
SessionHelper::$valid = false
SessionHelper::$error = false
SessionHelper::$_userAgent = "9fe8ac4f780b6bd4555e0eb3b5358c6b"
SessionHelper::$path = "/"
SessionHelper::$lastError = NULL
SessionHelper::$security = NULL
SessionHelper::$time = 1268321100
SessionHelper::$sessionTime = false
SessionHelper::$watchKeys = array
SessionHelper::$id = NULL
SessionHelper::$_log = NULL
SessionHelper::$base = ""
SessionHelper::$webroot = "/"
SessionHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
SessionHelper::$params = array
SessionHelper::$action = "view"
SessionHelper::$data = NULL
SessionHelper::$themeWeb = NULL
SessionHelper::$plugin = NULL
$camelBackedHelper = "session"
$html = HtmlHelper
HtmlHelper::$tags = array
HtmlHelper::$base = ""
HtmlHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
HtmlHelper::$params = array
HtmlHelper::$action = "view"
HtmlHelper::$data = NULL
HtmlHelper::$_crumbs = array
HtmlHelper::$__docTypes = array
HtmlHelper::$helpers = NULL
HtmlHelper::$webroot = "/"
HtmlHelper::$themeWeb = NULL
HtmlHelper::$plugin = NULL
HtmlHelper::$namedArgs = NULL
HtmlHelper::$argSeparator = NULL
HtmlHelper::$validationErrors = NULL
HtmlHelper::$__tainted = NULL
HtmlHelper::$__cleaned = NULL
HtmlHelper::$_log = NULL
$form = FormHelper
FormHelper::$helpers = array
FormHelper::$fieldset = array
FormHelper::$__options = array
FormHelper::$fields = array
FormHelper::$requestType = NULL
FormHelper::$base = ""
FormHelper::$webroot = "/"
FormHelper::$themeWeb = NULL
FormHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
FormHelper::$params = array
FormHelper::$action = "view"
FormHelper::$plugin = NULL
FormHelper::$data = NULL
FormHelper::$namedArgs = NULL
FormHelper::$argSeparator = NULL
FormHelper::$validationErrors = NULL
FormHelper::$tags = array
FormHelper::$__tainted = NULL
FormHelper::$__cleaned = NULL
FormHelper::$_log = NULL
FormHelper::$Html = HtmlHelper object
$geshi = GeshiHelper
GeshiHelper::$validContainers = array
GeshiHelper::$containerMap = array
GeshiHelper::$validLanguages = array
GeshiHelper::$defaultLanguage = false
GeshiHelper::$langAttribute = "lang"
GeshiHelper::$showPlainTextButton = true
GeshiHelper::$helpers = NULL
GeshiHelper::$base = ""
GeshiHelper::$webroot = "/"
GeshiHelper::$themeWeb = NULL
GeshiHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
GeshiHelper::$params = array
GeshiHelper::$action = "view"
GeshiHelper::$plugin = NULL
GeshiHelper::$data = NULL
GeshiHelper::$namedArgs = NULL
GeshiHelper::$argSeparator = NULL
GeshiHelper::$validationErrors = NULL
GeshiHelper::$tags = array
GeshiHelper::$__tainted = NULL
GeshiHelper::$__cleaned = NULL
GeshiHelper::$_log = NULL
$rss = RssHelper
RssHelper::$helpers = array
RssHelper::$base = ""
RssHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
RssHelper::$params = array
RssHelper::$action = "view"
RssHelper::$data = NULL
RssHelper::$model = NULL
RssHelper::$field = NULL
RssHelper::$version = "2.0"
RssHelper::$encoding = "UTF-8"
RssHelper::$webroot = "/"
RssHelper::$themeWeb = NULL
RssHelper::$plugin = NULL
RssHelper::$namedArgs = NULL
RssHelper::$argSeparator = NULL
RssHelper::$validationErrors = NULL
RssHelper::$tags = array
RssHelper::$__tainted = NULL
RssHelper::$__cleaned = NULL
RssHelper::$_log = NULL
RssHelper::$Xml = Xml object
RssHelper::$Time = TimeHelper object
$time = TimeHelper
TimeHelper::$helpers = NULL
TimeHelper::$base = ""
TimeHelper::$webroot = "/"
TimeHelper::$themeWeb = NULL
TimeHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
TimeHelper::$params = array
TimeHelper::$action = "view"
TimeHelper::$plugin = NULL
TimeHelper::$data = NULL
TimeHelper::$namedArgs = NULL
TimeHelper::$argSeparator = NULL
TimeHelper::$validationErrors = NULL
TimeHelper::$tags = array
TimeHelper::$__tainted = NULL
TimeHelper::$__cleaned = NULL
TimeHelper::$_log = NULL
$cache = CacheHelper
CacheHelper::$__replace = array
CacheHelper::$__match = array
CacheHelper::$view = NULL
CacheHelper::$cacheAction = NULL
CacheHelper::$helpers = NULL
CacheHelper::$base = ""
CacheHelper::$webroot = "/"
CacheHelper::$themeWeb = NULL
CacheHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
CacheHelper::$params = array
CacheHelper::$action = "view"
CacheHelper::$plugin = NULL
CacheHelper::$data = NULL
CacheHelper::$namedArgs = NULL
CacheHelper::$argSeparator = NULL
CacheHelper::$validationErrors = NULL
CacheHelper::$tags = array
CacheHelper::$__tainted = NULL
CacheHelper::$__cleaned = NULL
CacheHelper::$_log = NULL
$javascript = JavascriptHelper
JavascriptHelper::$useNative = true
JavascriptHelper::$enabled = true
JavascriptHelper::$safe = false
JavascriptHelper::$tags = array
JavascriptHelper::$_blockOptions = array
JavascriptHelper::$_cachedEvents = array
JavascriptHelper::$_cacheEvents = false
JavascriptHelper::$_cacheToFile = false
JavascriptHelper::$_cacheAll = false
JavascriptHelper::$_rules = array
JavascriptHelper::$__scriptBuffer = NULL
JavascriptHelper::$helpers = NULL
JavascriptHelper::$base = ""
JavascriptHelper::$webroot = "/"
JavascriptHelper::$themeWeb = NULL
JavascriptHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
JavascriptHelper::$params = array
JavascriptHelper::$action = "view"
JavascriptHelper::$plugin = NULL
JavascriptHelper::$data = NULL
JavascriptHelper::$namedArgs = NULL
JavascriptHelper::$argSeparator = NULL
JavascriptHelper::$validationErrors = NULL
JavascriptHelper::$__tainted = NULL
JavascriptHelper::$__cleaned = NULL
JavascriptHelper::$_log = NULL
$session = SessionHelper
SessionHelper::$helpers = NULL
SessionHelper::$__active = true
SessionHelper::$valid = false
SessionHelper::$error = false
SessionHelper::$_userAgent = "9fe8ac4f780b6bd4555e0eb3b5358c6b"
SessionHelper::$path = "/"
SessionHelper::$lastError = NULL
SessionHelper::$security = NULL
SessionHelper::$time = 1268321100
SessionHelper::$sessionTime = false
SessionHelper::$watchKeys = array
SessionHelper::$id = NULL
SessionHelper::$_log = NULL
SessionHelper::$base = ""
SessionHelper::$webroot = "/"
SessionHelper::$here = "/posts/view/seo-meta-tags-under-cakephp-1-2"
SessionHelper::$params = array
SessionHelper::$action = "view"
SessionHelper::$data = NULL
SessionHelper::$themeWeb = NULL
SessionHelper::$plugin = NULL
$post = array(
"Post" => array(
"id" => "60",
"url" => "seo-meta-tags-under-cakephp-1-2",
"title" => "SEO meta tags under Cakephp 1.2",
"icon" => "cakephp",
"metadesc" => "how to set your meta tag keywords and descriptions under CakePHP 1.2",
"metakeys" => "seo, meta, tag, keywords, description, cakephp",
"categories" => "Cakephp",
"tease" => "How to set you meta tag keywords and descriptions under cakephp with the $html->meta() helper function...",
"body" => "<p>Setting your pages meta tag keywords and description is simple under CakePHP 1.2, all one needs is the Html Helper's meta() function. Probably the easiest way is to see how its done is with an example, this code is added to your view files :-</p>
<pre lang="php">echo $html->meta('keywords', 'your keywords goes here', array('type' => 'keywords'), false);
echo $html->meta('description', 'your description goes here', array('type' => 'description'), false);</pre>
<p>In my original <?php echo $html->link('article', array('controller' => 'posts', 'action' => 'view', 'setting-meta-tag-descriptions-and-keywords-under-cakephp-1-2')); ?> on meta tags I ended up setting a variable in the view and checking for the variables in the default layout file. I had tried the $html->meta() function originally but couldn't get it to work and didn't have time to figure things out.</p>
<p>It wasn't till I was trying to get some javascript code to output into the head section from a view using the $this->addScript() function that I realized I didn't have the <b>echo $scripts_for_layout</b> line in the default.ctp layout.</p>
<p>Not sure when or how I deleted it but in the words of Homer Simpson all I can say is <b>DOH</b>.</p>
<p>Update: 2 Dec 2008, I see an example of meta() function is now documented in the CakePHP book, please refer to this page <?php echo $html->link("Inserting-Well-Formatted-elements", "http://book.cakephp.org/view/206/Inserting-Well-Formatted-elements", array("class" => "external", target => "_blank")); ?></p>",
"private_body" => "",
"created" => "2008-11-23 17:03:48",
"modified" => "2008-12-01 17:02:08",
"status" => "1",
"allow_comments" => "1",
"tags" => "Seo",
"hitcount" => "2264",
"hitcount_rss" => "276"
),
"Comment" => array(
array(),
array(),
array()
),
"Tag" => array(
array()
),
"Category" => array(
array()
)
)eval - APP/views/posts/view.ctp(51) : eval()'d code, line 8 include - APP/views/posts/view.ctp, line 51 View::_render() - CORE/cake.7882/libs/view/view.php, line 666 View::render() - CORE/cake.7882/libs/view/view.php, line 376 Controller::render() - CORE/cake.7882/libs/controller/controller.php, line 774 Dispatcher::_invoke() - CORE/cake.7882/dispatcher.php, line 248 Dispatcher::dispatch() - CORE/cake.7882/dispatcher.php, line 211 [main] - APP/webroot/index.php, line 84


Thanks fellow developer, I'm on a time crunch and this was a little piece of treasure in the form of a blog post that came up on google. You rock!