I have been learning to develop my own plugins and components for joomla! 2.5.
After a couple of months of developing features for my site, I am starting to realise that some of the components I have created could have probably been just as effective if I'd developed them as a plugin for com_content or com_user.
My question is what's the best way to decided if a full component is needed and when is it ok to use one or multiple plugins to give the same functionality.
My feeling at the moment is that plugins are a much nicer way to go due to them being self contained. Maybe I've answered my own question, and components are needed when interaction between elements is more complicated, where as plugins can be used for very modular functions.
Anyone else have a view?
Components and Plugins are completely different types of extensions.
Components are applications/systems that will appear in the content area such as VirtueMart and where the articles are shown. Consider them as software for you computer.
Plugins are there to manipulate Joomla and/or there extensions it's using. They contains functions that are associated with trigger events. So in a nutshell, they are there to extend the functionality of an existing extension.
So so answer your question, have a think about what you are creating and if will be an aplication or something to extend functionality.
Hope this helps
Related
I have been developing websites for some years. I know PHP. but I have never worked with a CMS before. I've been told to create a website with Joomla where there's a homepage and also new users may sign up and then they can have a profile page where they can upload their profile picture and write their résumé.
This is easy for me to implement this system if I start coding it by myself. but how can I do this in Joomla? is there a plug-in which I need? could someone please give me some resources?
No need to re-invent the wheel - there are tons of ready-built components at the Extensions Directory. Last I checked Community Builder and JomSocial were the most popular, but they might be overkill for your need, so it's worth having a look at the other choices there. If you're new to Joomla, you're probably interested in a Component, which is essentially a "sub-application" that installs under Joomla. They usually include Modules that can be displayed on the site, as well as Plugins that work with the core Joomla logic to perform specialized functions for the installed component.
There are many plugins, but the simple functionality of user profiles is implemented in Joomla. This question might help you.
I'm playing with Joomla 2.5.9 (The latest 2.X download). Do you know how you can add additional menu's to the "Article Manager: Edit Article" page? (This is in the Administration)
Their API gives me some hint on several things but I am don't know what this right "Slide Down Option Area" is called in the Administration.
In the right area there are things such as:
Publishing options
Article Options
Configure Edit Screen
Images and Links
etc..
I want to know where to start to add my own, or where they are already built in the system so I can base mine off it -- Is this a plugin, module, or something else? :)
As i say don't change any of the core file in Joomla. If you want to add any functionality into the article manager you can make your own plugin to add functionality in it. For doing this see this link :
Creating a content plugin
I hope this is what you looking for.Good luck.
There are some extensions that allow you to do that.
I recommend (although somewhat buggy and a code mess) this one:
FieldsAttach
It does exactly what you want.
Or, you could make your own as Toretto suggests, there are some tutorials on creating a plugin for extra items in the article form, but the already-made-extension route seems to make more sence.
I've been using FieldsAttach for this sort of thing, for a few years, the code is often a little messy, that is true, but the the concepts are clean and eloquent. Brian Teeman explains it well from an integrator point of view in his talk at https://www.youtube.com/watch?v=f2WLKWbRj5U but in some ways it is even more compelling from a developer's perspective.
However, after watching Marco Ding's Joomla Day UK 2016 talk on https://www.youtube.com/watch?v=KDh1IPuZAVA I think DPFields may be a better choice. The architecture is perhaps more rugged and neater, but also because it may well end up being a core extension in Joomla in the near future. More info on DPFields is at http://extensions.joomla.org/extension/dpfields , https://joomla.digital-peak.com/products/dpfields and https://joomla.digital-peak.com/documentation/162-dpfields .
I had an issues with some joomla api. The issue was that I was using the latest version of joomla and couldn't find where a joomla class, that was being called in my code, was derived . I searched the joomla api docs and found nothing relating to the class I was looking for.
I then stumbled across the refactoring change log for joomla and noticed that the function i was after had actually been moved from /libraries/joomla/form to libraries/cms/form.
Why would this be the case? There doesn't seem to be any reference to /libraries/cms in the api docs. How are we suppose to know that there are classes living there? Very confusing.
Since Joomla! 1.6 the code has been progressively split into the Joomla! CMS and the Joomla! Platform. You can see this separation in the github repository - a good place to also keep track of changes that are committed to both the CMS and the Platform. The simplest way is fork each repository and keep track of them.
As classes are updated they may be migrated to the /libraries/cms directory if they apply specifically to the CMS application (e.g. html forms are an application level function not a platform level).
I find the best place to hear about changes under discussion are in the respective Google Groups - Joomla! Platform Development and Joomla! CMS Development
[Edit]
Documentation of class's is the hardest thing to find for Joomla! CMS - there doesn't appear to be a current api listing for it, unlike the Platform API reference. Often it is just easier to read through the code.
It's also worth keeping a watch on the developer sub-site.
If you want to define excellence in CMS without coding, Joomla is the right option for you.Joomla the most preferred content management system among developers is an easy-to-use open source solution.If you want to define excellence in CMS without coding, Joomla is the right option for you. In this post, you will find few of its features that make the website development easy and most preferred option for developers.
I am new to open source Content Management System tools. I got a website using Joomla for content management. Now, I am just thinking to Umbraco or Dotnetnuke (any Asp.net based) frameworks to use. Will it be a complex to do this migration. Can you suggest pros and cons for this idea.
Any help is appreciated. Thanks !
For Umbraco ...
Most of your client-side code like HTML, CSS and JavaScript can just be copied straight over, but as expected it may require some fiddling.
As for the data, it might be worth looking into the CMSImport module for Umbraco. As long as you can convert the source data into one of the formats recognised by the module, you should be able to upload your content with ease. I've had no personal experience with this module, but should be worth a shot.
It really depends on the size of the site and the functionality requirements. For smaller sites, it may be as easy as implementing the skin based on the original design (or, if a custom design isn't needed, selecting a free or 3rd party skin) and then manually migrating the content. For really large sites, you should be able to write scripts to migrate the content. I'm not aware of any products that do this. You'll also probably need to select some modules to use for things like forms.
I'm building several sites that need similar "modules." For example, the sites may have the exact same login system, forum, etc.
Is there a way I could build these modules once and just "drop" them in these various sites? Some of the challenges I see:
Keeping the code consistent in the various sites. Any changes made to a module should propagate to all of the sites using that module. I guess I need a way to upgrade?
Database: these functionality need to work as part of a bigger application. Maybe the module needs to define relationships with other tables in its respective site.
I'm sure there are more problems. I think I should be looking at this: https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home, but I don't have any experience with it.
So, I'm looking for solutions, suggestions, or more problems to this idea.
You can create and use third party packages by adding them to the third party folder (which is new for CI 2). There is not much about it in the docs, but i found this.
http://codeigniter.com/user_guide/libraries/loader.html
You can autoload the third party packages in the autoload file. Packages can have their own controllers, models, views etc.
Interestingly, Phil Sturgeon wrote a bit (http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules) about packages not being modules (in the strict sense of the term), but you could probably use third party packages for what you need.
I would write them as libraries and use Git submodules to manage each module. Phil Sturgeon actually just wrote a great post about doing this in CodeIgniter.
If you're not using version control, I can't see an easy way to sync across all of your applications. Yes, HMVC will let you break apart your application into actual modules, but it won't help in syncing those modules across your applications.
Here is my question about 'Database communication in modular software'
that you may find useful.
I'm little bit familiar with Drupal, and as a modular application, I think it can be taken as good example of how relationships between modules should be defined.
Here is one good post about art-of-separation-of-concerns
I would like to hear if you have run into some concrete challenges, solutions and references concerning modular design in CI.