Vorgesehene Beiträge und wieso sie bei WP 2.1.2 nicht funktionieren

Auf der Seite von Frank Bueltge im Beitrag “WP - Vorgeschmack auf Beiträge machen“ geht es darum Beiträge die zwar schon geschrieben wurden aber einen Zeitstempel haben der in der Zukunft liegt, dem User in einer Auflistung zu zeigen. Ich habe es eingebaut und mich gewundert wieso es nicht funktioniert. Nach einem Blick in die Datenbank und testen der SQL Abfrage zeigte mir sich das Problem, bei Wordpress 2.1.2 wurde anscheinend Post die erst noch kommen mit dem Status “future” anstatt “publish” versehen. Die SQL Abfrage muss dann so lauten: SELECT ID, post_title, post_date_gmt FROM $wpdb->posts WHERE post_status = 'future' AND post_date_gmt > '$fb_date_today' ORDER BY post_date ASC Denn ganzen Code könnt findet ihr unter http://bueltge.de/wp-vorgeschmack-auf-beitraege-machen/315.

Nachtrag zum Plugin "Seitenlinksauflistung"

Um das Plugin Seitenauflistung einfach gemacht( Einfaches verändern der Anzeige der Seiten z.B. in der Sitebar) auch für die Reihenfolge der Seiten zu benutzen, die man ja bei einer Seite eingeben kann, muss man folgende Zeile im Code suchen:

$query_a=”SELECT * FROM `wp_posts` WHERE post_type = ‘page’ && post_status=’publish’”;

und ihn folgende ändern:

$query_a=”SELECT * FROM `wp_posts` WHERE post_type = ‘page’ && post_status=’publish’ ORDER BY menu_order ASC”;

ASC = bestimmt ob es Absteigend oder Aufsteigend ist - gegenteil ist DESC

Seitenlinks von Wordpress horizontal und vertikal darstellen

Hi, nach dem ich ein Wordpress Update durchgeführt habe, ist mir aufgefallen - das ich doch was an den Grund Dateien verändert habe. Die Änderungen wurden in der Datei templete-functions-post.php im “include Verzeichniss” vorgenommen. Und dort muss man in die Funktion _page_levle_out gehen:

$zahler=0;
function _page_level_out($parent, $page_tree, $args, $depth = 0, $echo = true) {
global $wp_query;
$queried_obj = $wp_query->get_queried_object();
$output = ‘’;

if ( $depth )
$indent = str_repeat(“t”, $depth);
//$indent = join(‘’, array_fill(0,$depth,”t”));

if ( !is_array($page_tree[$parent][‘children’]) )
return false;

foreach ( $page_tree[$parent][‘children’] as $page_id ) {
$cur_page = $page_tree[$page_id];
$title = attribute_escape($cur_page[‘title’]);

$css_class = ‘page_item’;
if ( $page_id == $queried_obj->ID )
$css_class .= ‘ current_page_item’;

$output .= $indent . ‘ ‘ . $title . ‘ ‘;

if ( isset($cur_page[‘ts’]) ) {
$format = get_settings(‘date_format’);
if ( isset($args[‘date_format’]) )
$format = $args[‘date_format’];
$output .= “ “ . mysql2date($format, $cur_page[‘ts’]);
}

if ( isset($cur_page[‘children’]) && is_array($cur_page[‘children’]) ) {
$new_depth = $depth + 1;

if ( !$args[‘depth’] || $depth < ($args[‘depth’]-1) ) {
if($zahler==0) $irgendwas .=”
“;
$zahler++;

$irgendwas .= _page_level_out($page_id, $page_tree, $args, $new_depth, false);

}
}

}

if ( $echo ){
$output=$output.$irgendwas;
echo $output;
}
else{
return $output.$irgendwas;
}

Mit folgendem erreiche ich das er in eine neue zeile geht wenn die Seite eine Unterseite ist:

if($zahler==0) $irgendwas .=”
“;
$zahler++;
$output .= “$indent”;
$irgendwas .= _page_level_out($page_id, $page_tree, $args, $new_depth, false);
$output .= “$indent”;
}

Vor die Funktion müsst ihr natürlich noch $zahler=0; schreiben. Dann habe ich noch die Funktion wp_list_pages verändert:

function wp_list_pages($args = ‘’) {
parse_str($args, $r);
if ( !isset($r[‘depth’]) )
$r[‘depth’] = 0;
if ( !isset($r[‘show_date’]) )
$r[‘show_date’] = ‘’;
if ( !isset($r[‘child_of’]) )
$r[‘child_of’] = 0;
if ( !isset($r[‘title_li’]) )
$r[‘title_li’] = __(‘Pages’);
if ( !isset($r[‘echo’]) )
$r[‘echo’] = 1;

$output = ‘’;

// Query pages.
$pages = & get_pages($args);
if ( $pages ) {

if ( $r[‘title_li’] )
$output .= ‘Home ‘;

// Now loop over all pages that were selected
$page_tree = Array();
foreach ( $pages as $page ) {
// set the title for the current page
$page_tree[$page->ID][‘title’] = $page->post_title;
$page_tree[$page->ID][‘name’] = $page->post_name;

// set the selected date for the current page
// depending on the query arguments this is either
// the createtion date or the modification date
// as a unix timestamp. It will also always be in the
// ts field.
if ( !empty($r[‘show_date’]) ) {
if ( ‘modified’ == $r[‘show_date’] )
$page_tree[$page->ID][‘ts’] = $page->post_modified;
else
$page_tree[$page->ID][‘ts’] = $page->post_date;
}

// The tricky bit!!
// Using the parent ID of the current page as the
// array index we set the curent page as a child of that page.
// We can now start looping over the $page_tree array
// with any ID which will output the page links from that ID downwards.
if ( $page->post_parent != $page->ID)
$page_tree[$page->post_parent][‘children’][] = $page->ID;
}
// Output of the pages starting with child_of as the root ID.
// child_of defaults to 0 if not supplied in the query.
$output .= _page_level_out($r[‘child_of’],$page_tree, $r, 0, false);
if ( $r[‘title_li’] )
$output .= ‘’;
}

$output = apply_filters(‘wp_list_pages’, $output);

if ( $r[‘echo’] )
echo $output;
else
return $output;
}

