As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm looking for a good, clean PHP-based CMS that has as powerful in-place editing functions as Apostrophe which is great, but out of the question because of its strong reliance on Symphony and command-line tools that I can't use for this project. (As discussed in this question, with a nice contribution from one of Apostrophe's developers! You don't get that every day.)
"In-place" means that almost all editing work (adding content, deleting content, managing media...) takes place in the front-end of the web site, with a small menu in the screen's corner leading to everything else.
Consequently executed, this is an extremely intuitive approach that is very easy to use for end-users a whole lot because of the "point-click-and-type" philosophy.
Does anybody have any solid recommendations?
Take a look at Concrete 5. It used to be proprietary but not anymore and is built using the Zend Framework.
Another CMS that has similar (if not better) functionality but is fairly new is ImpressPages.
Drupal has no seperate backend, all front end stuff. You can use admin panel to still create a good lookin admin panel in your front end though.
All content basically has the tabs
- view
- edit
- revisions
- translate
And any other action you can undertake, same with users.
Drupal's pro's are simple build(no MVC or OOP), large open source community, thousands of modules and module writing for Drupal isn't very complicated.
I see you tagged this wysywig, Drupal allows simple switching between editors and allowed input formats when editing content. :)
Hope this helps.
Try out Pimcore. It provides inline editing and previewing each page in an easy manner.
Demo video of drag & drop interface
Demo video of editing a page
It's built on top of Zend Framework and pretty easy to extend.
"In-place" means that almost all
editing work (adding content, deleting
content, managing media...) takes
place in the front-end of the web site
[...]
Well, the admin is at /admin but there are "preview" buttons for the view of the page currently being edited, and the WYSIWYG does a very good job with keeping a similar layout of the actual layout of the page (i.e. inserting inputs and other form controls right on the elements).
I looked at quite a lot of CMS's and at the end of the day I found this one.
GetSimple
http://get-simple.info/
Its a really great, tiny CMS that is just a very simple and efficient CMS that is easily modifiable.
There is a such a great saying, "With great power comes great responsibility", for me the worst thing that could happen is if you CMS is hacked, goes down and you cannot figure out what software update caused it, I think you are going to stress a lot. Get Simple is very elegant, small and easy to work with.
Highly recommended but might not be suitable for everyone.
It took alot of searching to find this but it sounds like Exponent CMS is your best bet for getting as close to Apostrophe as you can. I provided the wiki link so you could view the demo link at the bottom and the website link for downloading.
No matter what CMS you go with you will need to learn the syntax and methods. Symfony "can" be done all manually by just creating the files yourself instead of having the symfony file create them for you. Should you need to run command line commands, you could always run exec() from php.
There seem to be at least 2 wordpress plugins that enable in place editing.
I don't know what features Apostrophe offers and neither did I try the WP-plugins so I can't compare them.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I am currently working on a project for which I haven't found a solution yet, although i've been searching the web (stackoverflow included, obviously) for nearly 2 days.
The company i am working for has the need of gerating several kinds of pdfs: machine/product labels (small ones with info), product trial/test reports (typically A4 size, several values), and any other kind that shows up. All the company's data is the cloud in SQL-Server and the application needs to be web based as well, so that it can be used by anyone around the world (Suppliers, clients, colaborators).
Basically, some years ago a php script was done using TCPDF so the IT guys could create report templates programatically, that could be used anywhere. Nowadays, they use the same script but they create the templates in a web application done in VB.NET but it is not the perfect solution because it is full of bugs and limitations.
What is expected is an application that anyone (from the receptionist to the administrator) can use, that allows the generation of a custom template that will later be used to generate pdfs with the desired data fetched from their database.
As far as I see, there are 3 options:
1 - Use some kind of commercial or free tool which is already done and being used by other companies. Although it seems odd, i couldn't find a tool for this. How come there isn't one, considering that basically any big company needs to generate several types of pdfs everyday?
2 - Correct the existing VB.net application and php script, extending its functionality and reliability;
3 - Come up with a completely new approach for this. I've been thinking in creating a web app that allows people to drag and drop elements so that they can build the desired template (vb.net?c#?). Export this template to xml/json. Use this template and the set of fetched vars from the database to generate the pdf using any of the available tools (FPDF, TCPDF, or any other kind of php tool [php is desired to maintain the usability of the current working templates]).
I would really appreciate any kind of input, brainstorm or wild ideas.
One idea would be to look at JasperReports. It can output templates to PDF. I believe it can also run as an applet.
For a more modern look, you could write an ajax client that talked to a java server to call Jasper there.
This is certainly a common requirement - customisable templates for reports/documents. Web-editing facilities are one way of approaching the problem, but it seems very hard to get the web-ui to marry well to an output PDF (pagination alone is a significant roadblock).
Docmosis (a commercial document generation engine) seems like a pretty good fit here for providing the customisable-template capability and output to PDF etc. Because the "templates" are basic word or openoffice writer documents anyone can edit them (though some templates become complex enough you would avoid this for some customer/user groups).
A common implementation (which sounds like a solution to one of your key requirements) using Docmosis is to provide a set of templates in the application and allow the users to download, modify then upload back into the system. The templates take immediate effect and Docmosis has some interesting features to assist users detect and find errors in their template (such as writing errors into the produced PDF/doc as footnotes to describe what is wrong).
Please note I work for the company that created Docmosis.
I hope that helps.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am building a website, newfutureuniversity.org, and I'm not sure if I should rebuild it under a CMS or not. I can do procedural PHP but not OOP PHP (I could learn it if needed though). I have been struggling with this problem for some time so I decided to ask it here.
My page right now works this way: Every page has an include at the beginning and at the end, and each of them calls other includes. For example, the one on the beginning calls the 'translation.php', 'login.php', 'menu.php', etc.
Requirements
Code management. I'm currently using AjaXplorer. It's great, very complete and the little it cannot do the tools my host ( 000webhost ) provides suffice. The other good side is that it allows multiple users with different permissions. I need this functionality to remain.
Blog. I am using Chyrp for blogging since it's lightweight and accomplish my objectives for the blog bit.
Users. Not using any engine, just build my own in old plain PHP. Users can register, log in etc.
Languages. Also built my own. It allows me to translate every bit of information.
Wiki. Or similar. I need (not done yet) a highly personalized wiki engine for the files in the page. I am not sure yet if finding some lightweight one and personalize it or doing one myself. Also, I should include CKeditor in the wiki engine.
Some more future features that I still have to think about.
As you can see, I need a 'base' and different types of engines running at the same time on different directories.
Problems
If there were no problems I wouldn't be writing this question. These are the main problems I find:
Centralized user. The most important problem. Because I'm mixing different engines, each one uses (and even worse if I include the wiki) different user tables. I want a visitor to only need to register once, and then to be able to surf through the wiki, the blog, submit files or to do anything else with the same user name.
Centralized programmer. Same as the user but with the programmers I plan to add to the project. Also it should work with the permissions. Not needed, but much better if possible.
Style. Instead of having to manually change the engines, to have the same style by default to every one. This is probably not possible but also not really important (nor needed), just time consuming.
Therefore, these engines must be built on the same 'base' (CMS), not individually run on different directories. I was thinking about switching to Drupal for the enormous support out there or Joomla for being 'more' customizable, based in what I have read online.
Question
Will these 2 CMS (or any other you propose) keep all the requirements and solve the problems? Or are CMS modules (wiki one, blog one, etc) still build to be standalone? meaning that each one will build a different user table structure. Are there any other advantages from using a CMS?
Ideally the CMS itself would build the user tables and then the modules access them instead of creating their own. I have never worked with a CMS so I would need to learn about them but that's not a problem if it works.
If I were you, I would invest time in learning how to use frameworks, zend, code igniter, yii, etc. A CMS just ties your hands in terms of new layout features or simple functionality improvements.
Definitely go for PHP/OOP. You will find a lot of easy solutions to many problems you come across when using CMS, also you will improve your programming skills, which is the most important thing of all, right?
CMS is NOT a framework. A CMS allows users/admins who don't have knowledge of php, html, css or any other language you might be using to change the content of your site. In some way, it should not restrict your coding. In other words, a CMS can be part of a framework, or your home-fabric piece of code. I see a response which starts with "When I was using CMS..". When you are making your site interactive in some sort, it is a CMS. You are managing the contents of your site with a form that puts some text into a database. Just like the textarea I am typing in now, I am a user that uses the CMS of stackExchange, but I'm just having less rights than the admin. But I am again using the CMS. But stackexchange is building his sites in a framework of some sort, so you can be using a framework AND implement the CMS functionality.
Also, try to understand OOP, it's hard to get into, but when you get the hang of it, it is great to use. It simplifies your code a lot. I learned it through Flash (ActionScript 3.0). I find it easier to understand the basics of OOP over there because you have direct visual output of what you are doing. It's easier than PHP-OOP since PHP and OOP aren't actually fitting together. It is a OOP look-a-like (which gets better and better every time). So try to learn OOP first.
So as a conclusion you might think that I will say build your own CMS functionality in a framework of your choice. But it's kinda hard to get into a framework AND OOP from scratch. So maybe you should build a few trial-and-error websites with very simple functionality to learn OOP and Frameworks. I am learning CakePHP as we speak and learned OOP a couple of years ago. It's kinda hard. So do it step-by-step and think about what you are trying to accomplish and what you need for that. I think this topic is a very good start.
Just for the record, every programmer who is smart, and I think you are, is using the OOP method, since you don't have to rewrite pieces of code, or have to copy-paste. When your code is good, you will have no repeating code anywhere. Which is nice when you run into a bug on 200 pages of the site and knowing you only have to change one file instead of 200. :)
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I had just learned web development a while ago and made a a very novice site to practice. It looks terrible, but it's something to show I tried. I had extremely poor structure, didn't follow any standards, was using templates in Adobe Dreamweaver, etc. I had stopped working on it because of the vast amount of things that needed to be accounted for when making a website and starting learning some programming.
Now I'm trying to get back into it and do everything properly. I added a forum to the site and took a look at some of the source files to try to get a feel for how the pros do it. EVERYTHING was php. All the html was generated in PHP and the forum looked great.
What I want to know is how professional web-developers structure their sites. Mainly HTML with some php includes and things here and there, or mainly or even completely PHP? I understand that the forum is reading from databases and is most efficient when using PHP, but does this apply to most websites too? When I go to Facebook or Google or some web-developers custom-made blog, is that mostly PHP?
I know this can be considered quite subjective to the taste of the developer, but I have no clue where the middle ground lies here.
If it's at all possible, I would love to see some of the source files of the developers reading this.
Also, what programs are used? Just a text editor with syntax highlighting? Are the pages tested by uploading them or, do people have PHP servers installed to test the includes and things?
When I go to Facebook or Google or some web-developers custom-made
blog, is that mostly PHP?
First of all, there are numerous development languages and methodologies, and you owe it to yourself to examine at least a few.
http://en.wikipedia.org/wiki/Web_development
This list doesn't account for the fact that companies (like Google) heavily extend existing technologies or roll their own (e.g. Google and Yahoo design their own hardware from scratch, at least in some cases).
Also, what programs are used? Just a text editor with syntax
highlighting?
You can write code in any text editor, but projects quickly benefit from file organization, autocomplete, visual designers (sometimes), code refactoring tools, test coverage tools, etc. etc.
What I want to know is how professional web-developers structure their
sites. Mainly HTML with some php includes and things here and there,
or mainly or even completely PHP?
This question is independent of PHP. In brief, logic should be separated from presentation and shared functionality should be reused. The MVC pattern is very popular for achieving this.
Speaking of mainstream sites, it's my opinion (based on a few facts) that MySpace lost a great deal of market share due to not having a properly abstracted architecture that supported rapid deployment of new features and high performance.
I have no idea where to go from here. I knew there were a lot of
options and structures, but I was hoping for an example or some
starting point.
There is no one "correct" starting point, but if you like PHP and you are starting to recognize some of the right/wrong ways to do things, you are headed in the right direction. Look for a better editor if needed. Read a few articles on basic design patterns and best practices; they are all over the web.
If you want to branch out a little, download the free version of Visual Studio 2010 and try a .NET MVC web project. You can literally install, create a new project, and click the "Play" button to run.
What you are asking is how to separate content from logic, which is the tip of the iceberg of the larger question of scope when it comes to web page/web app development. One problem with coming up with a "best practice" or generally-approved model is that what might be the best design might not actually work in every browser or work on a mobile device, etc. But one thing to research is the idea of http://en.wikipedia.org/wiki/Business_logic, which aims to separate the aspects of a site/page into various scopes or layers.
I'm not an expert on the topic, but the general idea is to have a Data Layer (from the db), a Logic Layer (your php/web server logic), and a presentation layer (your html). To prevent too much overlap between the logic and presentation layer, many designers adopt an html template system, like Smarty, so that you can have your static HTML page marked up with the dynamic parts (user name, data table values, etc), and the PHP assigns those values to the template variables to be filled in.
Another aspect of this topic is the separation of your presentation layer itself. This generally breaks down into : Document layer (the actual HTML body), Presentation Layer (the look of the document, handled by CSS), and the Interactive layer (anything that should happen while the user is viewing the page, handled by javascript). These get pretty tangled into each other as well, but keeping them as cleanly separated as possible greatly helps your initial issue, as it helps prevent writing PHP that writes HTML that handles all three aspects. Instead, your PHP might only write the document, and the CSS and JS handles everything else once it loads.
What I want to know is how professional web-developers structure pick the technologies for their sites.
Companies use whatever they like, there is no such thing as best language for the web. They pick the technologies that suit their problem set and resources. There is not only PHP, there is ASP.NET, JavaServer Faces for example, and a lot more.
With HTML5 and Javascript libraries like jQuery, KnockoutJS or Dojo Toolkit for example, you can build awesome dynamic websites. I think that is somewhere to start learning, and also use an editor like Notepad++. Note that with a text editor you force yourself to look at the code so you practice it and understand it; I would not prefer the Dreamweaver way. Also, you can challange yourself to make your sites valid against W3C, and by doing so you will increase the quality of your site and code.
As you get more comfortable, you can proceed with PHP and/or the framework based on your preferred language, like CodeIgniter for PHP, which is great for learning MVC. It is a long journey to become an experienced web developer, so take your time. You will have your own best practises and preferences, and with time you will find out how you can do better.
If it's at all possible, I would love to see some of the source files
of the developers reading this.
As for coding styles, you can seek through existing questions, I think there are some for every language.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
In the jungle of frameworks out there, I've come to the conclusion that I cannot simply decide on a framework without considering the type of application / site I want to create. I think I need a little help with determining this one.
This site is graphics heavy, with all of the content presented in a small <div> in the centre of the page, surrounded by graphics. The graphics around it should preferably be loaded only once.
The site will allow users to log on with their account and choose from a number of pre-made food recipes, or create their own. Then they can press a button to have the site generate a week or two of dishes.
The users will need their own control panel where they can customize stuff as wallpaper, dishes, labels etc. As well as browsing recipes, adding ingredients, and looking up which dishes they can create with the ingredients.
As mentioned, all of this data is supposed to be presented inside a square in the centre, so we need a system of jQuery panels. I was thinking of dynamically adding content to this square as needed. For example, emptying the content and adding new content to it when clicking links, etc.
We don't need any community per se; the possibility for discussion can be explored in a separate, external site.
I should mention I am more of a designer than a programmer. I get stuff pretty easily, but fear I don't have the capacity to create a framework like this from the ground up. I do know a bit of Visual Basic, but I'm not so good with C# syntax. I've never even touched PHP, but my partner has. He's also somewhat familiar with Java.
Basically, we need a framework that's easy to understand and get up and running.
I rolled my own framework based on http://kissmvc.com/. It allows you to basically do what you need in PHP but gives you an easy MVC framework to do it in. You don't have to learn the specific syntax to Zend, Cake, Code Ingiter or Kohana, all of which I played with before I found kissmvc. Based on a blog post by Rasmus, it was all the direction I needed and I love what I have now for reasons #animuson mentioned.
Rasmus' post: http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
From what you write, I would say all "big, famous" frameworks will be able to do this fairly "easy"... So You should really define a few prototype tasks and check out a few of the frameworks. You should be able to solve this using, CakePHP, Symfony, CodeIgniter, Yii, Zend, or any other framework, so it is better to do some real testing.
You might look for a framework that has a tight integration to jquery, but this should not be a showstopper, since you should be able to implement this in almost any framework.
You might also consider footprint and execution time, and find a framework that performes well and is not too cpu heavy (read Yii or CodeIgniter for instance).
Good luck in the search
Ultimately if you want it to fit your needs you need to build your own framework, otherwise there will always be limitations. Keep in mind that there is no framework that you can simply install and tell it to do these things, you are going to need programming knowledge of how the framework works in its entirety and how to program your custom pages to work with those features. I found it easier to just build my own framework. That way I always knew exactly what everything did and if I needed something additional, I could easily add it in the correct spot without doing much thinking on it.
A framework is only the base materials and functions you need. If you're looking for something like a pre-built website such as PHP-Nuke or a forum system, you're looking for a content management system, not a framework. A framework generally comes with absolutely no pre-built pages. Might I add that some content management systems do come with their own framework and some use existing frameworks from elsewhere.
So, we basically need a framework that's easy to understand and get up and running.
well as far as the above statement is concerned you may want to have a look at cakePHP framework.
You will easily find help on cakephp framework on stackoverflow and cakephp google group. Response will be quite fast on both the sites.
You will need to go deeply through the documentation of every framework that you plan to use because with a functionality that you are planning to built would require you to study the framework quite well.
With cakephp you will be able to create CRUD (create, update, delete) operations quite easily with less effort, but for further functionalities you will have to study it's documentation and keep your cool while you learn it :-)
I have always found plain php to be all the framework I need.
PHP itself has all the features provided by the other frameworks
A superb templating engine, database access, parsing, and control logic.
The great thing is all these features implemented in a single unified component called "php".
The main problem is you need discipline to separate presentation, navigation, busines logic and database/persistence handling. You can have sql statements mixed in with your html, you can emit html directly from an sql statement in fact you have complete freedom to implement all the known anti-patterns and invent some of your own.
The "Java" and "Perl" frameworks generally provide things like request handling, template handling etc. which are missing from the basic language, but, these features are built into php. Most of what the "php" based frameworks do is force you into (a very sensible) MVC design pattern and save you a tiny bit of coding.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm not a fan of PHP or spaghetti code, or anything like that, but in my experience WordPress works amazingly well, it's well organized, and I've never come across any hard to understand code. The documentation is incredibly thorough, any security flaws are fixed within seconds, and it "just works". Not to mention that it does EVERYTHING, and it has an awesome plug-in system. Oh, and "the Loop" is awesome. I've never had any problems doing simple modifications to the code or to themes.
Can you guys give any specific examples of what you don't like about it, or what you would have programmed differently? I just don't understand why it gets such a bad rap. I wish my own software worked as well and had as many features and looked as nice.
I'm a fan of WordPress, but there are definitely issues that impede coders trying to work with it. As a small example, there's get_the_content() (returns) and the_content() (prints), but there's get_permalink() and the_permalink(). Then, there's just the_date(), because it accepts an argument indicating whether you want it to print or return. This kind of thing drives even an experienced WP person up the wall, because you've always got to be Googling the usage - and it speaks to a deeper lack of attention to detail in the code.
Another glaring issue is the lack of built-in caching. It even used to have it, but they ripped it out and never replaced it. You shouldn't need a third-party plugin to have basic caching in a system like WordPress, particularly with all the other bells and whistles it builds in.
To paraphrase (supposedly) Churchill, though, "WordPress is the worst blogging system... except for all the others".
I've written many custom applications in PHP/MySQL over the years - from tiny to huge. Not having taken the time to learn the details of WordPress, I find it very frustrating to work with (under the hood).
Subjectively:
Very poor naming conventions
Execution flow is bizarre
General lack of organization
Hard to audit what happens when
etc...
Their concepts of usability is great, and support for plugins is also great. I'd just love to see the system re-engineered with those principles, but with a disciplined and clear development methodology.
I'm sure the next guy would say "no it isn't, bla bla bla", but that is just my opinion after bumping into it (hosting, modifying) about 3 times.
It's a subjective question for sure. From experience I've notice WP takes way, way more server resources than other systems or my custom code. I've had to move WP sites off my servers as a consequence. So my experience suggests there are some memory use issues.
As an exercise try going through the code, tracing the logic from the start of a request to a page, and look at how many objects are loaded, how many methods are called before any HTML is output.
Apart from what's been mentioned already:
No sane templating system. All those years and they still have PHP code intertwined with HTML, and default templates that have no support for i18n or l10n whatsoever (hard-coded strings, hard-coded date formats, etc.).
Multiple entry points - maybe it's just me, but it's annoying. Especially when some of those are way too big.
When you have to be sure of a statement that is made by "everyone", if you can, is trying to check it for yourself.
And you can do something in your statement: just read Wordpress source code. Some modules are good, some are a mess, some others are just normal. But all of them compose a great blog system that are used by thousand of people around the world that are more interested in writing good stuff instead of complaining about "how ugly" is a particular source code. In summary, the Wordpress creators have a shippable product that is useful.
In the end, it doesn't matter. If you want a perfect blog system, you can always write one yourself.
Can you guys give any specific
examples of what you don't like about
it, or what you would have programmed
differently?
I would have added more comments.
On a separate note, the most recent version of Wordpress introduced a labyrinthine piece of code that denies access to pages that:
1. Aren't in a menu or submenu
2. Aren't in the $_registered_pages variable.
A lot of plugins for earlier versions of Wordpress have been broken by this new security measure.
Finally, sessions. Wordpress does its very best to get out of your way by handling all its session data in a separate manner from PHP's built-in $_SESSION variable, but it doesn't give you the option of starting the PHP session, you have to add that to the core program yourself. I haven't found documentation that would allow us WP hackers and plugin writers to take advantage of the pre-existing WP session yet, either.