{"id":3233,"date":"2014-05-08T12:54:32","date_gmt":"2014-05-08T12:54:32","guid":{"rendered":"https:\/\/www.inmotionhosting.com\/support\/2014\/05\/08\/intro\/"},"modified":"2023-06-07T15:15:03","modified_gmt":"2023-06-07T19:15:03","slug":"intro","status":"publish","type":"post","link":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/","title":{"rendered":"I&#8217;m Learning Joomla Component Development! &#8211; My Introduction"},"content":{"rendered":"<p class=\"alert alert-danger\">This tutorial series, Joomla 3 component development, is currently in progress\u2026<\/p>\n<p>I\u2019ve already written tutorials on <a href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-2-5\/hello-world\/\">writing Joomla plugins<\/a> and <a href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/switch-site-template\/\">creating Joomla templates<\/a>. A topic I\u2019ve skipped for quite some time is how to create a Joomla component. Why? Well, it\u2019s always seemed pretty difficult. Instead of writing code and placing it typically in a single file like plugins and modules, component development requires a much deeper understanding of various topics such as the <a href=\"https:\/\/docs.joomla.org\/Model-View-Controller\" target=\"_blank\" rel=\"noopener noreferrer\">MVC<\/a>.<\/p>\n<h2>Tutorials and other Resources for Component Development<\/h2>\n<h3>Joomla\u2019s own documentation<\/h3>\n<div class=\"white_box\" style=\"width: 300px; float: right; margin: 0px 0px 15px 15px;\">\n<p style=\"font-weight: bold; text-align: center;\">A quote from the tutorial:<\/p>\n<p style=\"font-size: 12px; line-height: 15px; text-align: justify;\">The class <i>HelloWorldView<b>HelloWorld<\/b><\/i> resides in <i>site\/views\/<b>helloworld<\/b>\/view.html.php<\/i> and will make use of the class <i>HelloWorldModel<b>HelloWorld<\/b><\/i> in the file <i>site\/models\/<b>helloworld<\/b>.php<\/i><\/p>\n<p>I\u2019m sure this makes sense, but not the first or second time I read it.<\/p>\n<\/div>\n<p>Yesterday, I spent a few hours reviewing the tutorials and code samples found in <a href=\"https:\/\/docs.joomla.org\/Developing_a_Model-View-Controller_Component\/3.1\/Introduction\" target=\"_blank\" rel=\"noopener noreferrer\">Joomla\u2019s documentation for Developing a MVC Component<\/a>.<\/p>\n<p>I like to think of myself as an experienced PHP developer, but I found myself a bit stumped going through that tutorial series. At times, I was reading the same paragraph over and over hoping it would click. Sometimes it would, but other times I found myself needing more visual aids to help drive home the points they were trying to make.<\/p>\n<h3>Lendr \u2013 <em>learn by example<\/em><\/h3>\n<p><img decoding=\"async\" class=\"sc_rc\" style=\"float: right; margin: 0px 0px 15px 15px;\" src=\"\/support\/images\/stories\/edu\/joomla-3\/create-component\/lendr.png\" alt=\"Lendr Component Example\"><\/p>\n<p>When searching the web for tutorials on how to create components in Joomla, the Joomla documentation mentioned above dominated the search results. I was also able to find <a href=\"https:\/\/lendr.websparkinc.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Lendr<\/a>.<\/p>\n<p>Lendr is a component for Joomla written by the team at <a href=\"https:\/\/websparkinc.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">webspark<\/a> (<em>which includes <a href=\"https:\/\/twitter.com\/dbhurley\" target=\"_blank\" rel=\"noopener noreferrer\">@dbhurley<\/a> \u2013 a member of <a href=\"https:\/\/www.joomla.org\/about-joomla\/the-project\/leadership-team.html\" target=\"_blank\" rel=\"noopener noreferrer\">the Joomla team<\/a><\/em>). It\u2019s a simple Joomla component in theory, and is accompanied by a tutorial series on how it was written.<\/p>\n<p style=\"clear: both;\">I skimmed through the tutorial series, which only confirmed my assumption that learning component development <u>the right way<\/u> can be tough and will require a commitment.<\/p>\n<h3>Component Creators<\/h3>\n<p>I think many other people have also realized what I have. In addition to a solid understanding and skillset of php \/ oop \/ and the mvc, component creation is tedious. When looking for tutorials, you\u2019ll actually end up on sites that offer automated component creation. What exactly does that mean? These services allow you to enter a few details about the component that you want to create, and they create the skeleton of the component and offer this file\/folder structure for you to download. The resulting component doesn\u2019t do anything, but the layout is there, and this allows you to jump right into coding. If you\u2019re interested in these component creator services, here are a few we found (in no specific order):<\/p>\n<ul>\n<li><a href=\"https:\/\/www.component-creator.com\/en\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Component Creator<\/a><\/li>\n<li><a href=\"https:\/\/www.j-cook.pro\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Cook<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial series, Joomla 3 component development, is currently in progress\u2026 I\u2019ve already written tutorials on writing Joomla plugins and creating Joomla templates. A topic I\u2019ve skipped for quite some time is how to create a Joomla component. Why? Well, it\u2019s always seemed pretty difficult. Instead of writing code and placing it typically in a<a class=\"moretag\" href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\"> Read More ><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4403,94],"tags":[4404],"class_list":["post-3233","post","type-post","status-publish","format-standard","hentry","category-joomla","category-joomla-3","tag-joomla-v3"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I&#039;m Learning Joomla Component Development! - My Introduction | InMotion Hosting<\/title>\n<meta name=\"description\" content=\"I&#039;ve never created a Joomla component the &quot;right&quot; way, but there&#039;s never a better time than now to start!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I&#039;m Learning Joomla Component Development! - My Introduction | InMotion Hosting\" \/>\n<meta property=\"og:description\" content=\"I&#039;ve never created a Joomla component the &quot;right&quot; way, but there&#039;s never a better time than now to start!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\" \/>\n<meta property=\"og:site_name\" content=\"InMotion Hosting Support Center\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inmotionhosting\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-05-08T12:54:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-07T19:15:03+00:00\" \/>\n<meta name=\"author\" content=\"Brad Markle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:site\" content=\"@InMotionHosting\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brad Markle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\"},\"author\":{\"name\":\"Brad Markle\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/5ae05d1210b0ef63c437ccedce2799bf\"},\"headline\":\"I&#8217;m Learning Joomla Component Development! &#8211; My Introduction\",\"datePublished\":\"2014-05-08T12:54:32+00:00\",\"dateModified\":\"2023-06-07T19:15:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\"},\"wordCount\":460,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"keywords\":[\"Joomla v3\"],\"articleSection\":[\"Joomla\",\"Joomla 3\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\",\"name\":\"I'm Learning Joomla Component Development! - My Introduction | InMotion Hosting\",\"isPartOf\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\"},\"datePublished\":\"2014-05-08T12:54:32+00:00\",\"dateModified\":\"2023-06-07T19:15:03+00:00\",\"description\":\"I've never created a Joomla component the \\\"right\\\" way, but there's never a better time than now to start!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inmotionhosting.com\/support\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I&#8217;m Learning Joomla Component Development! &#8211; My Introduction\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#website\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"name\":\"InMotion Hosting Support Center\",\"description\":\"Web Hosting Support &amp; Tutorials\",\"publisher\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#organization\",\"name\":\"InMotion Hosting\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"contentUrl\":\"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg\",\"width\":696,\"height\":696,\"caption\":\"InMotion Hosting\"},\"image\":{\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inmotionhosting\/\",\"https:\/\/x.com\/InMotionHosting\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/5ae05d1210b0ef63c437ccedce2799bf\",\"name\":\"Brad Markle\",\"url\":\"https:\/\/www.inmotionhosting.com\/support\/author\/bradm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I'm Learning Joomla Component Development! - My Introduction | InMotion Hosting","description":"I've never created a Joomla component the \"right\" way, but there's never a better time than now to start!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/","og_locale":"en_US","og_type":"article","og_title":"I'm Learning Joomla Component Development! - My Introduction | InMotion Hosting","og_description":"I've never created a Joomla component the \"right\" way, but there's never a better time than now to start!","og_url":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/","og_site_name":"InMotion Hosting Support Center","article_publisher":"https:\/\/www.facebook.com\/inmotionhosting\/","article_published_time":"2014-05-08T12:54:32+00:00","article_modified_time":"2023-06-07T19:15:03+00:00","author":"Brad Markle","twitter_card":"summary_large_image","twitter_creator":"@InMotionHosting","twitter_site":"@InMotionHosting","twitter_misc":{"Written by":"Brad Markle","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#article","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/"},"author":{"name":"Brad Markle","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/5ae05d1210b0ef63c437ccedce2799bf"},"headline":"I&#8217;m Learning Joomla Component Development! &#8211; My Introduction","datePublished":"2014-05-08T12:54:32+00:00","dateModified":"2023-06-07T19:15:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/"},"wordCount":460,"commentCount":1,"publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"keywords":["Joomla v3"],"articleSection":["Joomla","Joomla 3"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/","url":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/","name":"I'm Learning Joomla Component Development! - My Introduction | InMotion Hosting","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#website"},"datePublished":"2014-05-08T12:54:32+00:00","dateModified":"2023-06-07T19:15:03+00:00","description":"I've never created a Joomla component the \"right\" way, but there's never a better time than now to start!","breadcrumb":{"@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.inmotionhosting.com\/support\/edu\/joomla\/joomla-3\/intro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inmotionhosting.com\/support\/"},{"@type":"ListItem","position":2,"name":"I&#8217;m Learning Joomla Component Development! &#8211; My Introduction"}]},{"@type":"WebSite","@id":"https:\/\/www.inmotionhosting.com\/support\/#website","url":"https:\/\/www.inmotionhosting.com\/support\/","name":"InMotion Hosting Support Center","description":"Web Hosting Support &amp; Tutorials","publisher":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inmotionhosting.com\/support\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.inmotionhosting.com\/support\/#organization","name":"InMotion Hosting","url":"https:\/\/www.inmotionhosting.com\/support\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/","url":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","contentUrl":"https:\/\/www.inmotionhosting.com\/support\/wp-content\/uploads\/2023\/02\/inmotion-hosting-logo-yoast.jpg","width":696,"height":696,"caption":"InMotion Hosting"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inmotionhosting\/","https:\/\/x.com\/InMotionHosting"]},{"@type":"Person","@id":"https:\/\/www.inmotionhosting.com\/support\/#\/schema\/person\/5ae05d1210b0ef63c437ccedce2799bf","name":"Brad Markle","url":"https:\/\/www.inmotionhosting.com\/support\/author\/bradm\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"primary_category":null,"_links":{"self":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/3233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/comments?post=3233"}],"version-history":[{"count":7,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/3233\/revisions"}],"predecessor-version":[{"id":104847,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/posts\/3233\/revisions\/104847"}],"wp:attachment":[{"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/media?parent=3233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/categories?post=3233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/support\/wp-json\/wp\/v2\/tags?post=3233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}