Sofern als Parameter ein Titel übergeben wird, soll er folgendes machen:

output.=’Home‘;

Dann habe ich noch die ganzen li und ul einträge entfernt.

Laufwerksbuchstabe bei XP ändern

Da steckt man einen USB-Stick ein und startet wegen einer Installation neu. Was soll daran schlimm sein ? Windows ändert plötzlich bei den Externen-Festplatten den Laufwerksbuchstabe und macht ihn nicht mehr zurück. Schlimm ist das nicht, wenn aber bestimmte Verlinkungen auf Dateien verweisen die auf den Externen Festplatten liegen. Bedeutet das sehr viel Arbeit. Da ich versuche immer den minimalsten Weg zu gehen, jedenfalls was solche Probleme angeht. Habe ich ein wenig gegoogelt und folgende Anleitung gefunden, welche auch bei mir funktioniert hat:

Systemsteuerung -> Verwaltung ->Computerverwaltung -> Computerverwaltung (lokal) -> Datenspeicher -> Datenträgerverwaltung

Dann einfach Rechte Maustaste auf die

Beruhmte http://www.meinecasino.de.

Festplatte und auf Pfad/Laufwerksbuchstabe ändern klicken. Vielleicht hilft das dem einen oder anderen Arbeit abzunehmen.

Online Spiele für zwischen durch

Wer online ist und dem es mal wieder langweilig ist, habe ich hier einige nette Spiele. Zu einem ein Winterspiel. Hier muss man mit einem Hasen von einer Glocke auf die nächste Hüpfen, mein bisher höchster Rekord liegt bei 17000 Punkten. http://www.ferryhalim.com/orisinal/g3/bells.htm Ein weiterer Zeitvertreib ist Line Rider, hier muss man eine Linie Zeichen worauf dann ein kleines Männchen mit seinem Schlitten runter fährt. Ein gerade eben gefundenes Spiel - RealworldRacer, hier gibt man einen Start und Ziel ort ein und fährt dann mit der Google Karte ein Rennen. Ein “gewalt” Spiel ist dann eher Onslaugt, wo man verhindern muss das “Drucker, Spinnen” und andere Dinge das Ziel erreichen. Dazu baut man Geschütz Türme auf und Upgradet diese. Ein ganz anderes Spiel ist MyMiniCity, man baut dort seine Stadt auf und bekommt anscheinend einen Bonus oder so - je nach dem wieviel Leute auf die Seite gehen pro Tag.

Ant dateien in der Konsole benutzen

Aus aktuellem Anlass ein Ant Beitrag. Die Targets der build.xml führt man in Eclipse ganz einfach mit doppelklick aus, ist recht einfach und für niemand ein Problem. Was aber wenn man das nun in der Konsole machen muss? Zuerst ist es wichtig das ihr ant installiert habt (http://ant.apache.org/manual/index.html), besonders das ihr die Umgebungsvariable ANT_HOME gesetzt habt. Damit ihr von überall ant starten könnt und nicht erst die ant.exe gezielt aufrufen müsst. Nun gebt ihr in der Konsole folgendes ein:

ant -buidlfile build.xml

In diesem Beispiel befinden wir uns gerade in dem Ordner wo die build.xml liegt, unter windows benutzt man wie unter Linux cd um einen Ordern oder Pfad zu öffnen. Ihr könnt aber auch den Pfad zur build.xml angeben.

ant -buidlfile build.xml target1 target2 target3

target1, target2 und target3 sind die Targets von der build.xml, wenn ihr keine angebt wird automatisch das default target ausgeführt. Ihr müsst also die namen der targets kennen die ihr ausführen wollt. Wieviel ihr ausführen wollt ist euch überlassen, aber bedenkt sobald ein target nicht funktioniert (z.B. svn hat keine verbindung), dann werden die anderen Targets nicht mehr ausgeführt.

MYSQL und BEA gekauft

Oracle übernimmt nun doch für 8,5 Milliarden Doller BEA und Sun kauft für 1 Milliarde Doller MYSQL. Für MYSQL bedeutet das, im Markt für zahlende Kunde neue Chancen zu bekommen. Mit Sun steht nun ein Weltweit bekanntes IT-Unternehmen hinter MYSQL was einigen Unternehmen die bisher aus Unsicherheit eher zurückschreckten, nun die benötigte Sicherheit geben könnte. Der Oracle Konkurrent SAP übernimmt für rund 4,8 Milliarden Euro das französische Unternehmen Business Objects. Damit kaufen Oracle und SAP weiter Unternehmen auf, man wird sehen welches Unternehmen als nächstes auf der Kaufliste steht. Sun kündigte jedoch an weiter PostgreSQL zu unterstützen, jedoch besitzt man mit MYSQL nun auch eine eigene Datenbank die zum teil unter OpenSource steht - wie es weiter geht wird man sehen. Heise Meldung zu BEA kauf Heise Meldung zu MySQL kauf