Pointers for getting started with SilverStripe modules - silverstripe

I am new to SilverStripe.
I would like to know a good place where I can start making modules for SilverStripe; some good tutorials to get me started.

A SilverStripe module can do practically anything, so it's hard to say where to get started.
The following Wiki page has some very basic startup information:
SilverStripe Wiki - Creating Modules
Beyond that, I'd recommend reading up on how to use ModelAdmin to create simple administration interfaces in the CMS, and maybe take a good look through the API Docs to get an idea of what is available to use.
However, there is nothing fundamentally different about modules as there is about any other site functionality (or even themes) - it all uses the same API and structure - so maybe download a few popular modules to see how they're built.
Finally, SSBits is also a particularly good tips & tutorials website for SilverStripe, and the SilverStripe Forum and IRC channel are useful too.

I recommend the SilverStripe book "The Complete Guide to CMS Development", you can find it at Amazon or view it online at Google Books, it is not a complete reference but a good start to module development.
It has many examples, using a complete example project (with downloadable code) and some additional recipes for frequent tasks.

Here are some more up-to-date resources...
Module structure:
http://docs.silverstripe.org/en/developer_guides/extending/modules/
Publishing modules:
http://docs.silverstripe.org/en/developer_guides/extending/how_tos/publish_a_module/
SilverStripe video lessons:
http://www.silverstripe.org/learn/lessons/

If you're still unsure, I can recomment the book "SilverStripe 2.4 Module Extension, Themes, and Widgets: Beginner's Guide" - targeting the current SilverStripe version.
Disclaimer: I'm the author of the book, but given the title it should fit your requirements well...

Related

Pimcore Vs PyroCMS

Going forward a company I'm working with atm would like to stop with various frameworks/cms systems and go forward with just one for all future clients.
To that end, I've prepped a list of options and it's been whittled down to Pimcore and PyroCMS.
I'm a CI developer so clearly Pyro wins for me, but the guys who will be developing custom modules are more comfy in Zend. I found this: What are the (dis)advantages of pimcore? and found it quite enlightening.
So I'm curious to know thoughts on the two systems based on the following criteria:
Reskinning potential (front end themes etc).
Custom module ease. Building modules is really easy in Pyro and intuitive (if you know CI).. is Pimcore as easy for a Zend guru? Also, just buying/downloading existing modules, which is more prolific?
Multi site usage (can one install allow an admin user from site A to only see site A content?)
The docs and marketing blurb is great for both sites, but any hands on experience here would be useful.
I'm thinking that we could also just use the Zend library within Pyro (as you can do with CI on its own). Anyone reckon that'll be a headache to use?
PyroCMS developer dropping by.
PyroCMS can handle all of the 3 requirements you have requested. Now, CI and Zend users often have arguments over which framework is better, who is the best, bla bla bla, but it can easily be said that CI is the easiest to learn.
If you have some Zend developers, while they might prefer to use a Zend-based CMS that really should not be a selling point on the application itself. These days people put so much focus on which framework they prefer they seem to ignore everything else.
So, evaluate the two products on their own merits.
PyroCMS can handle multi-site and the frontend (and backend!) can easily be reskinned using just HTML and some basic tags - much like Smarty-ish.
And yes, you can use Zend components in your CodeIgniter/PyroCMS application, so that shouldn't be something to worry about.
We have used Zend in a few of our custom PyroCMS modules. Definitely go with PyroCMS so you get the flexibility of both frameworks if you desire. PyroCMS 2.1 just came out and it just keeps getting better.

e-commerce store using drupal

What is the difference between ubercart module and commerce module in drupal?
Which is better for building a "groupon like" site?
Ubercart is your best choice at the moment. If you are talking about Drupal 7, in a little while Drupal Commerce will become the best choice but it is still somewhat a moving target. Once it matures a little the power that using Entities/Fields with Rules brings to it is enormous and if you needed to develop Groupon functionality from scratch I think it would be quicker out the gate and more extensible/flexible down the road.
It depends on your situation, but if you’re goal is to simply and easily recreate a Groupon site, you can get 90% of the way there by installing the Open Deals Distribution profile:
http://drupal.org/project/opendeals
This is a Commerce install profile (distribution) and it seems to fit your use case quite well.
You’d then use the Mailhandler suite of modules and once you get to scale you could use an external email service provider like MailChimp or CheetahMail.
The Commerce platform is highly extensible, as is Ubercart, but since it uses the Entity paradigm you have more control over how to display your content with Views/ Panels. Check here for a list of the current contrib modules: http://www.drupalcommerce.org/contrib/all
Drupal Commerce will become the future Ubercart, I believe. It is still in alpha development though and on the project page it says there are no upgrade paths supporting version to version- your best bet is still Ubercart.
There's a healthy and helpful discussion on the drupal.stackexchange.com forum about ubercart/drupal commerce:
https://drupal.stackexchange.com/questions/5/which-e-commerce-module-for-drupal-7

