1 Blog - 2 Webseiten

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

1 Blog - 2 Webseiten

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: 1 Blog - 2 Webseiten

Post 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
# 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/
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# 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/
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post 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.
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# 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/
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post by fwe77 »

Mensch Garvin,

Du bist heute mein persönlicher Held! :D

Vielen Dank und ein schönes Wochenende!

Gruß. Frank.
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# 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/
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# 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/
fwe77
Regular
Posts: 140
Joined: Wed Sep 21, 2005 11:17 pm
Contact:

Post by fwe77 »

Genau das war es was ich gesucht habe!!! :lol:

Vielen vielen Dank! Gruß Frank.
bart_the1st
Posts: 3
Joined: Fri Nov 30, 2007 6:57 pm

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# 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/
Post Reply