{"id":282,"date":"2009-08-31T10:34:04","date_gmt":"2009-08-31T14:34:04","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/brandonhaynes\/?p=282"},"modified":"2009-09-06T11:55:59","modified_gmt":"2009-09-06T15:55:59","slug":"screenshots-dotnetnuke-and-magento-integration-experiment","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/2009\/08\/31\/screenshots-dotnetnuke-and-magento-integration-experiment\/","title":{"rendered":"Screenshots: DotNetNuke and Magento Integration Experiment"},"content":{"rendered":"<p>Over the last few months, I have been doing some initial architectural research regarding the integration of DotNetNuke with arbitrary external e-commerce systems. \u00a0Note that this research is highly embryonic, largely experimental, and highly likely to not reach any sort of production-ready fruition. \u00a0Its purpose is to inspire discussion, not demonstrate code. \u00a0<em>Caveat lector<\/em>!<\/p>\n<p>As one of my goals is reasonable provider-independence (via <a href=\"http:\/\/en.wikipedia.org\/wiki\/Adapter_pattern\">adaptation<\/a>), this is not about realizing any particular vendor (despite the fact that I address one specific such vendor herein). \u00a0That said, I have been asked by several parties to share a bit more about where this stands;\u00a0it is with this in mind that I present an initial update.<\/p>\n<p><!--more--><\/p>\n<p>In selecting a set of third-party providers, it was of some importance to deal with an e-commerce system that was reasonably foreign to the .NET universe (within which DotNetNuke lives). \u00a0With this in mind, I selected the <a href=\"http:\/\/www.magentocommerce.com\/\">Magento framework<\/a> as an initial target for review. \u00a0In addition to being PHP-based, it boasts a reasonably sophisticated API, a beautiful interface, and solid overall architecture.<\/p>\n<p>Integration in conformance with my internal architectural specifications was largely straightforward. \u00a0However, Magento currently lacks any meaningful cart-API. \u00a0This means that, <em>inter alia<\/em>, there is no API method by which an external consumer may retrieve a customer&#8217;s current basket (without resorting to screen-scrapes and other such horrors). \u00a0As such, it remains incomplete as an option for fully satisfactory externalization &#8212; though it is tantalizingly close. \u00a0It is my hope that this omission might be corrected in some subsequent Magento release, though I have no inside information about plans for future API development.<\/p>\n<p>I present the screenshots below &#8212; designed to closely emulate the <a href=\"http:\/\/demo.magentocommerce.com\/\">Magento model store<\/a> &#8212; as a point of discussion about the potential future of DotNetNuke and e-commerce. \u00a0All components displayed therein are actual, working modules. \u00a0In my opinion, this is what e-commerce on the DotNetNuke framework should look like.<\/p>\n<p>Note that, in the area of e-commerce, I am largely constrained by contractual IPR constraints, and this significantly affects my ability to release the constituent modules. \u00a0However, as my architectural research continues, it is my hope that these data might be partitioned and released in an open-source manner (as is all of my other DotNetNuke-related work).<\/p>\n<p>As always, comments are appreciated.<\/p>\n<h4>DotNetNuke and Magento Integration Screenshots<\/h4>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 50%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-282 gallery-columns-2 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/files\/2009\/08\/magento-experiment-catalog.png'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/files\/2009\/08\/magento-experiment-catalog-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" aria-describedby=\"gallery-1-286\" \/><\/a>\n\t\t\t<\/dt>\n\t\t\t\t<dd class='wp-caption-text gallery-caption' id='gallery-1-286'>\n\t\t\t\tDotNetNuke and Magento Integration: Experimental Catalog Page\n\t\t\t\t<\/dd><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/files\/2009\/08\/magento-experiment-basket.png'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/files\/2009\/08\/magento-experiment-basket-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" aria-describedby=\"gallery-1-285\" \/><\/a>\n\t\t\t<\/dt>\n\t\t\t\t<dd class='wp-caption-text gallery-caption' id='gallery-1-285'>\n\t\t\t\tDotNetNuke and Magento Integration: Experimental Basket Page\n\t\t\t\t<\/dd><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n\n<p>Attribution Notice: \u00a0These screenshots above are derived from\u00a0<a href=\"http:\/\/www.magentocommerce.com\/license\/\">Magento IP<\/a> released under an <a href=\"http:\/\/www.opensource.org\/licenses\/osl-3.0.php\">Open Source License (&#8220;OSL&#8221;) version 3.0<\/a>. \u00a0As such, I am required per\u00a0\u00a71.C\u00a0to license these images under the same; all other rights (including rights over the\u00a0<span><span>accompanying <\/span><\/span>text) are reserved per the notification below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last few months, I have been doing some initial architectural research regarding the integration of DotNetNuke with arbitrary external e-commerce systems. \u00a0Note that this research is highly embryonic, largely experimental, and highly likely to not reach any sort of production-ready fruition. \u00a0Its purpose is to inspire discussion, not demonstrate code. \u00a0Caveat lector! As [&hellip;]<\/p>\n","protected":false},"author":1933,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[6154,4329,3070,19470,6155,6254,1167,8876,13223,19469],"class_list":["post-282","post","type-post","status-publish","format-standard","hentry","category-technology","tag-6154","tag-cloud-computing","tag-dotnetnuke","tag-dotnetnuke-dnn-content-management-system","tag-dotnetnuke-51","tag-dotnetnuke-integration","tag-e-commerce","tag-ecommerce","tag-magento","tag-technology"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/users\/1933"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/comments?post=282"}],"version-history":[{"count":10,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/282\/revisions"}],"predecessor-version":[{"id":303,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/282\/revisions\/303"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/media?parent=282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/categories?post=282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/tags?post=282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}