Created a dark Drupal Theme
Sunday, June 28th, 2009On my track to become a designer I released my first general drupal theme now. It a pretty dark theme that supports most core modules. Live test is available at http://www.gothnics.de.

Add this blog to Del.icio.us, Digg or Furl | Create Watchlist for this blog
On my track to become a designer I released my first general drupal theme now. It a pretty dark theme that supports most core modules. Live test is available at http://www.gothnics.de.


Actually I’ve lot’s of projects in my “web-queue” - but my favorite is EQUIRA. EQUIRA is a stock chart analyzer C++ software I wrote in 1999. It’s full of AI and FUZZY and GA (that’s Artificial Intelligence, Fuzzy Logic and Genetic Algorithms).
With the today available hosting technology and prices it’s ready for a public offering as webservice and a Drupal frontend for subscribers.
Stay tuned…
Today I read an article about IE8, the MS Internet Explorer that ships with Windows 7 (successor of Vista). The good news is, that it survives the ACID2 test, the bad news is, that it fails the ACID3 test embarrassing. While Firefox, Safari, Opera and Chrome meet about 70 to 80 of the necessary 100 goals, the IE8 meets 20/100.
So, the question is: Are Microsoft programmers lousy? Or is Microsoft still offending the Internet as far as possible? While I don’t think a great deal of them, I am sure they could do it better - BUT I am almost sure, that Ballmer is not willing to believe that times change. Fat client computing is dying, all what Microsoft does with their villainously products is delaying the agony.
They’re hurting the substantial progress of our society - just for their selfish vegetate. And they’re hurting us web developers by forcing us to support their crap.
Yesterday we went to public with another very complex Drupal 6 project. It’s kind of a “local collaboration” platform with classical news attributes.
Pretty much of the business is done in a self-developed module but we also use lot’s of contributed modules from Drupal.org:
cck - to create content types
checkbox_validate + legal - for registration issues
computed_field - for workflows and hidden attributes
content_taxonomy - for taxonomies in cck types
event - for events ![]()
fivestar - for content rating
flag - for flagging content for several reasons
flatcomments - to avoid comment-threading
image - for images
masquerade - for testing
mass_contact - for mailings
nice_menus - for some dropdowns as second level navigation
pathauto - for nice URLs
privatemsg - for user postboxes
quicktabs - for tabbed blocks in the sidebar
user_stats - for some forum enrichments
views - for customized views on cck types
votingapi - for fivestar
workflow - for workflows like published purchased content
… puh, that’s a lot - and there are still some modules missing.
Maybe you wanna take a look at isartal.info?
I’ve started to “refactor” my German IT consulting webpages with Drupal 6. Although the update frequency of V6 is still pretty annoying it’s a very stable system already. Most important contributed modules are at least in beta state.
I did a new theme from scratch and thereby got great support from the “devel” module and it’s “theme developer”.
The project runs on a multisite installation together with nine other D6 sites now.
Again I was using
And as always I’ve written a supporting module to provide some data (like a month name array) and blocks.
This is a “short as possible” reference for CSS selector syntax. Intended audience should be very familiar with XHTML, DOM and CSS Styling.
Type selector
Select all HTML elements of a special type.
Example: em {font-weight: bold;}
Class selector
Select all elements with a given class.
Example: .classname {font-weight: normal;}
ID selector
Select the one element with a given id.
Example: #idname {font-weight: normal;}
Concatenator
Select HTML elements of special type only with given class/id.
Example: em.classname, em#idname {font-weight: normal;}
Universal selector
Select all elements.
Example: * {padding:0;}
Descendent selector
Select all elements that are lower down in the DOM tree (descendants).
Example: p em {font-weight: normal;}
-> Applies to all em's within p's.
Child selector
Select all elements that are children in the DOM tree (direct descendant).
Example: p > em {font-weight: normal;}
-> Applies to all em's directly within p's, not supported by ie6 and below.
Adjacent sibling selectors
Select all elements that are on the same DOM level in the same DOM subtree
Example: h3 + p {font-size:80%;}
-> Applies to all p's that "belong" to a h3
(more…)
Drupal is upgrading very frequently. Specially nowadays as V6 is out for a view weeks. If you don’t want to get mad upgrading Drupal every other day - here are some hints to follow when installing Drupal6.
Most important: If you have more sites running on one server: Do a multisite installation!
Assuming you have your Apache root at /srv/htdocs do the following:
Your ready with your update-prepared ionstallation.
When an upgrade to Drupal 6.2 appears (it did view days ago), do the following:
Keep in mind to check, if there’s something important new in settings.php…
And with this kind of installation you are perfectly prepared for multisite! And for sure it doesn’t work with MS scrappy OS’s.
And have fun!
This is about how I manage to create content for domains without CMS from a Drupal enabled domain without any manual work.
On address www.immobilien-spot.de I am running a community for real estate agents. It’s primary focused on Immobilien in München (that’s German for real estate in Munich).
Estate agents can become members, can show 10 of their best buildings and act like usual in communities (Blog, Forum, Contact…). Additionally the agents can book a special site to promote one of their offers, i.e. an office loft for rent. This office loft is shown in the offer list and also on a static site called officeloft.de (this is an example, I don’t own that domain). To feed the content of officeloft.de from the Drupal content on immobilien-spot.de, I’ve established a special node type called a “promotion”.
A promotion node consists of a node-ref (pointing to the estate offer node), an entry place (office-loft.de) and a booking period (March 2008). To render the promotion node completely different from all other nodes, I have installed the sections and pathauto modules for Drupal. With pathauto one can automatically create special paths for nodetypes, and with sections.module one can assign special page.tpl.php for this path.
What’s left is to have a nightly cronjob that copies the rendered promotion node to the special site’s http-root directory (what should be a subdirectory of the main domains http-root - else you have to struggle with your OS). And finally transpose all of the relative path’s inside the copy to be absolute.
Have fun!
This is for Drupal 5, don’t know if it works also in version 6.
Usually block content is not related to the currently displayed node. I.e. the block that displays the recent blog posts always displays the same content, regardless of on what page you are currently looking.
I often had situations where I wanted the block content to be related to the currently viewed node. To keep the example: When viewing a blog post, I wanted a block to display the most recent post of the author of the currently displayed post, and additionally print some profile fields like age and a gravatar.
The key to achieve this goal is the Drupal arg() function. This function returns the components of the currently viewed path before any URL aliasing. So if you view the node 5, that is yourdomain.com/node/5 (and sometimes a trailing “view”), you will get following results from function arg():
arg(0) -> "node"
arg(1) -> "5"
arg(2) -> "" or "view"
Now, if you want to get some information about node 5, you use node_load(). And to get information about the user that is the author of node 5, you use user_load().
In PHP code it works out like:
if (arg(0) == 'node'
&& is_numeric(arg(1))
&& (arg(2) == '' || arg(2) == 'view')) {
$node = node_load(arg(1));
if (is_numeric($node->uid))
$user = user_load(array('uid' => "$node->uid"));
... do something with $node and $user here
}
BTW: If you need this a lot, you should consider writing a module for your content type
To make a useful example out of it…
I use the following “debug-block” while developing to view my node and user objects:
if (arg(0) == 'node' && is_numeric(arg(1))
&& (arg(2) == '' || arg(2) == 'view')) {
$node = node_load(arg(1));
if (is_numeric($node->uid))
$user = user_load(array('uid' => "$node->uid"));
print "node object<br>";
foreach ($node as $k => $v) {
print "[$k] = $v<br>";
}
print "<br>user object<br>";
if ($user) foreach ($user as $k => $v) {
print "[$k] = $v<br>";
}
} else {
print 'not a node';
}
Yesterday I stared the beta run (this is very 2.0 webish) of my wiiclub project. It’s a community for Wii Gamers in German. It makes extensive use of lots of Drupals community features, like i.e.
The site is very much web2.0 like, that means it has
So, if you are addicted to Wii - come join us
