Posted on: 27/07/07 05:46pm
I have a partial rewrite of the blocks code on my home machine and I'm wondering if anyone is really interested in what I've done. (Enough that I would finish it.)
Essentially, I turned the blocks tables in a set of tables that control layout and content. It allows you to have different layouts depending on topic, language, and "context". This is a major rewrite and I'd probably have to fork Geeklog if I were going to support without the dev's buy-in (which is why I stopped working on it). But it did have some cool features that I'll list here:
- Content data divorced from content layout. Thus a plugin could add content to the content table. It only appears in a layout when the content manager adds the block to the layout table.
- Heavy support of dropdown list boxes. Want to create a phpblock? There's a dropdown list of every existing phpblock_xyxxz function loaded. Want to add content to a layout? There's a dropdown list of all the content blocks not currently in your layout.
- Inline php content like static pages. (Properly integrated with Geeklog, the static pages plugin would become a shell that just adds a URL to existing content blocks.)
- User block management including user created RSS blocks.
- All blocks would support dynamic content caching (not just RSS blocks). So your expensive to run phpblock_xyxxz() function could be setup to only run once an hour.
There's more to it than that. But it has some downsides too. It isn't compatible with plugins that add content to the blocks table for one thing. Plugins that use the dynamic block API are a problem too. And it probably would be hard to write a foolproof upgrade function that rips out your old blocks table and moves everything where it belongs in the new tables. (Although I've got that part 90% done.)
I believe I was bogged down in finishing the admin screens when I last worked on it. I couldn't send it to anyone without finishing that at a minimum. Maybe I'll turn it into a hack/plugin....
Geeklog - Forum