Comparisons of DotNetNuke with other CMS's/Web Application Frameworks such as WordPress or CodeIgniter

I have never used DotNetNuke before. I'm thinking about giving it a try to help me build websites, and I'd like to hear from other developers who are in a position to compare DotNetNuke with other CMS's/Web Application Frameworks.
I have used both DNN and Drupal to build fairly large, content-based sites. My focus is more on the production side... UI/themeing, module configuration, etc. I'm sold on Drupal, but there may be other choices that meet your needs just as well. I just happened to work with both systems in recent months.
Drupal's core taxonomy module gives you the benefit of creating a relationship between different kinds of content. If you have "article" and "video" content types, you can easily display data from both types based on the shared taxonomy terms. This is huge and something DNN lacks.
Drupal's hook system is also a big benefit when building your own modules or creating "sub-modules" to alter or add to the default functionality of an existing module. This allows you to customize functionality or take advantage of another module's functionality as your application runs. If you purchase a module for DNN, you will have to alter the module if it doesn't meet your needs. Once you do this, you will need to update it each time there's a new release that you would like to take advantage of. DNN modules seem to be more stand-alone solutions. For example, if a DNN module has a rating system, it's only a part of that solution. With Drupal, I can use the "5 Star" rating module in my forums, my blogs, my articles, my videos, etc. There's central configuration for it and I only theme it once.
The themeing layer in Drupal also gives you a large amount of flexibility in that process. My frustration with themeing DNN sites was that I was stuck working with the markup the developer used, with no option for altering the output without hacking the module. With theme hooks and function overrides, I can change the output from those modules to meet my needs (not completely sometimes, but enough), without touching the module code itself.
The biggest problem I had with DNN modules, including some of the most popular, was just a lack of documentation or discussions available for how to achieve your goal. While Drupal's forums can be hard to navigate and you might not always find the answer you are looking for, there are many outlets for gathering information. Honestly, using DNN made me appreciate the community approach of Drupal more.
I was left feeling that DNN would be fine for building sites with more basic needs. But for that, I would still choose something like WordPress or Joomla, considering they have much larger user bases and, in my opinion, are more sophisticated.
Hope this helps you some.
DNN is a pretty good .NET solution for CMS. If you want more flexibility, I would look at SiteFinity for .NET CMS systems. This is a very flexible and elegant CMS for .NET
If you venture out of .NET and want to look at PHP solutions, then DRUPAL, JOOMLA, and WORDPRESS are best solutions. Some comments about each:
WORDPRESS - Is the simplest and most elegant CMS to work with. Originally a blogging software, it has a super-easy user interface, although that also reads as more limited power and features. It's excellent for content driven websites and templates are easily built.
DRUPAL - Is very flexible and configurable, but I find it more complicated than the others. The Admin interface requires more programming knowledge to pull off and adding components and extras is a little more complicated. But, DRUPAL has been proven in the business and government world as a secure and reliable CMS.
JOOMLA - Is my personal favorite. It is also very powerful and I prefer the Admin. interface. Joomla allows for much flexibility and has the most user created modules and plug-ins out there. You have to invent near nothing with this one. I am biased in favor of Joomla, because I use it the most. That said, it has limiting factors against DRUPAL, such as user security features. But this is being fixed in the next upgrade.
Hope that helps as well.
I have development experience using both DNN and Drupal to build content-rich websites. My preference is Drupal for a number of reasons:
Development time-line was shorter; I was able to produce more in less time.
Drupal has a larger and more active developer community. More resources are available to aid in development.
DNN is not actually a CMS. It is only a framework; Drupal is a framework with a foundational CMS.
Drupal is easier to install.
DNN modules cost money; Drupal modules are free.
Actually, I put together some notes a while back when trying to understand the architectural differences between DNN and Drupal. Found those notes, they are here: DNN versus Drupal. Hope this is helpful.
I experienced a fairly high degree of frustration when working with DNN and I don't believe I am alone in that regard. About a year ago, ASPdotnetStoreFront abandoned their involvement with DNN calling it a "disaster to work with".
I am curious to know what piqued your interest in DNN and if you have a specific website project in mind. Regardless, I wish you success and I hope this helps.
I worked in a .NET development shop utilizing Kentico CMS. I agree, it is feature rich and stable. The API and DB are documented well. Overall, it is a great CMS. There is a limited free version: http://www.kentico.com/freecms.aspx
I'm testing out DNN right now. So far, so good, but I think it depends a lot on what you are using it for. I've only been looking at it for 3 days, but so far I do find the documentation lacking or outdated.
I evaluated many of the different Portal/CMS systems out there back in 2004 and DotNetNuke ended up being my choice and I've been very pleased with it, for everything but E-Commerce, ever since. DotNetNuke is endlessly extensible, easy to skin, easy for non-technical folks to update, has a great 3rd party eco-system, and the development team is very active and talented. There isn't a great Articles module in the core but there are several really good ones available from 3rd parties for a reasonable price.
I tried using Joomla a few years ago and hated it. Wordpress is good for a blog style site but doesn't have nearly the power or flexibility of something like DNN. I am intrigued by SiteFinity, Umbraco, and Kentico for sites where all that's really needed is a CMS, but not enough that I've bothered trying them over DNN.
Another good .NET solution - from what I've read - is Umbraco.
Take a look at Kentico CMS. It's commercial, but still affordable. In my experience from dozens of projects on both CMS, Kentico is much more feature-rich, stable and well documented.

