Page 1 of 1

1 Blog - 2 Webseiten

Posted: Thu Oct 13, 2005 4:43 pm
by fwe77
Hallo zusammen,

nachdem ich erfolgreich mein erstes Serendipity aufgesetzt habe, bin ich auf den Geschmack gekommen. Ich betreibe Privat 2 Seiten, um mir die Arbeit ein wenig zu vereinfachen, würde ich gerne das bestehende Newssystem durch Serendipity ersetzen.

Demnach müsste man auf den Webseiten Serendipity includen, d.h Header und Footer "ersetzen"?

Oder, RSS mit PHP auslesen (zfeeder) und auf die Seite packen?

Oder, gibt es eventuell schon ein Plugin, das dies für mich erledigt?

Many Thanx. Frank.

Re: 1 Blog - 2 Webseiten

Posted: Thu Oct 13, 2005 4:51 pm
by garvinhicking
Wie Du schon anmerkst, gibt es dazu verschiedenste Möglichkeiten.

1. Die einfachste, wenn Du etwas PHP kannst, ist das Du folgendes in Dein Framework einbaust:

Code: Select all

<?php
$olddir = getcwd();
chdir('/path/to/s9y');
include_once('serendipity_config.inc.php');
include_once('include/genpage.inc.php');
chdir($olddir);
?>
Mit den paar Zeilen kann dann dein Standard-Template ausgegeben werden. Alternativ kannst Du aber die SErendipity Funktionen serendipity_fetchEntries() selber ansprechen und dann das zurückgegebene Array mit eigenem Layout ausgeben.

2. Mit etwas Smarty Magie bearbeitest Du Dein Blog-Template und sorgst dafür, dass Du deinen Inhalt auch mittels iframe() woanders einbinden kannst. Dir den "Embed" Modus (siehe Doku) anzusehen könnte evtl. auch nicht schaden.

3. Du nutzt das Plugin "serendipity_event_backend" von dma147 (im Plugin-Verzeichnis) mit dem Du einen einfachen Javascript-Block nutzen kannst der Deine Inhalte einbettet.

4. Die RSS-Methode, wobei hier am meisten Flexibilität flöten geht und der meiste Netzwerk-Traffic verursacht würde.

Wenn Du also Ahnung von PHP hast, empfehle ich Methode 1. Wenn Du's schnell und einfach haben willst, Methode 3. Wenn Du es immer noch einfach haben willst aber mit etwas Layoutkontrolle, nutze Möglichkeit 4 mit einem gängigen RSS Parser wie Magpie oder Onyx. :)

Viele Grüße,
Garvin

Posted: Thu Oct 13, 2005 6:04 pm
by fwe77
Hallo Garvin,

besten Dank für die schnelle und seeeehr ausführliche Antwort! :shock: Ich gehe die Punkte mal durch und schaue, was für mich am ehesten in Frage kommt!

Eine Frage noch zu der PHP Geschichte! Wie kann ich zum Beispiel nur News von einer Kategorie anzeigen lassen?

Vielen Dank. Frank.

Posted: Fri Oct 14, 2005 1:45 pm
by garvinhicking
Hi Frank,

Die kannst Du recht leicht einschränken, indem Du vor dem serendipity_fetchEntries() aufruf ein $serendipity['GET']['category'] = 4711; setzt, also die ID der KAtegorie die Du haben willst.

Aus Backwards-Compatibility-Gründen kann man diese KategorieID leider nicht als Parameter in der Funktion angeben.

Viele Grüße,
Garvin

Posted: Fri Oct 14, 2005 7:13 pm
by fwe77
Hi Garvin,

besten Dank mal wieder :oops: für die schnelle und ausführliche Antwort. Echt genial, was Du hier leistest! :lol:

Allerdings muss ich noch mal Deine Hilfe in Anspruch nehmen.

