Page 1 of 2
Liste aller Autoren (aber nicht in sidebar!)
Posted: Sun Sep 24, 2006 2:28 am
by stm999999999
Hallo,
gibt es eine Möglichkeit, sich alle Autoren aufzulisten, aber nicht permanent in der Sidebar sondern auf einer speziellen Seite?
Re: Liste aller Autoren (aber nicht in sidebar!)
Posted: Sun Oct 01, 2006 11:19 am
by garvinhicking
Hi!
Derzeit gibt es dafür kein Plugin. Man müsste jedoch lediglich z.B. in ein staticpage smarty template einen showPlugin Smarty-Aufruf einfügen, der das Sidebar-Plugin einfach im Content-Bereich ausgibt. Das wäre also ohne wirkliches Coding machbar.
Der andere Weg wäre natürlich, ein Event-Plugin zu entwickeln, was eigenständig ähnliches tut. IMHO tut das abern icht so Not, ich finde die Seitenleisten-Liste schon recht praktisch und würde mir eine eigene Content-Seite dafür eher nur in Ausnahmefällen nutzen?
Viele Grüße,
Garvin
Re: Liste aller Autoren (aber nicht in sidebar!)
Posted: Sun Oct 01, 2006 11:05 pm
by stm999999999
garvinhicking wrote:Derzeit gibt es dafür kein Plugin. Man müsste jedoch lediglich z.B. in ein staticpage smarty template einen showPlugin Smarty-Aufruf einfügen, der das Sidebar-Plugin einfach im Content-Bereich ausgibt. Das wäre also ohne wirkliches Coding machbar.
Hm, ich hatte mich schon daran versucht, aber das was ich mir da "ausgedacht" hatte, wollte nicht wirklich so wie ich.

Re: Liste aller Autoren (aber nicht in sidebar!)
Posted: Sun Oct 01, 2006 11:25 pm
by garvinhicking
Hi!
Was hast Du dir denn ausgedacht?
http://www.s9y.org/78.html:
Code: Select all
{serendipity_showPlugin class="serendipity_authors_plugin" }
in einem staticpage .tpl müsste schon funktionieren?
Viele Grüße,
Garvin
Posted: Mon Oct 02, 2006 12:44 am
by stm999999999
hm, ach so meinst Du das.
Hm, das bringt aber wirklich das gesamt Plugin mit allem Drumherum mitten in die Seite - das sieht nicht so wirklich berauschend aus.
Ich hatte halt versucht, eine neue smarty-Funktion zu registrieren, um dann sowas schreiben zu können wie in:
Code: Select all
{serendipity_fetchPrintEntries category=$staticpage_rss_category_id template="static-entries.tpl" limit=6 noSticky="true"}
und dann das ganze als einfache Liste oder so per tpl zu präsentieren.
aber ich bin wohl an etlichen Dingen gescheitert:
welchen hook nehmen
irgendwie hat das auch mit dem smarty-registrieren nicht geklappt etc.
Posted: Mon Oct 02, 2006 10:48 am
by garvinhicking
Hi!
Was meinst Du mit "das gesamte plugin mit allem drumherum"?
Grüße,
Garvin
Posted: Mon Oct 02, 2006 12:15 pm
by stm999999999
naja, halt die ganze Ausgabe wie ein Plugin, also mit Rahmen drumherum, Überschrift, dem Button "Alle Autoren" etc.
Ich würde lieber einfach und schlicht die Autorennamen haben:

