Page 1 of 1

im freetag plugin Customfield ausgeben

Posted: Fri Oct 12, 2012 2:03 pm
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

Re: im freetag plugin Customfield ausgeben

Posted: Fri Oct 12, 2012 2:15 pm
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

Re: im freetag plugin Customfield ausgeben

Posted: Fri Oct 12, 2012 2:46 pm
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

Re: im freetag plugin Customfield ausgeben

Posted: Fri Oct 12, 2012 3:10 pm
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

Re: im freetag plugin Customfield ausgeben

Posted: Sat Oct 13, 2012 5:27 pm
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

Re: im freetag plugin Customfield ausgeben

Posted: Mon Oct 15, 2012 10:04 am
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

Re: im freetag plugin Customfield ausgeben

Posted: Tue Oct 16, 2012 7:53 pm
by reinhardl
und funktioniert:

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

Danke noch einmal ...