Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed last year.
Improve this question
Ok, magento is new to me, and in fact ecommerce site development itself is new.
Magento seems to be extremely difficult to get to grips with - I have spent 3 days now going round I'm circles trying to create a custom theme and modules.
The documentation is poor, the code and structure appears obfuscated - when will it get easier?!
Are there any specific tips or advice that you can offer for learning magento properly ?
For any other developers out there - how long (full time development) did it take to start to make sense of magento and to get things done quickly?
AS Phliplip said, have a understanding of the MVC pattern and the way Zend Framework implements those. Especially the Controller part, Model and View are handled differently.
Make sure you use a descent editor (e.g. eclipse+pdt) which allows you to click at any function and it will show you the source as well as setting up xDebug so you can travel though some code while its running and see the values of the variables.
Magento gets controlled by many config.xml files in each module which get merged to one big xml. So you need to understand how you setup a module and what Mage::getModule('yourmodul/xx_yyy') does.
as well es Mage::getResourceModule(), Mage::helper(), Mage::getBlock()
Make sure you are 100% familiar with the class Varien_Object,... and become a fan of it :)
Try to understand the Magento Collection class which basicly wraps any mysql query returning more then one result
Get familiar with a the database eav model
When you are planning on altering the database,... you should make sure you understand the magento installer.
There is lot more....
it took me I don't know 6 month to get a good understanding of it...
The first step towards getting anything done in Magento is to read the Magento Design Guide.
Once you are familiar with the XML/Block system, you can make changes to the design portion very easily. Once you're comfortable with that, you're going to want to take a look at every folder in your base Magento install. Each folder has a purpose, and having an understanding of what each one's function within Magento will help you when you decide to start making modules.
Alan Storm has a great tutorial for your first module here. I'd read that carefully and get the books that he suggested; they are great resources.
Finally, start tracing functions through the code. I basically have grep -R available at all times to find out where methods are defined so I can better understand what their capabilities are. Because of the size of Magento, sometimes that's the best way to find answers.
Good luck!
Magento is build upon Zend Framework. I think basic knowledge of ZF will get you af good head start.
Try have a look at 'ZendFramework in Action'. That's where i started with ZF.
ZFiA will probably give you a good insight into the MVC-pattern and directory-structure of ZF. This you should be able to project onto Magento.
And i'm currently working on 2 ZF projects. I have yet to do a Magento shop, but it's in the commings.
Played around with Magento, right after the release. And must say that there were lots problems just to get it to install and to perform good. So haven't been playing with it since. It's my impression that it's evolved since then, and the performance issues should be ironned out. Still not an application you should run on a 1-buck shared hosting.
Magento can be a challenging platform to learn, but with the right tips, it can be a breeze. Here are some of the best tips for mastering Magento:
Start with the basics. Make sure you have a strong understanding of the fundamentals before moving on to more complicated concepts.
Use online resources. There are plenty of helpful tutorials and videos available online that can guide you through the learning process step by step.
Practice, practice, practice! The more you Mmcgbl work with Magento, the easier it will become to use and understand.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
We are planing to make a new system to replace our 10 year old system, in doing so we are considering to make the new system in Laravel. Now I have concerns I will have to hack the whole thing and make it a mess to make it work as we wish. So I am asking if someone knows a better solution for it, or can tell that it is already made in it.
we need:
ftp, sftp, which are cron triggered.
mail daemon which is cron triggered.
easy way to implement multiple factories and easily to encapsulate them (i am thinking to use the model part for it)
easy possibility to switch the global database connection
inter server connectivity
caching functionality like memcache built into the database layer and object layer
possibility to tell the framework which pulls get stored in cache
an easy Templating system, ye i know i can make one easy, but some which is already done in Laravel would help :)
we have our own servers so module installations are not a problem.
Unit test implementations on factory based systems.
All suggestions are welcome, if i am by any chance in the wrong stack overflow part please just say in which section i should move it. Thank you in advance for all feedback :)
UPDATE->
The requierements above are minimum requirements for us/me to consider the framework good enough. If somone is able to point to tutorials how to do the stuff with laravel. Please provide links. In special Unit testing Laravel controllers, cron setup from Laravel... and so on..
This is truly a question only to be answered by you and your team (in terms of effectiveness, language understanding and framework pattern knowledge).
Laravel can surely withstand such projects and migrations but most of the frameworks out there can do, personally I've been using Laravel and Cakephp in terms of PHP frameworks and find both of them quick, efficient and easy to use (with Laravel code a bit more easily to read through large projects).
On the other hand there are frameworks out there which efficiently do what you need quicker and easier than most php frameworks, django (python) is one example, stable, lightning fast development (if you are already familiar with python concepts) and proven (instagram, disqus etc).
Nearly all frameworks have known RDBMS support, but are a bit back in terms of NoSQL support (yet you can find plenty of projects that provide support for NoSQL), Laravel can easily switch DB's but compared to the "DB router" feature of Django I believe it feels a bit behind on how much detail has been put to it.
Laravel is a beautiful framework, but this isn't a stackoverflow type question. None of us will be able to really give good advice, other than say Laravel is good.
Let me refine the question. I am not asking for opinion if i am using the right framework, i need some hard data.
I already know Zend 2 (working with it 1.5 years) and it is to bulky and to developer footprint heavy for our project(our logic would have to be developed into the damn thing... just not practical).
I already work with Cake, and it is to simple for us,
Symphony i know to, but it has BIG problems with our structures.
Code igniter is.... to simple... and so on and on...
I am currently reading trough Code Bright Book for introduction of the possibility's from Laravel. And i am half trough. But i have not found anything that tells me it can help my project with the points which are pointed out.
So i am asking again, i need examples of the points implementations in its simplest way for comparison. except in Zend, Code Igniter and Symphony.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I want to see if any of you know a (free and open source will be ideal) tool/ app that can help build a php web application very quickly without investing too much time on writing codes, preferring drag and drop/ point and click work-flow designer for logic design (see Agile from Outsystems below). Plus, visual designer for the business logic is great since it can help a developer visualize the logic better.
There are a lot of GUI builders, form builders out there, but I am looking for one app for the entire web application development process.
My goal is to find an application that a team of developers can use together and use the build-in code of the app as much as possible. E.g. the app will provide a modular just for handle user login or a shopping cart; a developer just need to drag and drop the modular to the logic designer and the code will be generated. This way the functionality will be in a module and code will always be standard across developers. So if a new developer get on-board, he will just need to use the system and get up and running quickly.
To explain this better: there is a lot php frameworks, e.g. cakephp, CodeIgniter, etc which I can use to help coding, but still I need to create (code) the GUI, writing quite a bit of codes. I am looking for a tool/ app that is a little more high level than those frameworks. Here is 2 examples apps I found during my google search which they have visual logic designer and gui builder in one single app. Also a single click deployment (but I need it to be php apps or at least I can deploy the (php) code to a LAMP/ WAMP server):
Wavemaker: for JAVA
Agile from Outsystems: for JAVA or .net (This one is really good, with work-flow drag and drop logic designer!)
Talend: it is just an ETL tool, but the concept is what I want to bring up. Drag and drop, point and click logic design. Custom code can be added if it is needed, but the drag and drop process already finished the structure and most of the coding of the web app one needs to build.
I want to list Adobe Flex, but it is more like a GUI designer + IDE, not exactly what I want to describe here. The drag and drop/ work-flow logic designer is a key for the app.
I could go for the CMS route by learning how to extend them, but it is not that flexible for me and is a long learning curve.
Anybody came across this type of app before? Or any idea of how can I find those apps? I googled them for long time, I don't see any of them for php and just few (just 2) for Java.
Thanks in advance!
Here are some free PHP RAD tools:
AppFlower
AppGini
nuBuilder
Limbas
CrossUI
You can extend this list if you know more.
I am just trying out RADRIA, which you can check out at http://radria.sqlfusion.com/
Open source, free rad tool that runs on LAMP server and includes tools for creating both web pages and online linked databases with add and update screens. At first glance, appears to require some knowledge of SQL to install some database features. A low-budget Wavemaker.
My experience is that there is an eternal trade-off in software: the more it will do, the more difficult it is to learn. Because Radria will do a lot, it presents the user with a forest of menus.
Delphi for PHP seems to fit almost all your needs, but it's not free.
You can try PHPRad. Just connect to your database(MySQL) then it can generate complete application.
It uses simple powerful MVC framework.
You can drag and drop components like:
charts
record counts
Dynamic Menus
Sub-page
etc ...
onto any page.
it has flexible numerous options that helps you generate your applications that best suit your specifications.
You can download the window setup from here.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am building a website and need to use a CMS.
If I use an already made CMS, I need to be able to extend it easily.
Is there a specific CMS that you recommend or should I make my own?
OpenSourceCMS is an excellent place to start. They offer demos, user rankings, etc. of many different CMS systems.
You can also find relevant questions here on stackoverflow by searching for "php cms".
Personally, I like Drupal, MODx and Concrete5. Drupal and MODx because of their extensibility, Concrete5 because of its simplicity.
I have found SilverStripe to be quite useful, used it on an intranet project - built in authorization, nice content editing built in, easy templating language, workflow, content versioning. I also like that they have good documentation and Help. The Demo is also impressive.
http://drupal.org/ comes highly recommended.
good community and plugins/addons.
Josh
If you are looking for simplicity try Concrete5 or MODx. They are both easy to install and work with.
Had the opportunity to use Joomla, there are many plugins/templates/tutorials and a few books out there. If you are good in php you will find it very easy to create your own plugins or extend existing functionality. However big drawbacks are the many exploits and some limitations (only mysql as a database, versioning of articles, detailed permissions, multilingual support) that hopefully will all be fixed with Joomla 1.6.
The beauty of most good packages is it won't hurt you too much to get dirty with a few of the well managed and easily installed packages to see what's best for you.
I have stumbled through Drupal and ended up on Joomla. I found Drupal to be highly powerful and technical. Joomla is the same, but seems to do straight-forward stuff a bit easier. Both work quite well.
If your application is very simple, Concrete5 is definitely worth looking at. I go with Joomla for most projects right now and am keeping a close eye on Concrete5...
Let us know what you went with and why!
I really like SilverStripe's admin and extendability.
Right now, I'm running http://gallery1401.com/ on SilverStripe.
It has nice image upload, and custom fields, and rails-like associations and data management.
Runs on a typical php/mysql stack, with strictly object-oriented architecture.
I'm surprised no one mentioned ExpressionEngine. It is not free (that's probably why) but it's PHP, has a thriving community, a lot of plugins (good ones not free, but a php programmer could consider this a possible revenue source). It's built on a PHP framework - Code Ignitor.
I'm playing with Concrete5 right now - I really love the in page editing. It's MVC based, extensible. Simpler (so far) than EE, EE is easy to use and template, simpler than Drupal. Drupal is amazingly powerful, but as others have noted there is a steep learning curve. Even if you're a php whiz you have to learn "the Drupal way" to template, to code, everything, it's really quite involved. That said, Drupal can really do anything and powers some very robust and high profile sites and has a huge community.
UDPATE: MODX Revolution (v2) is no longer "brand spankin' new. Use v2 instead of v1.
If integrating custom design is a big factor I highly recommend using MODx (v1 since v2 is still brand spankin' new). It's loved a lot by designers and developers alike. I have heard good things about EE, concrete5 and SilverStripe though. I really only know MODx though. The design integration rules (no themes to mess with like many other CMSs). Very extendable for PHP ninjas as well and the community is SUPER helpful and friendly. Hope this helps someone as I know I'm replying a year and a half later from the last post!
its sad that no one seems to include wordpress in these discussion
my recomandation is wordpress.org but it also can be wordpress MU and MU in combination with buddypress
one great advantage of wordpress is plugins
it has if not the most extensive plugin selection
and on top of that the same goes for its template selection
please do check them out
I haven't been impressed by CMSses out so far, but Concrete5 and MODx are definitely two to check out.
I'd like to see the documentation and community of Concrete5 grow into something as big as Joomla or Drupal. That will only happen with more users, but it's good enough to get started with right now.
If you want to go the "Rails way", you may want to check out CakePHP, a rapid development framework that adapts most of Rails' functionalities. Also VERY easy to extend!
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
What is the best method of understanding how and why a framework was written the way it was?
Develop a feature for it, or fix a bug. If you use the framework for developing a real-world solution, you can make a list of shortcomings to address or features to add that would make your task easier.
Fixing a bug will really help you understand the code, because most of the time you are given a piece of example code that recreates it, which you can then trace down into the bowels of hell to find where things go wrong.
All it takes is persistence, really.
Take a very simple component and analyze the code. For example, look at some of the components of the Zend Framework (something utterly simple like Zend_Version or, to step up a bit but still keep it simple, Zend_Debug). Pick them apart and see what makes them tick. Then, try to write your own simple component.
After making many websites 'from scratch' I found myself reusing the same scripts over and over, and I found some things tremendously tedious because I never bothered to abstract them away before for re-usability. So, if you have any experience making websites, you should have a pretty good feel for what your framework should include. If not, I would probably start by thinking of an MVC file structure, get your framework to first work with views, then controllers, then models. Then make sure each of those is easily extendable because no matter how hard you try, there will always be things missing... and then just start slapping on utilities as you need them (form helpers, model helpers, etc.). In other words, come up with a project for which you would like to use the framework, and build the framework and website concurrently.
I know the world needs another like it needs a hole in the head, but writing your own framework is a great way of learning a language. I wrote a fairly complete one in PHP in under a fortnight and learned a hell of a lot about PHP and Web development in the process.
The only reason I haven't released it is because I was finally not happy with the way it managed session state, but that was a good learning experience too!
I think the way to begin framework design is to write down about 5 basic aims for it. For mine, these were:
aimed at producing simple Web apps with a dozen or so forms
aimed at people with a good knowledge of SQL
no procedural code PHP or otherwise (except for that in SQL SPs)
no HTML/javascript/CSS programming needed
application described in XML
work on a vanilla PHP/Apache stack
no state maintenance on server
That was enough to get me started.
The other suggestion I can make is to try to build an app using the framewark at the same time as you build the framework itself. This will quickly reveal problems and suggest ideas for new directions abd features.
You are on the right track. Just remember that Rome wasn't built in one day. Every house is built over a longer period, brick by brick.
By using a framework, you will discover some of it'S shortcommings and be able to find some functionality that is missing or needs improvement.
Start there, develop the improvement and submit it to the frameworks community for peer review. Even if they decide not to include your work into the framework, you will receive very valuable feedback on your work.
Don't stop there, use what you learned in your first attempt for a second one (and a third, fourth, fifth...) That way you will learn to understand what others expect from the framework (which might differ very much from your own expectation), and slowly understand the inner workings of hte framework itself.
Conclusion: Be patient and persevere. Understanding will follow. (Sounds esoteric, I know. But it may work!)
There are a number of things that most frameworks include, although the definition is fuzzy.
Provide a basic bootstrapper (manage settings, setup environment, check for compatability issues between PHP versions, etc.)
URL Routing - How to define rules for which URLs point to which pages.
Manage plug-ins, libraries, modules, etc.
Database ORM - Manipulate objects instead of writing SQL queries (simplified)
Templating - Usually involves creating a mini-language for template logic (loops, conditionals) to avoid having PHP code in the template itself.
Beyond this, most frameworks also include a slew of libraries from simple e-mailing to advanced web service API's.
I would recommend two frameworks to look at:
Codeigniter
I recommend this because it's a "batteries included" framework that works out of the box. It also has a great community, lots of 3rd party libraries. CI has a bit of trickery to get the framework to play nice with both PHP4 and PHP5, which is also good to know (because, for some reason, a lot of people still use PHP5). You should also take a look at KohanaPHP, which is a branch of CodeIgniter that has been rewritten as a strict PHP5 framework.
Zend Framework
Zend is a module-based framework. Instead of dropping everything in a directory and churning out pages, you pick the parts you need and glue them together yourself. Since Zend is made by the folks behind the engine behind PHP (confused yet?) it uses "the latest and greatest" of PHP5 - everything is Objected-Oriented and it uses type hinting. Very clean code, if a bit verbose.
I think the essential stuff is the bootstrapper (the "glue" for the framework), as well as how each framework implements a system to support user-made libraries and plug-ins. The rest you can find as stand-alone applications elsewhere.
you should really try to understand, on a high level, the life cycle of a request. here's a good example a what happens from request to response in the Zend Framework, http://framework.zend.com/manual/en/zend.controller.basics.html
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Facing a need for a single CMS we can use for rapid deployment of customized CMS solutions, I am wondering if anyone can share any constructive feedback, experiences, pros and cons of this, seemingly powerful, piece of software.
The whole story/marketing pitch sounds solid, and from a quick glance at the CMS itself things seem to be put together in a coherent and pretty flexible way. I am however looking for first hand experiences as they usually reflect the real situation way better than anything else.
If you have used (or are still using) ezPublish for something, I would love to hear about it.
Thanks!
Having in mind all good points of eZ Publish you should be aware of bad ones. From programmer point of view: Most of the system was written in php4, and was rewritten in a hurry, to make it works with php5. Lack of design patterns and object oriented approach in kernel, makes system hard to develope with, and to read its code. To add some heavier functionality not supplied by CMS, you can use extension system. Problem is programming extensions is slow and painful (documentation only in code). There is quite good technical documentation on www.ez.no but most of it is for webdesigners.
I'v used ezPublish for quite a while and I can say its very flexible and allows a range of different solutions to quickly be developed with it. The ability to add content types is what makes it awesome.
It can be a little bit slow at times, but with proper caching set up it can also be really fast.
The biggest downside: The learning curve is very steep and long, and there aren't enough knowledgeable eZ Publish developers available in North America.
However, from the beginning I've been fond of its overall architecture, which seems to be elegant, flexible and generally well thought-out. Over time, some things have been bolted on in ways that don't necessarily fit perfectly. But it's pretty amazing what you can accomplish with the core functionality, and overriding and extending the core is clean and maintains good separation.
I would say that if you are in it for the long haul and can afford to train your developers (really, you can't afford not to) then eZ Publish is a reasonably good choice. Once you figure out the platform and develop your own kit of tools, it should be fairly quick to deploy custom solutions.
I will also concur with an earlier answer, that the class system really shines. Caching is always an issue, so don't forget to learn the caching system. Your site can fly on eZ Publish, but you must understand caching to make it do so!
I have Used eZ Publish for some years now.
It was quite difficult to learn it at first and understanding the structure, but when you are on the way then everything would be simple and fast, especially with their new kernel on Symfony2.
I would recommend using eZPublish 5, as I suppose you no longer talk about the older versions, only if you have at least some basic knowledge of eZ version4. That is because the admin is still using the legacy and all the settings are done using .ini files which you really have to know. Nothing hard, but learning curve is definitely steep.
Also using eZFlow will require working with both .ini and .yml configuration files, so you need to understand both config structures.
Further on, as I have been at a presentation for the new admin, which unfortunately will be using YUI as JS framework, and having seen the release plan for this year, I can say you will have to keep the legacy admin if you want to benefit of all the functionalities as there is an enormous amount of work to be done to have everything migrated on Symfony 2.
Even with the announcement of eZPlatform(eZ 6), I am not that confident we will have a really STABLE version anywhere this year.