Recent Topics

1 Aug 10, 2004 15:40    

Hallo!
Ich w?sste gerne was ich genau machen muss wenn ich ein weiteres Feld f?r jeden Post haben m?chte.
Wie z.B. das Feld "URL" so m?chte ich jetzt noch eins "Feld1" haben...

Ich habe mir zuerst den Current Mood + 2 custom fields hack angeschaut, aber der ist zum einen zu komplex (ich brauche ja keine TXT Datei, da mein Feld einfach nur einen String beinhalten soll) und zum anderen ist der Hack ja anscheinend auch nicht mit der aktuellen Version lauff?hig.

Ich habe schon selber etwas rumgeschaut und rumprobiert und ich denke der erste Ansatzpunkt ist die _class_itemlist.php um ?berhaupt eine Funktion bereitstellen zu k?nnen mit der ich dann anschliessend in meiner _main.php das ganze ausgeben kann.

W?re nett wenn der Hack das eingabefeld auch im Admin Center hat und ich das alles nicht per phpMyAdmin und co. machen muss, aber das w?rde im Notfall auch gehen...

Schon einmal vielen Dank f?r sachdinliche Hinweise...

2 Aug 10, 2004 16:33

naja, prinzipiell kannst du den hack einfach auf die neue version ?bertragen - wenn du ein wenig ahnung von php hast - und l?sst halt einfach das feld f?r custom_mood weg bzw nimmst einfach nur custom_field1.

die ?nderungen m?ssen in die dateien:

- admin/_edit_form.php
- admin/b2edit.php
- admin/edit_actions.php
- _class_itemlist.php
- _functions_bposts.php
- hacks.php (die anzeige-funktion f?r die skins)

da ich noch immer version 0.9.0.5 nutze und nicht derzeit auf die .10 wechseln will, ist der hack nicht aktualisiert worden, sorry.
mit der n?chsten final k?mmer ich mich wieder drum...

3 Aug 12, 2004 01:00

Erstmal danke f?r deine Antwort.

Ich bin auch soweit durch und es l?uft auch, nur habe ich jetzt ein Problem mit der Ausgabe in meinem Blog selber...

Und zwar sollte das ganze mit dem display befehl gemacht werden:

<?php display_customfield2( - Feld2: ); ?>

Die Schrift Feld2 wird ja dann nur angezeigt wenn in der Variabel auch was drin steht, soweit so gut. Das klappt ja auch alles.
Jetzt habe ich mir gedacht gut knallste sogar den div befehl damit rein:

<?php display_customfield1('<div class="bText"> listing to: '); ?>
                  <?php display_customfield2( - Feld2 ); ?>

Aber wohin jetzt mit dem Close befehl? Dahinter? Nein, das macht ja keinen Sinn, da ich nicht immer in dem Feld inhalt habe.
Ich br?uchte also noch schnell eine if Abfrage in der Form von:

if post_customfileld1='' then DO NOTHING ELSE echo '</div>'

Also wenn das Feld customfield1 in der DB leer ist, dann soll er nix machen, ansonsten wenn dort irgendein String drin ist soll er nen </div> dran h?ngen...

Alternativ, wenn das nicht geht, w?re meine Frage, ob ich sonst nicht mit dem SQL Standard Insert arbeiten kann. Also was der da reinschreiben soll, wenn ich nichts angebe... So fit bin ich da leider auch nicht...
Dann w?rde ich da irgendwas wie <i>nicht angegeben</i> einsetzen lassen, wenn ich da nichts manuell reinschreibe...

Wobei mir die erste L?sung mehr zusagen w?rde...

Schon einmal vielen Dank f?r eure Hilfe... (kann ja eigentlich mit der if Abfrage nicht so wild sein...)[/code]

NACHTRAG: Ich stelle fest das ich auf einmal keinen anderen Post mehr l?schen kann , und auch das editieren nicht mehr l?uft. Dazu habe ich zwei Fehlermeldungen:

Beim Editieren:

MySQL Fehler!

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND bloguser_user_ID = 1' at line 4(Errno=1064)

Your query:
SELECT * FROM evo_blogusers WHERE bloguser_blog_ID = AND bloguser_user_ID = 1

Und beim L?schen eines Posts im Admin Panel:

