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 4 years ago.
Improve this question
I've been making the rounds for a CMS that I can use as an API, in a sort of "embedded" mode. I mean by this that I don't want the CMS to do any logic or presentation. I want it to be used as an API, which I can then use within an existing site. I don't want to be tied to the architecture of the CMS.
A good example of this is NC-CMS (http://www.nconsulting.ca/nc-cms/). All it needs is an include at the top, then wherever editable content is desired it's only a function call with a unique label. It's also perfect in the sense that it allows to differentiate between small strings (like titles, labels) and texts (which require a rich-text editor).
It's the only CMS I found that fits this description, but it is a little too light as it does not handle site structure. I need to be able to allow my client to add pages, choosing an existing template for the layout. A minimal back-end is required.
Wordpress also fits some requirements in that it handles only content editing and allows freedom for the themes by letting them call the content where and how they want it. But it is article-based and backwards, in that it embeds sites (as themes) within its structure, rather than being embeddable in sites like NC.
It's funny how checking out all the CMS out there, almost all of them claim that most CMS are not self-sufficient, that they do not handle application logic, while (almost) every single on I found with only one exception do so. Many are mostly article-based blog engines, which does not fit my need.
I would appreciate any CMS that fits the general description.
Creator of nc-cms here.
Adding on to nc-cms may be a realistic option, depending on exactly what you want to do. The entire nc-cms project is under 2,000 lines in total and the codebase is kept rather clean and simple for the very reason of per project/client expandability.
I wouldn't be all that hard to make one, honestly. Maybe as a wrapper around the nc-cms system after taking a look (possibly using and abusing ob_start/get_contents/end_clean).
I've been putting one together using PHP5 constructs and the Dwoo templating engine. Dwoo's template inheritance makes this a breeze. Right now it works by abusing the auto_prepend_file php directive to set up the template object and then just uses REQUEST_URI to process the template file (which is the actual file being requested). Then it outputs the processed template and exits. Kinda slick, but may not have that big of an audience.
I'm not exactly sure where you are placing the line between what you want this system to do and not do. Adding pages and choosing templates would seem to me to be in the realm of presentation, imo.
Would Joomla do it?
You should look into Osmek, its a developers dream. Its a centrally hosted system with no install. Osmek's API gives you access to your entire account, in just about any format, including JSON, XML, HTML, Serialized PHP, and template responses.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Are there any modular, lightweight content management systems for websites that start as static HTML?
To be more specific, there are a number of clients who would like to edit content on very specific areas of the website (i.e. the hours, the special events, etc..) but those are the only things on the website they would ever want to change themselves. Typically the company I work for has used WordPress, but lately I've been noticing it being unnecessarily bulky for the functionality we are actually using.
Ideally it would be something as basic as a login portal that redirects to the homepage after you log in, then the editable area would append an (edit) link which would pop a plain text editor up.
I've seen of couchCMS and cushyCMS but haven't heard anything about them, I've also looked into trying to build a simple CMS but I still have more to learn in PHP and MySQL before I'm comfortable.
P.S. I've read the "what questions to ask" section for a while before I decided to post this here, I know it's not very specific of a coding question but if you know of a better exchange site to ask this, I'll promptly delete and repost there.
The question is a bit open ended, ie we don't know all your requirements, budget, timelines etc, so an "answer" is hard. All I can give you are options/advice.
Have you tried searching on Stack sites and Google (etc) for "content management system" and reviewing what each one offers?
Drupal is lightweight-ish as it allows a basic package then bolt on features you want.
However, whatever CMS you decide to go with, bear in mind most CMSs are designed to cater for much more than what you want. Most try to provide for forums/blogs/sites with shops, etc. Generally, they wouldn't spend months planning and developing, and continuing to release bug fixes/security updates/etc for something that just managed a bit of text here and there.
clients would like to edit content on very specific areas of the website (i.e. the hours, the special events, etc..) but those are the only things on the website they would ever want to change themselves
This is very simple. It might be worth hiring a freelancer/dev company to create your own simple CMS that would store the data you want changing in a DB and give you/your clients some simple form fields to edit and save them.
Do not go for Drupal whatever you do. It was a nightmare. We are now using wordpress as its much cleaner code and simpler to modify and customize. However it seems you need something even simpler than wordpress.
There are very simple cms's out there that allow you to include as little as one javascript file in your html page and you can then define areas in the page to make editable.
Best place to check out is http://www.opensourcecms.com/
You will probably want to look at the "lite" category
for an example of a javascript only system check out "99ko 1.2.7"
http://www.opensourcecms.com/scripts/details.php?scriptid=638&name=99ko
good luck!
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 5 years ago.
Improve this question
I have been given a new task from the client which is basically creating a CMS for actors/singers and the like that client will be selling out to them.
It will basically be a package and would work out-of-box pretty much similar to WordPress, you just hand over to whoever buys it but of course this is not going to be a blogging platform. It will allow developers to:
Add plugins/widgets
Add templates/themes
I thought the Observer Pattern may be useful but I am not that sure about it. What you guys could suggest to create such flexible/extensible CMS in terms of:
Ability to add plugins (for example like WordPress)
Ability to add themes/templates (for example like WordPress)
Design Pattern
Any other things
Observer's fine, but you're going to have to consider going beyond the basic pattern. The canonical Observer/Subject pattern only sends the Subject object to the Observer, nothing else, not even why it's being notified.
Initially, the solution might seem like also including the reason for the notification to the Observer, but then you might end up notifying Observers that don't care about certain notifications. A better solution might be requiring Observers to also ask for a list of notifications they'd like to receive.
But that also presents a problem. In order for the Observers to actually attach themselves to Subjects, they have to be instantiated. Every single time. Even if they'd never be needed. That's silly.
So, we've quickly reached one of the canonical PHP implementations of plugins: "hooks". Hooks use the same concept as Observer/Subject, but the implementation is different in a very important way: the actual Observers aren't instantiated in order to Observe Subjects. Instead, Subjects send a notification to some variety of central repository. This repository is configured with a list of all installed and activated plugins (Observers), and contains a list of all of the events that each plugin wants to receive. Each plugin and notified only when the event takes place, often through a static method rather than by creating an instance of the plugin and notifying it. call_user_func_array and a good autoloader makes this incredibly trivial.
You can therefore create a simple Interface for all plugins to implement. Methods that you'll need include but are not limited to:
Something to fetch data about the plugin, such as it's name, author, official website, version, etc. Human-consumable information.
A method returning the events that the plugin wants to subscribe to.
An installation method, for things the plugin needs to do in order to install itself, such as manipulating the database.
An uninstallation method might be handy as well.
The (probably static) method that will receive event notifications and return whatever data is needed.
Depending on how far you take the plugin concept, you could end up with plugins that have user configurable options. You might need to take that into account. Down that road lies madness and configuration systems.
In order to make plugins effective, you're going to need to place hooks everywhere, and frequently work with end-users to add new hooks where they are needed.
Widgets can easily work in a similar way, as plugins that get called prior to page rendering.
Themes/templates, oh my. You probably have two big options.
Smarty, or a similar template engine. Or your own not-PHP template engine.
PHP templates.
This decision will be driven by your end users. Smarty is incredibly limiting, but if you want to make sure that only approved code runs in a template, it might be a viable option. Furthermore, it's not unsafe to allow editing of Smarty templates right in the application itself.
On the other hand, one of the reason Wordpress templates work so well is that they're pure PHP. They can call any method exposed in the Wordpress API, and even do their own interesting logic. If you expect your end users to be technically minded, or at least technically competent, then PHP templates are the way to go. On the other hand, allowing editing of PHP templates within the application can open up a huge potential security hole if a malicious user gets into the admin bits. You probably want to restrict editing to the filesystem.
While this covers HTML creation, you should also take CSS into consideration. Will your end-users be able to manipulate CSS directly? Will they want to? If your default templates include enough semantic classes, they can probably do a great deal of styling with not a lot of effort, if they know what they're doing. On the other hand, your end-users might not know what CSS is, so they might want, oh, say, color pickers and pre-built color schemes, and a color scheme chooser, and other such annoying things to build. It's probably best to think about those horrors now.
Miscellaneous things.
No CMS would be complete without the concept of drafts and publish states. I don't have any advice for you here, other than code this first. If your customer or the end-users want any sort of historical archiving, managerial approval mechanism, or anything else that makes draft/published anything but a simple state field, you need to know very soon. (I've been bitten horribly by this one. We'd designed the entire system around a simple published/not-published model, and got about 9/10ths through spec building and related prototype code when we realized it wouldn't work and we'd have to do something far, far more complex to actually meet customer requirements. Rebuilding the rough plan was the single largest time-sink we encountered so far.)
Will you use an ORM? If not, be sure to use a proper database interface library. PDO, or maybe something from PEAR, or maybe Zend_Db. You'll inevitably have a customer that will insist that the code runs on Oracle or MSSQL. Or SQLite. It'll be nice to tell them it can be done (with some effort). Plugin authors will thank you for the sanity as well. Don't roll your own.
(Then again, with your rep level, I expect that you're already familiar with pretty much everything I've said. Ah, the things I do to distract myself while thinking about my own set of coding problems...)
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 11 months ago.
Improve this question
I create custom CMS sites and then go ahead for the backend/admin side. Is there any tool out there to automatically create admin side of my sites, for example, based on table relationships or whatever customization we may put in place.
PHPMaker seems to claim something like what I ask for but I have not used it. Any tool out there to auto-create admin side or PHPMaker is up to the point?
Did you mean something like this?
http://www.phpgrid.com/grid/
It visualizes all of the data and allows for editing, paging, sorting, kinda like MS Excell, or asp.NET gridview's.
If you're looking for something that automatically reads your database structure and deduces everything you might possibly want to do, and provides buttons for it - no such thing exists, well, not until software really begins to program itself.
phpMyAdmin :oP ?
There is nothing out there that can automate an admin control panel sufficiently. There are too many things that your data can mean. An INT could be an integer, or it could be a code where each value 0-9 represents some different value. What about other tables which are not visible to public eye, like the users database and the logs? What do you do with those? If you want a control panel that's worth two cents, you'll build it yourself. One of the main reasons for admins to stop using a CMS is that the admin panel is incomplete or confusing.
Symfony has such an admin generator:
http://www.symfony-project.org/screencast/admin-generator
You need a code generator that can read your DB structure and then generate your back-end based on a few additional definitions you may supply.
Like #animuson said, "there are too many things that your data can mean". However, only a limited subset of those "many things" is relevant to you, so you can associate a well-defined meaning (from that subset) to a specific field or data set. The code generator will then act on that specification and generate the correct back-end code.
Model-driven development will help you here because a model of, let's say, a table column, may contain only the definitions that are needed to properly understand the meaning of that column.
There are tools on the market for this, open-source and commercial, that will help you define your models and build your code generators.
Of course, there is an additional cost of building and maintaining your code generator, but once you have it you start reaping the benefits in time savings and less errors.
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 7 years ago.
Improve this question
I'm doing a project for a college class I'm taking.
I'm using PHP to build a simple web app that classify tweets as "positive" (or happy) and "negative" (or sad) based on a set of dictionaries. The algorithm I'm thinking of right now is Naive Bayes classifier or decision tree.
However, I can't find any PHP library that helps me do some serious language processing. Python has NLTK (http://www.nltk.org). Is there anything like that for PHP?
I'm planning to use WEKA as the back end of the web app (by calling Weka in command line from within PHP), but it doesn't seem that efficient.
Do you have any idea what I should use for this project? Or should I just switch to Python?
Thanks
If you're going to be using a Naive Bayes classifier, you don't really need a whole ton of NL processing. All you'll need is an algorithm to stem the words in the tweets and if you want, remove stop words.
Stemming algorithms abound and aren't difficult to code. Removing stop words is just a matter of searching a hash map or something similar. I don't see a justification to switch your development platform to accomodate the NLTK, although it is a very nice tool.
I did a very similar project a while ago - only classifying RSS news items instead of twitter - also using PHP for the front-end and WEKA for the back-end. I used PHP/Java Bridge which was relatively simple to use - a couple of lines added to your Java (WEKA) code and it allows your PHP to call its methods. Here's an example of the PHP-side code from their website:
<?php
require_once("http://localhost:8087/JavaBridge/java/Java.inc");
$world = new java("HelloWorld");
echo $world->hello(array("from PHP"));
?>
Then (as someone has already mentioned), you just need to filter out the stop words. Keeping a txt file for this is pretty handy for adding new words (they tend to pile up when you start filtering out irrelevant words and account for typos).
The naive-bayes model has strong independent-feature assumptions, i.e. it doesn't account for words that are commonly paired (such as an idiom or phrase) - just taking each word as an independent occurrence. However, it can outperform some of the more complex methods (such as word-stemming, IIRC) and should be perfect for a college class without making it needlessly complex.
You can also use the uClassify API to do something similar to Naive Bayes. You basically train a classifier as you would with any algorithm (except here you're doing it via the web interface or by sending xml documents to the API). Then whenever you get a new tweet (or batch of tweets), you call the API to have it classify them. It's fast and you don't have to worry about tuning it. Of course, that means you lose the flexibility you get by controlling the classifier yourself, but that also means less work for you if that in itself is not the goal of the class project.
Try open calais - http://viewer.opencalais.com/ . It has api, PHP classes and many more. Also, LingPipe for this task - http://alias-i.com/lingpipe/index.html
you can check this library https://github.com/Dachande663/PHP-Classifier very straight forward
you can also use thrift or gearman to deal with nltk
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 8 years ago.
Improve this question
Hi,
Which are the user friendly frameworks for building personal sites? Specially if that comes with little programming knowledge. And integrated jquery will be great. python or php based framework will do better.
I tried wordpress and joomla! But those are far more complex for a simple personal site with personal blogging, live commenting, twitting, keeping personal projects and resume etc.
Please suggest me. Thanks in advance.
"a simple personal site with personal blogging, live commenting, twitting, keeping personal projects and resume etc."
In my opinion, a personal site means a single author. You don't have a lot of really "dynamic" content. How many times a day will you update a person site? Once? Twice?
A blog, comment, twitter things change relatively slowly -- once or twice a day.
Personal projects, resume, etc. change even more slowly.
None of this requires dynamic content creation. A database is often more trouble than help. Most of it is simply unstructured text. Consequently, consider using a toolset to build static HTML and simply FTP that to a server.
Consider using Sphinx to build static content. You can generate a mountain of content, maintain it, and upload it periodically. You don't need to know HTML because you write in RST. It's easy to generate hundreds of pages of content and adjust the look and feel.
Best of all, it's very, very lightweight. You can easily get by with zero code. Or, if you want to add directives or interpreted text roles, you can do a little coding.
"I tried wordpress and joomla! But those are far more complex for a simple personal site with personal blogging, live commenting, twitting, keeping personal projects and resume etc."
Nothing can be simpler to your needs than wordpress. You can use it to create not only posts to your blog but what they call "static pages", like a "contact" page, a "resume" and such. You edit this page like a "microsoft word" box in the admin panel. You don't even need to edit a php file, you dont need to create a layout, just download a free template (search google for this).
Wordpress can be installed in a variety of plataforms since it doesn't need a lot of requirements. It's PHP, its easier to find a cheap hosting (even a machine in your own home): see their requirements page for yourself.
The only thing you may need "out of the box" is the twitting thing, that you can achieve by downloading some plugins from their official website.
If you find that to achieve your goals using wordpress is too complicated, I don't think it's a good idea to use a "framework", unless you want to learn coding. You can achieve what you need in wordpress without coding a single line.
Oh, and it has jquery.
Take a look at Personal Web Site Starter Kit (http://www.asp.net/downloads/starter-kits/personal), very easy to install and maintain and it's got what you need.
for PHP ones, beside joomla that you've already mentioned, I can suggest :
Drupal (http://drupal.org/).
Or a much simpler one :
Dotclear (http://dotclear.org/)
You may be looking for a free CMS system?
I could suggest you several good .NET CMS which are either open sorce or commercial but have a limited free editions very well suited for perosnal sites
Kentico - really simple thing, that you can use without any programming knwoledge, easy to setup, but free edition is limited with 1 blog only. so only for personal use, nothing more, or you will need to buy a commercial edition...
Umbraco - open source, but will require knowledge of XSL templates if you want to build really good site. not easy to learn if you are not a developer
Sitefinity - commercial CMS from Telerik but they have a community edition. Worth looking at. I suppose the complexity of learning somewhere between Kentico and Umbraco. But simple web sites will not require development
In any case I recomend you a great resource CMSMatrix.org where you can compare more then 100 CMS on different platforms and languages.
p.s.
And if you just want a simple personal web site and don't want to care about hosting, databases etc. I suppose you could look at Google Sites
AnchorCMS gets a lot of good feedback, give it a try.
Have a look at Plone. Perhaps this meets your requirements.
Kentico,Umbraco and Sitefinity,DotNetNuke are meant for developers/designers/integrators. Use Wordpress or if you are looking for .NET version use Community server.