Also ich habe mich mal an die PHP Umsetzung gemacht, aber ich bin scheinbar mehr Admin als Programmierer! :oops: Vielleicht kannst Du mir noch einen kleinen Tip in die richtige Richtung geben.

Also mein Quellcode:

Code: Select all

<html>
<head><title>.:BLOGimport:.</title></head>

<body bgcolor="#eeeeee">

<?php
$olddir = getcwd();
chdir('blog/');

include_once('blog/serendipity_config.inc.php');
include_once('blog/include/genpage.inc.php');
serendipity_smarty_init();
print_r(serendipity_fetchEntries(null, true, 15));

chdir($olddir);
?>

</body>
</html>
Und das ist der Output!

Please help! Frank.

Posted: Fri Oct 21, 2005 11:42 am
by fwe77
Hallo zusammen,

also irgendwie komme ich nicht so richtig weiter! Hat vielleicht jemand noch eine Tip für mich, wie ich meiner Lösung ein wenig näher komme? :roll:

Vielen Dank schon mal!

Frank.

Posted: Fri Oct 21, 2005 12:13 pm
by garvinhicking
Sorry, hab Dein Posting hier nicht gesehen.

Du hast ja den Output schon, jetzt kannst Du ihn ganz einfach ausgeben:

Code: Select all

<html>
<head><title>.:BLOGimport:.</title></head>

<body bgcolor="#eeeeee">

<?php
$olddir = getcwd();
chdir('blog/');

include_once('blog/serendipity_config.inc.php');
include_once('blog/include/genpage.inc.php');
serendipity_smarty_init();
$entries = serendipity_fetchEntries(null, true, 15);
foreach($entries AS $entry) {
  echo '<h3>' . $entry['title'] . '</h3>';
  echo '<div>' . $entry['body'] . '</div>';
}
chdir($olddir);
?>

</body>
</html> 
Viele Grüße,
Garvin

Posted: Fri Oct 21, 2005 6:13 pm
by fwe77
Mensch Garvin,

Du bist heute mein persönlicher Held! :D

Vielen Dank und ein schönes Wochenende!

Gruß. Frank.

Posted: Mon Oct 24, 2005 12:28 pm
by fwe77
Hallo Garvin,

könntest Du mir noch einen Tip geben, wie ich das CSS von Serendipity für meine Zwecke nutzen kann? :roll:

Danach hast Du auch betsimmt Deine Ruhe (zumindest vor mir)! :lol:

Gruß. Frank.

Posted: Mon Oct 24, 2005 12:31 pm
by garvinhicking
Klar, Du kannst in Deinem HTML Kopfbereich einfach folgendes einfügen:

Code: Select all

 <link rel="stylesheet" type="text/css" href="http://localhost/serendipity/trunk/index.php?/serendipity.css" />
Damit lädst Du das CSS von Serendipity. URL natürlich richtig einfügen. :)

Grüße,
Garvin

Posted: Mon Oct 24, 2005 1:23 pm
by fwe77
Besten Dank, darauf hätte ich auch selbst kommen können! :oops:

Allerdings gibt es dann Probleme mit meinem CSS. Ich habe jetzt versucht, die CSS Syntax, die von mir benötigt wird in mein CSS File mit aufzunehmen.

Doch ein Problem habe ich noch :roll: und zwar mit dem Layout, will heißen, beim "Import" fehlen Absätze und Leerzeilen! Kannst Du mir die Klasse nennen, die dafür verantwortlich ist?

Ach ja, wo ich gerade dabei bin. Bei Deinem Quellcode - Vorschlag hast Du folgende Zeilen verwandt:

Code: Select all

echo '<h3>' . $entry['title'] . '</h3>';
echo '<div>' . $entry['body'] . '</div>'; 
Ich nehme mal an, das die Variablen für Überschrift und Hauptteil stehen. Kannst Du mir eventuell sagen, wo ich die Variablen für die Kommentare bzw. des Autors her bekomme?