Fatal error: Call to a member function on a non-object in /srv/www/htdocs/web7/html/b2evocore/_functions_bposts.php on line 402

Das Problem liegt ganz klar hier:

	// echo $sql;

	if( $myrow = $DB->get_row( $sql ) )
	{
		$mypostdata = array (
			'ID' => $myrow->ID,
			'Author_ID' => $myrow->post_author,
			'Date' => $myrow->post_issue_date,
			'Status' => $myrow->post_status,
			'Locale' =>  $myrow->post_locale,
			'Content' => $myrow->post_content,
			'Title' => $myrow->post_title,
			'Url' => $myrow->post_url,
			'Category' => $myrow->post_category,
			'AutoBR' => $myrow->post_autobr,
			'Flags' => explode( ',', $myrow->post_flags ),
			'Wordcount' => $myrow->post_wordcount,
			'comments' => $myrow->post_comments,
			'Blog' => $myrow->cat_blog_ID,
// begin custom field + mood hack
//         'currentmood' => $myrow->post_mood,
//         'customfield1' => $myrow->post_customfield1,
//         'customfield2' => $myrow->post_customfield2,
// end custom field + mood hack 


in der _functions_bpost.php in der function get_postdata($postid)

Wenn ich meine alte bpost verwende, l?uft alles soweit, nur das dann die anzeigen nat?rlich nicht geht.
Und irgendwo muss ich ja auch der

function display_customfield2 ($before = '', $after = '') {
   global $postdata;
   
   $customfield2 = $postdata['customfield2'];

   if ($customfield2 != '') {
      echo format_to_output( $before.$customfield2.$after, 'htmlbody' ); 
   }
   
   return;

Ihren Inhalt zuweisen...

Meine ?berlegung ist nun ob es nicht sinvoll ist das ganze nicht ?ber die function_postdata zu machen sondern daf?r eine eigene kleine...
Da ich das ganze wirklich nur als auslese Funktion benutzen aus der DB, denn die ?nderungen im Admin Panel haben nur noch mehr Probleme verursacht... *g*

Tja mmh... das hat man eben davon wenn jemand der keine Ahnung hat versucht rumzuspielen...

W?re super wenn es f?r beides eine L?sung gibt... wobei zweiteres erstmal prim?r ist...[/quote]

4 Aug 12, 2004 09:22

Masta_O wrote:

Die Schrift Feld2 wird ja dann nur angezeigt wenn in der Variabel auch was drin steht, soweit so gut. Das klappt ja auch alles.
Jetzt habe ich mir gedacht gut knallste sogar den div befehl damit rein:

<?php display_customfield1('<div class="bText"> listing to: '); ?>
                  <?php display_customfield2( - Feld2 ); ?>

Aber wohin jetzt mit dem Close befehl? Dahinter? Nein, das macht ja keinen Sinn, da ich nicht immer in dem Feld inhalt habe.
Ich br?uchte also noch schnell eine if Abfrage in der Form von:

if post_customfileld1='' then DO NOTHING ELSE echo '</div>'

Also wenn das Feld customfield1 in der DB leer ist, dann soll er nix machen, ansonsten wenn dort irgendein String drin ist soll er nen </div> dran h?ngen...

mach das mal nicht kompliziert als es ist, denn der fall ist schon ber?cksichtigt:

<?php display_customfield1('<div class="bText"> listing to: ','</div>'); ?>
                  <?php display_customfield2(' - Feld2 '); ?>

NACHTRAG: Ich stelle fest das ich auf einmal keinen anderen Post mehr l?schen kann , und auch das editieren nicht mehr l?uft. Dazu habe ich zwei Fehlermeldungen:

Beim Editieren:

MySQL Fehler!

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND bloguser_user_ID = 1' at line 4(Errno=1064)

Your query:
SELECT * FROM evo_blogusers WHERE bloguser_blog_ID = AND bloguser_user_ID = 1

Und beim L?schen eines Posts im Admin Panel:

Fatal error: Call to a member function on a non-object in /srv/www/htdocs/web7/html/b2evocore/_functions_bposts.php on line 402

Das Problem liegt ganz klar hier:

	// echo $sql;

	if( $myrow = $DB->get_row( $sql ) )
	{
		$mypostdata = array (
			'ID' => $myrow->ID,
			'Author_ID' => $myrow->post_author,
			'Date' => $myrow->post_issue_date,
			'Status' => $myrow->post_status,
			'Locale' =>  $myrow->post_locale,
			'Content' => $myrow->post_content,
			'Title' => $myrow->post_title,
			'Url' => $myrow->post_url,
			'Category' => $myrow->post_category,
			'AutoBR' => $myrow->post_autobr,
			'Flags' => explode( ',', $myrow->post_flags ),
			'Wordcount' => $myrow->post_wordcount,
			'comments' => $myrow->post_comments,
			'Blog' => $myrow->cat_blog_ID,
// begin custom field + mood hack
//         'currentmood' => $myrow->post_mood,
//         'customfield1' => $myrow->post_customfield1,
//         'customfield2' => $myrow->post_customfield2,
// end custom field + mood hack 


in der _functions_bpost.php in der function get_postdata($postid)

Wenn ich meine alte bpost verwende, l?uft alles soweit, nur das dann die anzeigen nat?rlich nicht geht.

die sieht bei mir so aus

function get_postdata($postid)
{
	global $DB, $postdata, $tableusers, $tablecategories, $tableposts, $tablecomments, $show_statuses;

	if( !empty($postdata) && $postdata['ID'] == $postid )
	{	// We are asking for postdata of current post in memory! (we're in the b2 loop)
		// Already in memory! This will be the case when generating permalink at display
		// (but not when sending trackbacks!)
		// echo "*** Accessing post data in memory! ***<br />\n";
		return($postdata);
	}

	// echo "*** Loading post data! ***<br>\n";
	// We have to load the post
	
	// begin custom field and mood hack
	$sql = "SELECT ID, post_author, post_issue_date, post_mod_date, post_status, post_locale, post_content, post_title, post_url, post_category, post_autobr, post_flags, post_wordcount, post_comments, cat_blog_ID, post_mood, post_customfield1, post_customfield2  FROM $tableposts INNER JOIN $tablecategories ON post_category = cat_ID WHERE ID = $postid";
	// end custom field and mood hack
	
	// Restrict to the statuses we want to show:
	// echo $show_statuses;
	// fplanque: 2004-04-04: this should not be needed here. (and is indeed problematic when we want to
	// get a post before even knowning which blog it belongs to. We can think of putting a security check
	// back into the Item class)
	// $sql .= ' AND '.statuses_where_clause( $show_statuses );

	// echo $sql;

	if( $myrow = $DB->get_row( $sql ) )
	{
		$mypostdata = array (
			'ID' => $myrow->ID,
			'Author_ID' => $myrow->post_author,
			'Date' => $myrow->post_issue_date,
			'Status' => $myrow->post_status,
			'Locale' =>  $myrow->post_locale,
			'Content' => $myrow->post_content,
			'Title' => $myrow->post_title,
			'Url' => $myrow->post_url,
			'Category' => $myrow->post_category,
			'AutoBR' => $myrow->post_autobr,
			'Flags' => explode( ',', $myrow->post_flags ),
			'Wordcount' => $myrow->post_wordcount,
			'comments' => $myrow->post_comments,
			'Blog' => $myrow->cat_blog_ID,
			// begin custom field + mood hack
			'currentmood' => $myrow->post_mood,
			'customfield1' => $myrow->post_customfield1,
			'customfield2' => $myrow->post_customfield2,
			// end custom field + mood hack
			);

		// Caching is particularly useful when displaying a single post and you call single_post_title several times
		if( !isset( $postdata ) ) $postdata = $mypostdata;	// Will save time, next time :)

		return($mypostdata);
	}

	return false;
}

Und irgendwo muss ich ja auch der

function display_customfield2 ($before = '', $after = '') {
   global $postdata;
   
   $customfield2 = $postdata['customfield2'];

   if ($customfield2 != '') {
      echo format_to_output( $before.$customfield2.$after, 'htmlbody' ); 
   }
   
   return;

Ihren Inhalt zuweisen...

die holt sich den inhalt aus der $postdata...
nicht sch?n und nicht objektbezogen, aber deshalb hab ich den hack ja auch bisher nicht aktualisiert

5 Aug 12, 2004 10:43

Perfekt!
Jetzt musste ich nur noch nen bischen wieder was aus der function bpost_update auskommentieren und nun geht alles.

Vielen Dank!


Form is loading...