Posted: Mon Oct 02, 2006 12:22 pm
by garvinhicking
Hi!
Achso, Du willst also NICHT einfach die Ausgabe der Seitenleiste haben, sondern etwas optisch anderes. Das hättest Du dazu sagen müssen.
Dafür müsstest du dann ein eigenes Event-Plugin entwickeln, dass auf die quasi selben Funktionen wie das Seitenleisten-Plugin zugreift. Ein gutes Beispiel welche Hooks Du nehmen musst um sowas auszugeben wäre das wrapurl event plugin; das gibt auf der seite auch einfach HTML Code aus; dort kannst Du stattdessen dann die Ausgabe des Seitenleisten-Plugins einsetzen.
Zweite Möglichkeit für Dich wäre, dass Du das Autoren-Seitenleisten-Plugin anpasst und duplizierst. Das passt Du dann so an, dass es anders heißt und die "plugin_categories2.tpl" Smarty-Datei stattdessen benutzt. Dann kannst Du dieses Smarty-TEmplate so anpassen dass "Alle Autoren "etc. nicht vorhanden ist, und dann läösst Du dir die Ausgabe dieses Plugins anzeigen anstelle des Originals.
Viele Grüße,
Garvin
Posted: Wed Oct 04, 2006 11:57 pm
by stm999999999
dann werde ich mir mal was eigenes daraus basteln ...
... dabei fällt mir auch:
WOFÜR braucht s9y DREI Plugins, deren Kernaufgabe die Auflistung der Autoren in der Seitenleiste ist?
Das userprofiles-Plugin schafft ja noch Mehrwert durch die User-Profile, die ja auch als event-plugin was macht (Profil in der Auflistung aller Artikel eines Autors). Aber die anderen? Die unterscheiden sich im Layout (einmal mit XML und der Möglichkeit mehrere Autoren anzukreuzen) und einmal ohne dies, dafür dann einmal nach Autorennamen sortiert und einmal nach Autoren-ID.
Posted: Thu Oct 05, 2006 1:26 am
by stm999999999
so, jetzt habe ich gebastelt und ich stehe wieder vorm selben Problem:
Code: Select all
Fatal error: Call to a member function on a non-object in e:\anwendungsdaten\easyphp\www\blog2\plugins\serendipity_event_userlist\serendipity_event_userlist.php on line 59
this is my code:
Code: Select all
<?php # $Id: serendipity_event_UserList.php, v0.1 2006/10/05
# (c) by Stephan Manske
# Very much copied from the other authors-plugins
#
// Probe for a language include with constants. Still include defines later on, if some constants were missing
$probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
include $probelang;
}
include_once dirname(__FILE__) . '/lang_en.inc.php';
class serendipity_event_UserList extends serendipity_event {
function introspect(&$propbag) {
global $serendipity;
$propbag->add('name', PLUGIN_EVENT_USERLIST_NAME);
$propbag->add('description', PLUGIN_EVENT_USERLIST_BLAHBLAH);
$propbag->add('event_hooks', array('genpage' => true));
// $propbag->add('configuration', array('headline', 'permalink', 'pagetitle', 'wrapurl', 'height', 'wrapurl_append'));
$propbag->add('author', 'Stephan Manske');
$propbag->add('version', '0.1');
$propbag->add('requirements', array(
'serendipity' => '0.7',
'smarty' => '2.6.7',
'php' => '4.1.0'
));
$propbag->add('groups', array('BACKEND_TEMPLATES'));
$propbag->add('stackable', false);
}
function generate_content(&$title) {
$title = $this->title;
}
function smarty_showUsersByABC ($params, &$smarty) {
global $serendipity;
echo "test serendipity_smarty_fetchPrintEntries";
}
function event_hook($event, &$bag, &$eventData, $addData = null) {
global $serendipity;
$hooks = &$bag->get('event_hooks');
if (isset($hooks[$event])) {
switch($event) {
case 'genpage':
$serendipity['smarty']->register_function('serendipity_UserList_showUsersByABC', 'smarty_showUsersByABC');
return true;
break;
default:
return false;
break;
}
} else {
return false;
}
}
}
und nebenbei: Warum erscheint in meiner Liste der geladenen Plugin [] um den Namen? "[Userlist]"
Posted: Thu Oct 05, 2006 12:25 pm
by garvinhicking
Hi!
Du greifst auf $serendipity['smarty'] in genapge zu. Da ist das noch nicht vorhanden! So einen Code packst Du am besten in die config.inc.php eines templates. Wenn Du's dringend als plugin haben willst, musst Du erst:
Code: Select all
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
vorher aufrufen.
[] um den Pluginnamen erscheint, weil Du die Member PRoperty "$this->title" nicht mit einem Namen belegt hast, und Du aber in generate_content den $title auf $this->title setzt. Entweder Du entfernst das, oder sorgst dafür dass $this->title" in der klassendefinition oberhalb mit "var $title = 'Blabla'" gesetzt wird.
Viele Grüße,
Garvin
Posted: Thu Oct 05, 2006 5:55 pm
by stm999999999
garvinhicking wrote:
[] um den Pluginnamen erscheint, weil Du die Member PRoperty "$this->title" nicht mit einem Namen belegt hast, und Du aber in generate_content den $title auf $this->title setzt. Entweder Du entfernst das, oder sorgst dafür dass $this->title" in der klassendefinition oberhalb mit "var $title = 'Blabla'" gesetzt wird.
Also, wenn ich die function generate_content
wegnehme, dann kommt "Sample!"?
Mein Problem: Mein Programmieren mit s9y besteht in großen Teilne aus gucken&nachmachen. Was muß ich machen, damit einfach nur (ist ja auch ein stackable=false-Plugin) der in der lang-Datei definierte Titel auch in der Plugin-Liste erscheint?
Warum reicht denn da nicht das
Code: Select all
$propbag->add('name', PLUGIN_EVENT_USERLIST_NAME);
OK, solved:
Code: Select all
class serendipity_event_UserList extends serendipity_event {
var $title = PLUGIN_EVENT_USERLIST_NAME;
und die generate_content ist trotzdem gelöscht. So läuft das jetzt, aber verstehen tue ich das trotzdem nicht so ganz.

Posted: Thu Oct 05, 2006 6:43 pm
by stm999999999
Du greifst auf $serendipity['smarty'] in genapge zu. Da ist das noch nicht vorhanden!
Aber wie machen das denn dann die anderen Plugins, wie etwa die prev/next-Navigation? Die kann man ja auch als Smarty einbinden!? Das arbeitet allerdings mit "entry_display" als Hook - sollte ich das lieber nehmen?
So einen Code packst Du am besten in die config.inc.php eines templates. Wenn Du's dringend als plugin haben willst, musst Du erst:
Ich denke, daß das als Plugin einfach sinnvoller ist. Wie ich ja schon oben schrieb, finde ich es eh merkwürdig, daß drei Plugins für mer oder weniger denselben Zeck exisitieren. Zielvorstellung ist für mich daher:
userprofiles-Plugin sollte auf die Profile-Funktion im event-Plugin beschränkt werden - keine Sidebar-Funktion.
Dafür ein Plugin, was per Sidebar und vor allem nach Wunsch konfigurierbar die Autoren ausgibt: mit/ohne rss, mit/ohne "Alle Autoren" und Ankreizkätchen, sortiert nach ABC oder ID.
Und dann ein event-plugin im selben plugin-Paket, daß alle diese Ausgaben auf Wunsch per smarty zuläßt.
Soweit meine Fantasien
Code: Select all
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
vorher aufrufen.
So, ich habe das jetzt direkt vor die Plugin-class-Definition gepackt:
Code: Select all
Warning: Smarty error: [in file:e:/anwendungsdaten/easyphp/www/blog2/templates/joseph01/plugin_staticpage_redaktion.tpl line 46]: syntax error: custom function 'serendipity_UserList_showUsersByABC' is not implemented (Smarty_Compiler.class.php, line 798) in e:\anwendungsdaten\easyphp\www\blog2\bundled-libs\Smarty\libs\Smarty.class.php on line 1095
Und ich habe es auch direkt an der genpage-Stelle versucht:
Code: Select all
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
$serendipity['smarty']->register_function('serendipity_UserList_showUsersByABC', 'smarty_showUsersByABC');
da kommt zwar kein Fehler mehr, aber es wird offenbar nicht die Funktion aufgerufen, denn der echo-Text erscheint nicht. Alternativ mit $this-> probiert:
Code: Select all
$serendipity['smarty']->register_function('serendipity_UserList_showUsersByABC', '$this->smarty_showUsersByABC');
dito

Posted: Thu Oct 05, 2006 6:48 pm
by stm999999999
aaarrrggh
Und jetzt kommt noch ein ganz anderes Problem hinzu:
mit folgendem Code
Code: Select all
// case 'genpage':
case 'entry_display':
// serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
$serendipity['smarty']->register_function('serendipity_UserList_showUsersByABC', '$this->smarty_showUsersByABC');
return true;
break;
bekomme ich jetzt die normale Seitenansicht, also nicht nur eine weiße Seite mit dem Fehlercode, aber dafür kommt über der Überschrift jetzt:
Code: Select all
Warning: Smarty error: [in file:e:/anwendungsdaten/easyphp/www/blog2/templates/joseph01/plugin_staticpage_redaktion.tpl line 46]: syntax error: custom function 'serendipity_UserList_showUsersByABC' is not implemented (Smarty_Compiler.class.php, line 798) in e:\anwendungsdaten\easyphp\www\blog2\bundled-libs\Smarty\libs\Smarty.class.php on line 1095
Aaaber, und das macht jegliche Fehlersuche SEHR schwierig: Wenn ich jetzt die Seite neu lade, dann ist die Fehlermeldung weg! Erst, wenn ich die tpl-Datei dieser Seite neu speichere, dann kommt einmal der Fehler und dann wieder weg!
Posted: Thu Oct 05, 2006 7:17 pm
by stm999999999
ok, gewappnet mit dem Wissen, daß diese Fehlermeldungen nur und ausschließlich beim ersten Aufruf nach einem Neuspeichernd der tpl-Datei zu sehen sind:
Auch bei "genpage" und Deinem smarty_init...
also mit folgendem Code
Code: Select all
<?php # $Id: serendipity_event_UserList.php, v0.1 2006/10/05
# (c) by Stephan Manske
# Very much copied from the other authors-plugins
#
// Probe for a language include with constants. Still include defines later on, if some constants were missing
$probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';
if (file_exists($probelang)) {
include $probelang;
}
include_once dirname(__FILE__) . '/lang_en.inc.php';
class serendipity_event_UserList extends serendipity_event {
var $title = PLUGIN_EVENT_USERLIST_NAME;
function introspect(&$propbag) {
global $serendipity;
$propbag->add('name', PLUGIN_EVENT_USERLIST_NAME);
$propbag->add('description', PLUGIN_EVENT_USERLIST_BLAHBLAH);
$propbag->add('event_hooks', array('genpage' => true));
$propbag->add('author', 'Stephan Manske');
$propbag->add('version', '0.1');
$propbag->add('requirements', array(
'serendipity' => '0.7',
'smarty' => '2.6.7',
'php' => '4.1.0'
));
$propbag->add('groups', array('BACKEND_TEMPLATES'));
$propbag->add('stackable', false);
}
function smarty_showUsersByABC ($params, &$smarty) {
global $serendipity;
echo "test serendipity_smarty_fetchPrintEntries";
}
function event_hook($event, &$bag, &$eventData, $addData = null) {
global $serendipity;
$hooks = &$bag->get('event_hooks');
if (isset($hooks[$event])) {
switch($event) {
case 'genpage':
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
$serendipity['smarty']->register_function('serendipity_UserList_showUsersByABC', '$this->smarty_showUsersByABC');
return true;
break;
default:
return false;
break;
}
} else {
return false;
}
}
}
kommt (einmal) der Fehler:
Code: Select all
Warning: Smarty error: [in file:e:/anwendungsdaten/easyphp/www/blog2/templates/joseph01/plugin_staticpage_redaktion.tpl line 46]: syntax error: custom function 'serendipity_UserList_showUsersByABC' is not implemented (Smarty_Compiler.class.php, line 798) in e:\anwendungsdaten\easyphp\www\blog2\bundled-libs\Smarty\libs\Smarty.class.php on line 1095
mitten in der normalen Seitenausgabe