Vielen, vielen Dank!!! Frank.

Posted: Mon Oct 24, 2005 1:36 pm
by garvinhicking
Wenn Du quasi das s9y layout nachstellen willst, würde es sich eventuell lohnen, wenn Du mit der serendipity_printEntries() funktion arbeiten würdest:

Code: Select all

<?php ob_start(); ?>
<html>
<head><title>.:BLOGimport:.</title></head>

<body bgcolor="#eeeeee">

<?php

include_once('blog/serendipity_config.inc.php');
include_once('blog/include/genpage.inc.php');
serendipity_smarty_init();
$entries = serendipity_fetchEntries(null, true, 15);
serendipity_printEntries($entries);
echo serendipity_smarty_fetch('ENTRIES', 'entries.tpl', true);
?>

</body>
</html>
Wie Du siehst, kommen am Ende zwei Funktionsaufrufe dazu, die den foreach-Loop ersetzen. Auch ganz wichtig am Anfang die ob_start() Funktion.

Wenn Du es aber mit eigenem Inhalt probieren willst, kannst Du das richtige Layout wie folgt erzwingen, innerhalb deines foreach-loops

Code: Select all

foreach($entries AS $entry) {
  $entry['display_dat'] = '';
  serendipity_plugin_api::hook_event('frontend_display', $entry);
  serendipity_plugin_api::hook_event('frontend_display:html:per_entry', $entry);
  $entry['plugin_display_dat'] =& $entry['display_dat'];

  echo '<h3>' . $entry['title'] . '</h3>';
  echo '<div>' . $entry['body'] . '</div>';
}
Dadurch werden nämlich die Plugins, die Dir nl2br und Smilies umwandeln auch alles ausgeführt.

Zusätzliche Infos, welche Variablen Dir zur Verfügung stehen, kannst Du mit einem print_r($entry) auslösen.

Viele Grüße,
Garvin

Posted: Mon Oct 24, 2005 2:05 pm
by fwe77
Genau das war es was ich gesucht habe!!! :lol:

Vielen vielen Dank! Gruß Frank.

Posted: Fri Nov 30, 2007 11:16 pm
by bart_the1st
Das hat mir doch schon mal sehr weiter geholfen!

Ich habe es nun so gemacht:

Code: Select all

<?php ob_start(); ?> 
<html> 
<head><title>.:BLOGimport:.</title></head> 

<body bgcolor="#eeeeee"> 

<?php 

include_once('serendipity_config.inc.php'); 
include_once('include/genpage.inc.php'); 
serendipity_smarty_init(); 
$entries = serendipity_fetchEntries(null, true, 5); 
serendipity_printEntries($entries); 
foreach($entries AS $entry) { 
  $entry['display_dat'] = ''; 
  serendipity_plugin_api::hook_event('frontend_display', $entry); 
  serendipity_plugin_api::hook_event('frontend_display:html:per_entry', $entry); 
  $entry['plugin_display_dat'] =& $entry['display_dat']; 

  echo '<h3>' . $entry['title'] . '</h3>'; 
  } 
 
?> 

</body> 
</html>
Ich habe nur noch 2 "Probleme"
- die umlaute (äöü) werden nicht richtig dargestellt (z.b. ä = ä)
- ich würde die Titel gerne als link haben

Posted: Fri Nov 30, 2007 11:22 pm
by garvinhicking
Hi!

1. Wenn du dein blog mit UTF-8Zeichensatz laufen lässt, musst DU im <head> Bereich ebenfalls den Content-Type als UTf-8 deklarieren, oder alternativ mittels PHP header('Content-Type: text/html; charset=UTF-8') setzen.

2. Dann nutze statt

Code: Select all

  echo '<h3>' . $entry['title'] . '</h3>'; 

Code: Select all

  echo '<h3><a href="' . $entry['link'] . '">' . $entry['title'] . '</a></h3>'; 
Grüße,
Garvin