Snippets - Little bits of code to make you happy
-
SnippetsCreate a CMS Field in 'Page' but not it's Descendants
26 April 2009 | |
TweetSometimes you may want a field to appear in pages of type Page but not in the other PageTypes which extend Page. To limit a field added via the function getCMSFields() is a simple case of adding an if() statement to test the current pages class.
Continue reading... -
SnippetsCreate and use a Permission code
18 April 2009 | | | Supports v2.4, v2.3
TweetHave you wanted to add an extra permission code that you can add to groups and then use that to test whether a particular user has that permission? Here's how it's done. The permission code it self is added via the Controller class, then you use a permission check anywhere in your site code to check the current user. Like so:
Continue reading... -
SnippetsResizing and Manipulating Images
22 March 2009 | | | Supports v2.4, v2.3
TweetYou can resize images from within the template very easily. But sometimes you need to resize it and just use the URL value, something you can't do by calling the resize on the variable directly (e.g. $Image.CroppedImage(200,200)). This is how we would create a cropped resize of it and still be able to use just the URL, allowing a custom <img> tag.
Continue reading... -
SnippetsHow to access your admin account when you've forgotten the password
22 August 2009 | |
Tweet I managed to forget my admin password and found quite a few ways to unlock an SS install. I originally thought about poking around the database and changing the hashes myself. After reviewing the Security and password encryption code, I would recommend against doing that. SilverStripe uses salted SHA1 encryption which is no fun to try and create yourself. Also you'd have to update multiple tables to get the password changed. Luckily the SS Core team has included multiple features for accomplishing this. The options below assume you have access to your webserver to use some PHP code. Continue reading... -
SnippetsClearing the Search field on click with jQuery
5 August 2009 | |
TweetAs with everything, it's attention to detail that makes great sites. One thing that really bugs me is when a site has a search box with the word 'search' inside it but which does not clear it self when clicked, meaning I have to clear it before I can search. Given it can be achieved with a few lines of jQuery, it's a real surprise how many sites fail to implement this, or that still use the 'onclick' inline javascript event.
Continue reading... -
SnippetsUsing a Print Stylesheet
16 December 2009 | |
TweetOften people want to be able to print webpages without all the menus and graphics and with all the content fitting correctly onto a page. To do this you need to create a separate print stylesheet. It would look something like this:
Continue reading... -
SnippetsRemoving an Item From the Main CMS Menu
3 July 2009 | |
TweetIf you want to remove an item from the CMSTopMenu without making it inaccessible you can add this line to your _config.php file:
CMSMenu::remove_menu_item('SecurityAdmin');Continue reading... -
SnippetsChanging the CMS Help Link
10 June 2009 | |
TweetUsually you can change the CMS menu settings from your site configuration, but the "Help" link is hard-coded to allow for translations. This snippet, placed in your site configuration file will override the "Help" link with a link back to your site:
CMSMenu::add_link('Help', 'Home', Director::baseUrl());Continue reading... -
SnippetsDisplaying Fields From a Set of Pages on Another Page
25 May 2009 | | | Supports v2.4, v2.3
TweetAlthough ultimately requiring very little code, displaying data from a set of pages on another page can seem confusing for those new to SilverStripe. This example will display all of the Images from all the staff pages on our current page. This works by first returning all the staff pages to our template and cycling through each of them, drawing the Image for each one.
Continue reading... -
SnippetsGetting objects from multiple child pages
14 April 2009 | | | Supports v2.4, v2.3
TweetWhen you want to create a DataObjectSet encompasing objects from all the current pages children you can do something like this
$pageIDs = $this->getDescendantIDList(); $ObjectSet = DataObject::get( "Object", "`ObjectPageID` IN (" . implode(",", $pageIDs) . ")" );Continue reading... -
SnippetsCheck to see if a widget area has any widgets
5 April 2009 | |
TweetIf you want to check that a WidgetArea actually has widgets, and only display it if it has, you can add this function to your Page_Controller (where widgetBarID is the name of your widgetArea + ID)
function HasWidgets() { return DataObject::get("Widget", "ParentID = $this->WidgetbarID"); }Continue reading...