![]() |
Spezialseiten-Entwicklung Hallo! Ich möchte für die nächste Version meiner Seite www.planeten.ch gerne das Calitrix verwenden, allerdings muss ich dazu die Spezialseitenentwicklung beherrschen. Ich hab mich mal darin versucht, eine Spezialseite zu entwickeln, die eigentlich der Sitemap entspricht, aber nur einen bestimmten Namensraum ("Lexikon") auflistet. Das führt dazu, dass ich in der special_sitemap.php die Datenbankquery folgendermassen abgeändert habe: PHP-Code: Zitat:
Sollten sich während der Entwicklung der weiteren Spezialseiten noch weitere Probleme ergeben, werd ich die natürlich auch hier posten... Ich hoffe auch, dass andere von diesem Thread profitieren können, die ebenfalls weitere Spezialseiten entwickeln wollen. Vielen Dank schon mal für die Hilfe. Freundliche Grüsse Bynaus |
versuch mal so: Code: $result = $db->query('SELECT page_namespace, page_name FROM '.DB_PREFIX.'pages '. |
Danke für die Antwort. Ich habe das soeben versucht, leider bleibt der Fehler derselbe. Ich habe lediglich die sitemap-Datei abgeändert und überall "sitemap" durch "lexikon" ersetzt, auch im Titel. |
Ha, ich habs. Ich habe das special_sitemap.tpl-File kopiert und als special_lexikon.tpl wieder eingefügt, darin die Variable $sitemap durch $lexikon ersetzt, und jetzt klappts. Cool, dann kann ich mir jetzt meine Sitemaps für verschiedene Namensräume selbst erstellen... :) Aber ich bin sicher, es werden hier noch mehr Fragen kommen... ;) |
Deine Vorgehensweise war schonmal richtig. Spezialseiten werden nicht in dem Standardtemplate für Wikitexte angezeigt. Jede Spezialseite muss selber angeben, mit welchem Template sie angezeigt werden will. Das Template wird vom CalitrixWiki mit der Funktion "getTemplate()", die von jeder Spezialseite definiert werden muss, abgefragt. Wenn das Lexikontemplate das gleiche wie das Sitemaptemplate ist, kannst du auch einfach in der Funktion "getTemplate()" der special_lexikon.php das Template "special_sitemap.tpl" angeben. Code: /** Code: /** |
Vielen Dank. Eine Frage habe ich auch noch: Wie kann man die Darstellung des "Namensraumes" vor dem Link (z.B. in der sitemap) unterdrücken? In einigen dieser "sitemap-Abzweiger" wäre das nämlich noch recht praktisch... Ich habe danach gesucht, aber nichts gefunden. |
Die Überschrift steht in der header.tpl: Code: <h1 class="page-title">{$pageTitle}{if $actionTitle != ''} - {$actionTitle}{/if}</h1> Code: <h1 class="page-title">{$pageName}</h1> {$pageName} enthält nur den Name der Seite ohne Namensraum. |
Vielen Dank, das hilft mir weiter. :) |
Nun, da wäre die nächste Frage... Wie schaff ich es, einen extern eingebundenen Text zu Parsen wie einen Text in der Wiki-Text-Datenbank? Das heisst, wenn ich aus einer externen Datenbank einen Text mit einem [[Link]] importiere, wir bringe ich Calitrix dazu, diesen auch wirklich in einen Link zu verwandeln? Das gleiche gilt für Bilder (niedrigere Priorität, Links wären wichtiger), etc. Ich habe es mit Vergleichen zum "include"-Plugin versucht, aber es will mir nicht recht gelingen. Das mag damit zusammenhängen, dass ich nicht wirklich verstehe, was da im "include"-Plugin wirklich geschieht... ;) Wenn jemand eine Idee oder einen Hinweis hat, wäre ich dankbar. |
Den Parser des Wikis für andere Texte als Artikel zu verwenden funktioniert nicht, da er Informationen (einen Seitenname, Namensraum usw.) benötigt die nur ein Artikel besitzt. Das Problem ist mir aber auch schon bekannt und bis zur 1.0 wird der Parser noch verbessert um beliebige Texte damit zu parsen. Als eine Art "ugly Hack" könntest du für den Parser eine leere Dummyseite erstellen, den Text dieser Seite auf den zu parsenden Text setzen und das ganze durch den Parser jagen: PHP-Code: |
Funktioniert... ! Vielen Dank. Auf wann ist der Release von 1.0 eigentlich geplant? EDIT: Mir ist soeben etwas aufgefallen, was man noch verbessern könnte: wenn man als User auf Zufallsseite klickt, dann kommen ab und zu auch Seiten, auf die man keinen Zugang hätte - entsprechend kriegt man eine Fehlermeldung. Wäre es vielleicht möglich, das so einzustellen, dass die Spezialseite "Zufallsseite" nur Seiten aufruft, die man auch betrachten darf? Sonst bekommt man mit der Zeit recht viele "Absagen", je nach dem, wie gross der Umfang der "versteckten" bzw. "verbotenen" Seiten ist. EDIT2: Noch einmal zu deinem "ugly hack": Könnte ich dafür nicht auch eine andere (bereits existierende) Seite nehmen? So lange ich ja unter "/Text der Dummyseite setzten" den wahren Text für den Parser "überschreibe", sollte das doch keine Rolle spielen. Oder doch? Ich ändere ja dann an der Seite selber nichts, trage nichts in die Datenbank ein, etc.. |
Klar, wenn du bereits eine Seite geladen hast, kannst du auch die verwenden. Nur extra eine zu laden wäre verschwendung, schliesslich kostet das eine eigene Datenbankabfrage. Zitat:
|
Hm, ich hab wieder mal eine Frage: Angenommen, ich möchte eine Seite einrichten, mit der ich in Calitrix Änderungen in der Datenbank vornehmen kann (in gesonderten Tabellen). Wie pack ich das am besten an? Über Spezialseiten? Über Actions? Über Plugins? Gibt es die Möglichkeit, eine php-Seite zu includen? Vielleicht könnte man ein Plugin schreiben, welches das includen von php-Seiten ermöglichen würde? EDIT: Ich habs mal versucht... Leider funktioniert das nicht ganz so wie gewünscht: der Text, der auf der includeten Seite mit print ausgegeben wird, wird ganz zuoberst im Wiki (also noch vor der Top-Leiste, ausserhalb des Textfeldes) ausgegeben. Dazu funktionieren relative Links nicht. Hat jemand eine Idee? PHP-Code: |
Das kommt erstmal drauf an, wie du die Änderungen an der Datenbank durchführen willst. Wenn du eine extra Seite haben willst die Inhalte in die Datenbank einfügt und wieder anzeigt (beispielsweise ein Gästebuch oder Newsseite) bieten sich Spezialseiten an. Wenn du innerhalb eines Artikels ein Script aufrufen willst welches eine bestimmte Aktion durchführt (beispielsweise ein Hitcounter) bietet sich ein Plugin an (da muss ja keine extra Seite angezeigt werden). Actions brauchst du nur, wenn du zu den bestehenden Aktionen (Bearbeiten, History, Optionen usw.) etwas hinzufügen willst. PHP-Includes wären prinzipiell machbar. Wenn ein via include eingebundenes Script aber eigene Daten via echo ausgibt, musst du diese abfangen da sie sonst, wie du siehst, vor allen anderen Ausgaben auftauchen. Die benötigten Funktionen dafür sind ob_start(), ob_get_contents() und ob_end_clean(). PHP-Code: PHP-Code: |
Vielen Dank für die Antwort. Das phpinclude werd ich mal so umschreiben und dann sehen, was dabei rauskommt. Was die Sicherheit angeht: wie du oben siehst, verwende ich einen speziellen Namen (der, der dem Plugin per "page=" übergeben wird und unter $url abgespeichert wird), der dann einem bestimmten Verzeichnis zugewiesen wird, in dem alle "erlaubten" php-Files liegen. Da gibt es dann keine Möglichkeit, auszubrechen, oder? Ich könnte ausserdem noch Testen, ob im übergebenen Namen nur Buchstaben vorkommen. Für richtige Datenbank"interfaces" wären aber wohl doch Spezialseiten besser. Ich schau mal, was sich da eher anbietet. EDIT: Cool, funktioniert! Wers kopieren will: (einen Ordner "includes" ist im Wiki-Rootverzeichnis zu erstellen, in dem alle gewünschen php-Includes unter dem Format include_irgendwas.php abgespeichert werden. Dem Plugin wird unter dem Namen Page dann "irgendwas" übergeben.) PHP-Code: |
Zitat:
PHP-Code: |
Du hast recht, daran hab ich gar nicht gedacht. Vielen Dank, habe das geändert. EDIT: Mir ist gerade aufgefallen, dass mein Skript zwar prüft, ob nur Buchstaben im übergebenen Text vorkommen - aber danach gar nichts damit macht. Korrekt sollte es also heissen: PHP-Code: |
PHP-Code: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr. |