I have 2 tables, page and settings.
page is just a bunch of fields, such as name and slug, and has 3 other fields for meta tags (title, keywords, description) and displays a cms page.
The settings has 3 fields: default_meta_title, default_meta_keywords, default_meta_description
Now what I’m looking to do is to display the default_meta_* tags in the HTML source if the page I am on does not have the particular meta info set from the cms page.
All pages, except the homepage is managed this way, so I was thinking I’d need to add some code to the layout.php to get this to work.
So the homepage will display my default_meta_*, as I cannot set this in the cms pages table.
There are two ways to solve the problem.
First is to use
sfYamlclass to updateview.ymlwith default meta tags (see documentation about view.yml). After that if specific page should use another metas you can override defaults withaddMetamethod of response objectSecond (as ManseUK suggested) is to declare slot placing code like this into layout
Default metas will be rendered via
pagecomponents. On top of your template (i guessmodules/page/templates/showSuccess.php) place codeI assume that you will replace
$page->hasMetas()with real code that will check if yourpageobject has metatags.Actually i would prefer to go further and code
pagecomponents to accept parameters. Code in a template will look likeDeciding which metas (default or not) should be rendered will take place in
pagecomponents (i assume that you can easily retrieve defaul;t settings from your database). If no parameters were passed (see layout code) than your component should also render default metas.I hope this will help.