CI3 Fire Starter is a CodeIgniter3 skeleton application that includes jQuery and Twitter Bootstrap. It is intended to be light weight, minimalistic and not get in your way of building great CodeIgniter 3 applications. It is also intended for new CodeIgniter developers who want a simple, easy platform for learning the framework.
That should cover the basic needs for kickstarting many small CodeIgniter 3 projects. While there are some CodeIgniter CMS applications (see below), sometimes you don't need a full CMS or you need a completely customizable solution. That's why I created CI3 Fire Starter. I was tired of always having to do the same things over and over again. So I took some best practices, included all the addons and functions I most commonly use, and this was the end result, which I use to start many of my smaller projects.
I hope you find it useful. Please fork it on Github and help make it better!
NOTE: This documentation assumes you are already familiar with PHP and CodeIgniter. To learn more about PHP, visit php.net. If you need to learn more about CodeIgniter, visit the CodeIgniter User Guide.
See CodeIgniter's Server Requirements for the complete list.
Since version 3.2.4, anytime changes to the database are required, you'll find SQL files in /data/schema_updates
The former versions of CI Fire Starter (prior to v3.0.0) used to utilize wiredesign's Modular Extensions. At this time I have opted not to include it, however, if you have an argument in support of reimplementing it, just let me know and we can open it up for discussion.
Phil Sturgeon wrote a very helpful blog post years ago called "CodeIgniter Base Classes: Keeping it DRY". The methods he described in that article have been implemented in CI3 Fire Starter. All base classes are located in the /application/core folder.
This is the main core class used for loading settings, defining includes that get passed to the views, loading logged-in user data, setting the configured timezone, and turning the profiler on or off. All other classes extend this class.
This extends MY_Controller and drives all your public pages (home page, etc). Any controller that extends Public_Controller will be open for the whole world to see.
This extends MY_Controller and drives all your private pages (user profile, etc). Any controller that extends Private_Controller will require authentication. Specific page requests are stored in session and will redirect upon successful authentication.
This extends MY_Controller and drives all your administration pages. Any controller that extends Admin_Controller will require authentication from a user with administration privileges. Specific page requests are stored in session and will redirect upon successful authentication.
This extends MY_Controller and drives all your cron methods. See comments in /application/controllers/Cron.php on how to use.
This extends MY_Controller and drives all your API functions. Any controller that extends API_Controller will be open for the whole world to see (see below for details).
Includes can be appended and/or overwritten from any controller function.
Several core files have been included to simplify customizations:
In /application/config there is a file core.php. This file allows you to set site-wide variables. It is set up with site version, default templates, pagination settings, login attempt settings, enable/disable the profiler and default form validation error delimiters.
In /application/language/english is a file core_lang.php. This file allows you to set language variables that could be used throughout the entire site (such as the words Home or Logout).
In /application/helpers is a file core_helper.php. This includes the following useful functions:
Thanks to contributions from the community, the list of language translations is growing:
Registered users can set their own preferred language, admins can set preferred languauges for each user, and non-registered users can use the language selector to render the site in their preferred language. The application looks for a session variable ($this->session->language) to determine which language to show. If one is not found in the session, the default defined in the main config file is used. If the user is logged in, then their assigned language is used instead. If a user selects a different languauge other than what is configured, the selected languauge will be used during their session.
All available languages are also stored in the session to improve performance. They are available in $this->session->languages.
If a translated language file is missing, the application will use English as the fall back using the extended MY_Lang class.
This library allows you to internationalize your JavaScript files through CI language files and was inspired by Alexandros D on coderwall.com. It is included in /application/libraries.
Load this library in the autoload.php file or manually in your controller:
$this->load->library('jsi18n');
In your language file:
$lang['alert_message'] = "This is my alert message!";
In your JS files, place your language key inside double braces:
function myFunction() {
alert("{{alert_message}}");
}
Render the Javascript file in your template file:
<script type="text/javascript"><?php echo $this->jsi18n->translate("/themes/admin/js/my_javascript_i18n.js"); ?></script>
OR in your includes array:
$this->includes = array_merge_recursive($this->includes, array(
'js_files_i18n' => array(
$this->jsi18n->translate("/themes/admin/js/my_javascript_i18n.js")
)
));
CI3 Fire Starter comes with a simple user management tool in the administration tool. This tool demonstrates a lot of basic but important functionality:
IMPORTANT NOTE: user id 1 is the main administrator - DO NOT MANUALLY DELETE. You can not delete this user from within the admin tool.
Adding additional site owner-configurable setting fields couldn't be any easier. Simply add a new entry in the 'settings' table of the database with the information below. The script then does all the work and adds the setting fields to the form automatically. There's no need to modify the form yourself!
Settings are loaded in MY_Controller and are accessible in every controller, model and view file.
Non-translated Example:
$this->settings->site_version
Translated Example:
$this->settings->welcome_message[$this->session->language]
There are 2 responsive themes provided with CI3 Fire Starter: 'admin' and 'default'. There is also a 'core' theme for global assets. To keep the application light-weight, I did not include a templating library, such as Smarty, nor did I utilize CI's built-in parser. If you really wanted to include one, you could check out Phil Sturgeon's CI-Dwoo extension.
add_css_theme($css_files)
This function is used to easily add css files to be included in a template. With this function, you can just add the css file name as a parameter and it will use the default css path for the active theme. You can add one or more css files as the parameter, either as a string or an array. If using parameter as a string, it must use comma separation between each css file name.
1. Using string as parameter
$this->add_css_theme("bootstrap.min.css, style.css, admin.css");
2. Using array as parameter
$this->add_css_theme(array("bootstrap.min.css", "style.css", "admin.css"));
add_js_theme($js_files, $is_i18n)
This function is used to easily add Javascript files to be included in a template. With this function, you can just add the js file name as a parameter and it will use the default js path for the active theme. You can add one or more js files as the parameter, either as a string or an array. If using the parameter as a string, it must use comma separation between each js file name.
The second parameter is used to indicate that the js file supports internationalization using the i18n library. Default is FALSE.
1. Using string as parameter
$this->add_js_theme("jquery-1.11.1.min.js, bootstrap.min.js, another.js");
2. Using array as parameter
$this->add_js_theme(array("jquery-1.11.1.min.js", "bootstrap.min.js,", "another.js"));
add_jsi18n_theme($js_files)
This function is used to easily add Javascript files that support internationalization to be included in a template. With this function, you can just add the js file name as the parameter and it will use the default js path for the active theme. You also can add one or more js files as the parameter, either as a string or an array. If using the parameter as a string, it must use comma separation between each js file name.
1. Using string as parameter
$this->add_jsi18n_theme("dahboard_i18n.js, contact_i18n.js");
2. Using array as parameter
$this->add_jsi18n_theme(array("dahboard_i18n.js", "contact_i18n.js"));
3. Or we can use add_js_theme function, and add TRUE for second parameter
$this->add_js_theme("dahboard_i18n.js, contact_i18n.js", TRUE);
- or -
$this->add_js_theme(array("dahboard_i18n.js", "contact_i18n.js"), TRUE);
add_external_css($css_files, $path)
This function is used to easily add css files from external sources or outside the theme folder to be included in a template. With this function, you can just add the css file name and their external path as the parameter, or add css complete with path. See example below:
1. Using string as first parameter
$this->add_external_css("global.css, color.css", "http://example.com/assets/css/");
- or -
$this->add_external_css("http://example.com/assets/css/global.css, http://example.com/assets/css/color.css");
2. Using array as first parameter
$this->add_external_css(array("global.css", "color.css"), "http://example.com/assets/css/");
- or -
$this->add_external_css(array("http://example.com/assets/css/global.css", "http://example.com/assets/css/color.css"));
add_external_js($js_files, $path)
This function is used to easily add js files from external sources or outside the theme folder to be included in a template. With this function, you can just add the js file name and their external path as the parameter, or add js complete with path. See example below:
1. Using string as first parameter
$this->add_external_js("global.js, color.js", "http://example.com/assets/js/");
- or -
$this->add_external_js("http://example.com/assets/js/global.js, http://example.com/assets/js/color.js");
2. Using array as first parameter
$this->add_external_js(array("global.js", "color.js"), "http://example.com/assets/js/");
- or -
$this->add_external_js(array("http://example.com/assets/js/global.js", "http://example.com/assets/js/color.js"));
Chaining
These methods can also be chained like this:
$this
->add_css_theme("bootstrap.min.css, style.css, admin.css")
->add_external_css("global.css, color.css", "http://example.com/assets/css/")
->add_js_theme("jquery-1.11.1.min.js, bootstrap.min.js, another.js")
->add_js_theme("dahboard_i18n.js, contact_i18n.js", TRUE)
->add_external_js("global.js, color.js", "http://example.com/assets/js/");
set_template($template_file)
Sometimes you might want to use a different template for different pages, for example, 404 template, login template, full-width template, sidebar template, etc. You can simply load a different template using this function.
With the API class, you can easily create API functions for external applications. There is no security on these, so if you need a more robust solution, such as authentication and API keys, check out Phil Sturgeon's CI Rest Server. You could also just set your own request authentication headers to the code that's already there.
As I mentioned earlier, CI3 Fire Starter does not attempt to be a full-blown CMS. You would need to build that functionality yourself. If you're looking for a full CMS built on CodeIgniter, or need a more robust starting point, then check out one of these applications:
This list is provided only as a reference and is not an endorsement for any of these applications.
09/20/2019
01/27/2019
01/16/2019
06/25/2018
04/02/2018
01/25/2018
10/25/2017
09/05/2017
08/30/2017
08/10/2017
08/09/2017
08/09/2017
08/09/2017
05/30/2017
01/09/2017
12/28/2016
12/20/2016
12/14/2016
08/09/2016
07/26/2016
04/02/2016
03/28/2016
02/29/2016
01/20/2016
Thanks klavatron for your Russian translation.
12/23/2015
12/22/2015
12/19/2015
12/17/2015
12/11/2015
Thanks TowerX for your Spanish translation. Thanks yinlianwei for your Simplified Chinese translation.
11/10/2015
11/09/2015
11/02/2015
08/25/2015
Thanks DeeJaVu for your Turkish and Dutch translations.
06/16/2015
Thanks arif-rh and simogeo for your contributions.
04/15/2015
03/11/2015
02/17/2015
01/31/2015
01/31/2015
01/31/2015
01/31/2015
07/25/2014
05/06/2014
Too many to list them all, but here are some of the major changes:
10/10/2013
10/08/2013
Please fork CI3 Fire Starter on Github and help make it better!