im freetag plugin Customfield ausgeben

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

im freetag plugin Customfield ausgeben

Post by reinhardl »

Hallo,
bei dem freetag plugin wird in der serendipity_event_freetag.php

Code: Select all

  foreach($entries AS $entryid => $title) {
            	$return .= '<li> <a href="' . serendipity_archiveURL($entryid, $title) . '" title="' . htmlspecialchars($title) . '">' . htmlspecialchars($title) . '</a></li>';
        	}
ausgegeben.

Ich würde gerne den Inhalt der Variablen ep_Customfield1 im array properties aus dem Plugin erweiterte Eigenschaften dort mit ausgeben.
Wie geht das wohl?

Danke
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: im freetag plugin Customfield ausgeben

Post by garvinhicking »

Hi!

Auf welche Zeile/Methode beziehst du dich? Ein "<li> <a" kommt weder in serendipity_event_freetag.php noch serendipity_plugin_freetag.php vor...

Grundsätzlich: Dafür wirst Du ein eigenes Seitenleistenplugin basteln müssen. Dazu musst Du dann grob so vorgehen dass Du das freetag event plugin instanzierst, eine liste von den staticpages aus der datenbank holst die du iterieren willlst, dann die serendipity_event_freetag::checkPage() aufrufen um die custom properties dazu auszuwählen, und dann die Datei auszugeben.

Grob so:

Code: Select all

function generate_content() {
global $serendipity;

// Fetch pages from database
$pages = serendipity_db_query("SELECT * FROM {$serendipity['dbPrefix']}staticpages WHERE publishstatus=1 ORDER BY pagetitle", true, 'assoc');

// Create plugin instance.
$sp = new serendipity_event_freetag();

// Iterate pages
foreach($pages AS $page) {
    // Prepare page.
    $sp->staticpage = $page;
    $sp->checkPage();

    // Output
    echo "Custom Field: " . $sp->staticpage['custom']['ep_Customfield1'] . "<br />\n";
}

}

Hierbei beziehe ich mich auf Custom fields einer STATIC page, die haben mit den "ep_XXX" von Entry-Properties eigentlich nichts zu tun (bis auf den Namen), hier also bitte nichts verwechseln.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: im freetag plugin Customfield ausgeben

Post by reinhardl »

Hallo Garvin,
Deine Antwort habe ich nicht ganz verstanden.
Die Stelle gibt es in der serendipity_event_freetag.php definitiv.

Zeile 492 beginnt die Funktion:

Code: Select all

 function getRelatedEntriesHtml(&$entries, $extended_smarty = false) {
        global $serendipity;

        if (!is_array($entries)) {
            return false;
        }
        
        $entrylink = $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '/');
		
		if ($extended_smarty) {
			$return = array();
			$return['description'] = PLUGIN_EVENT_FREETAG_RELATED_ENTRIES;
			foreach($entries AS $entryid => $title) {
            	$return['entries'][] = '<a href="' . serendipity_archiveURL($entryid, $title) . '" title="' . htmlspecialchars($title) . '">' . htmlspecialchars($title) . '</a>';
   			}
		} else {
        	$return = '<div class="serendipity_freeTag_related">' . PLUGIN_EVENT_FREETAG_RELATED_ENTRIES . '<ul class="plainList">';
        	foreach($entries AS $entryid => $title) {
            	$return .= '<li> <a href="' . serendipity_archiveURL($entryid, $title) . '" title="' . htmlspecialchars($title) . '">' . htmlspecialchars($title) . '</a></li>';
        	}
        	$return .= '</ul></div>';
		}
        return $return;
    }
Dort werden "Artikel mit ähnlichen Themen:" ausgegeben. Ziel soll sein, dass die "Artikel mit ähnlichen Themen:" mit Bild angezeigt werden. Dafür benötige ich jeweils den Inhalt von Customfield1
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: im freetag plugin Customfield ausgeben

Post by garvinhicking »

Hi!

*hüstel*.

HIER WURDE GANZ KLAR ETWAS VERWECHSELT!

Nämlich freetag mit staticpage. Und zwar von mir. Sorry.

Freetag ruft eine eigene Datenbankabfrage ab, die die Blogeinträge aufruft. Dies zieht keine Entryproperties mit rein.

Du könntest mal probieren aus dem genannten Code folgendes zu machen:

Code: Select all

foreach($entries AS $entryid => $title) {
    $properties = serendipity_fetchEntryProperties($entryid);
    $return['entries'][] = '<a href="' . serendipity_archiveURL($entryid, $title) . '" title="' . htmlspecialchars($title) . '">' . htmlspecialchars($title) . '</a><pre>' . print_r($properties, true) . '</pre>;
}
Das gibt das array der vorhandenen properties aus, darin müsste dann eigentlich auch dein Customfield vorkommen, das könntest du dann theoretisch per $properties['ep_Customfield1'] oder $properties['Customfield1'] ausgeben können; den genauen Schlüssel müsste man anhand der print_r Ausgabe sehen.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: im freetag plugin Customfield ausgeben

Post by reinhardl »

Super ,

$properties = serendipity_fetchEntryProperties($entryid);

Dann hat $properties[ep_Customfield1] mein zugewiesenes Bild.

Wäre da noch die Frage ob man auch an den Text des Eintrags kommt. Der ist so vermute ich in einem Feld mit Namen body. Wie kann man dieses Feld im Plugin ausgeben?

Danke
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: im freetag plugin Customfield ausgeben

Post by garvinhicking »

Hi!

Ja, das ginge ähnlich: mit

Code: Select all

$entry = serendipity_fetchEntry('id', $entryid);
kannst du den ganzen Eintrag holen; dann ist in $entry['body'] der Body, und in $entry['properties'] müsstest du auch direkt die Properties finden.

Becahte aber, dass es relativ viel Performance kostet in einer Schleife für jeden einzelnen Eintrag alle Daten auszulesen...

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: im freetag plugin Customfield ausgeben

Post by reinhardl »

und funktioniert:

Die Seite - kaum als freetag wieder zu erkennen....

Danke noch einmal ...
Post Reply