Module development tutorial in Drupal

I'd like to learn how to create modules in drupal- modules which can interact with the user, database, assign permissions, views.
Is there any good video tutorial or a simple sample module which covers these things?
Thanks.
My suggestion would be to pick up a copy of Pro Drupal Development and start working your way through. I think that book is the best one stop option for providing an easy to follow, yet in depth start for learning Drupal development.
If you really wanted to get by without purchasing a book, I would suggest checking out the Lullabot site for whatever free content they have available.
After an initial background, the Drupal api pages should be helpful for you, . Hit the search box in the upper left hand corner for type ahead search to find detailed info on drupal functions. This would be a great resource for getting some more background on the functions googletorp listed. I agree with googletorp that those are a good list of functions to get started with.
It requires some effort to learn how to develop in Drupal. You might be able to find some good videos, but you will only really master this when you get your hands dirty and start coding.
How hard this will be for you, is also highly dependent on your background. A seasoned PHP developer wont find it that difficult to develop with Drupal.
There are some key points that you need to understand though.
The hook system. This is Drupal's way to do OOP. The idea is that modules or Drupal core can define and run hooks when an event happen that other modules want to react to. An example could be the creation of a user or the display of a node. To implement a hook, you simply create a function with the correct name. You need replace the "hook" in the name of the hook with your module name.
Drupal has a lot of API functions and it takes time to find them and learn how to use them. Take your time, as using the right API functions can make a big difference. Drupal has a nice API site
From your description you should take a look at these functions:
hook_user
hook_perms
hook_menu
db_query
In addition to what googletorp and mike munroe already said, check out the module developers guide on drupal.org. On the api site, check out the well documented example modules.
I have learnt drupal from beginner to advanced with CodeKarate. its one of the best website for drupal.
http://www.codekarate.com
There is a very good, easy to follow tutorial on developing JQuery/Javascript modules on Drupal. Check it out as well.

how to use plone as a framework

I am creating a web app that allows people to debate topics. I started prototyping with Django and have a functional app. I have not yet decided on what framework to use.
I've read about Plone the app and Plone the framework. I just can't seem to find any online documentation on using Plone as a framework. I'm looking for a tutorial or something that will show me how to build a web app starting with Plone. I just want to evaluate Plone before I choose my framework.
Anyone have any refs or recommendations on learning how to use Plone as a framework?
You should start here:
http://plone.org/documentation
A really good book is:
http://www.packtpub.com/Professional-Plone-web-applications-CMS/book
Plone is build on Zope Application Server (zope.org). You should read into the zope book too. Its free.
The IRC Channel (#plone) on freenode is full of experts that are willing to help. They like to discuss with :)
Don't use Plone as Framework.
Plone is an CMS. You can use it as framework,You can use Zope2 application server + Zope3 component architecture but I don't recomended to do this. Plone was designed to be a CMS so why You want use it as framework?
Why you shouldn't use Plone as framework?:
Plone is Slow!!!
30 sec. on every restart is too much. When You change something, you need restart. Autorestart(http://plone.org/products/collective.autorestart) doesn't help, you still need to restart Plone any time You change a zcml, portlet's code and sometime with python code.
Plone is too complex.
So big code base. Different coding styles (old Zope2, new component base Zope3, some parts are written with Grok).
You will need write xml (Generic Setup).
Nobody can say what you must use Archetypes, Formlib, z3c.form or Dexterity?
Plone doesn't have good documentation. Too much old documentation (plone.org/documentation) and there is no place where you can read what is the right way to do. The only good documentation is in Martin Aspeli's book (martinaspeli.net/plone-book) but you will need more and this book isn't open, so You will need buy it.
Plone has so many products but if you need really stable and quality stuff you will need write your own.
Plone is Slow!!! Forget test driven development.
I think that the most important factor in choosing a framework is the existence of good documentation. If you can't find good docs for using plone in the way that you want without having to ask here first, that's all the "evaluation" you need.
I'd stick with Django.

Resources