Artikel-Detail Text als Popup-Fenster /Templates allgemein

Fragen und Diskussionen zu laufenden ConPresso 4.x Projekten werden in diesem Forum diskutiert.
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Artikel-Detail Text als Popup-Fenster /Templates allgemein

Beitrag von jumpy »

Hi, ich möchte gerne, dass der eigentliche Artikeltext in einem Popup-Fenster erscheint. Auf meiner alten Seite hatte ich ein kleines Javascript-Programm mit den Fenstereinstellungen und habe dann im Programm über href="javascript:NeuFenster1('shows/comedy1.htm') die entsprechende url übergeben. Kann ich im Template die more-Option entsprechend erweitern?

Außerdem ist mir noch nicht ganz klar, was bei den Templates das 3. Feld Javascript/PHP für eine Bedeutung hat. Bei den Vorlagen sieht es so aus, als würde da das gleiche drinstehen wie auf der Indexseite?
Vielen Dank im Voraus.
Sylvia
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 02:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hallo Sylvia,

die php/javascript-Variante ist genau fuer solche Sonderfaelle gedacht. Man kann dann z.B. die index_php.php oder die index_js.php einbinden (wie das geht, siehst Du in den Rubrikeinstellungen der jeweiligen Rubrik) und diese Daten werden dann dementsprechend anders angezeigt.

Balu
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Beitrag von jumpy »

hi, leider kriege ich's immer noch nicht hin.
Mir ist nicht klar, wie ich den URL-Aufruf im Template beschreiben soll. Ich kann ja nicht einfach die Variable "Weiter-Link" in meinen JavaScript-Aufruf reinschreiben. Bin leider nicht so bewandert. Im Prinzip möchte ich
<div class="more"><!-- URL: Weiter-Link; --></div>
in <!-- URL: javascript:NeuFenster1(Weiter-Link); --> <!-- /ifSet -->
so in der Art verwandeln. Wenn ichs richtig verstanden habe, kann ich die Funktion Neufenster! in den unteren Teil reinschreiben.
Ogott, ich hoffe es ist halbwegs verständlich.
Gruss
Sylvia
und schöne Ostern
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Artikel in popup-Fenster einbinden

Beitrag von jumpy »

Hi, leider habe ich es immer noch nicht geschafft, den Artikeltext in einem pop-up Fenster (über window.open) einzubinden.
Ich habe alle _rubric-Dateien in ein neues Verzeichnis kopiert, habe im local header eine entsprechende Funktion reingepackt, aber ich weiß ehrlich gesagt nicht, wie ich den Link übergeben soll. Wo finde ich in der Datenbank den Link auf die Detailseite, um die URL zu generieren?
Vielleicht hat doch noch jemand einen Tip. (Ich weiß, von SQL leider keine Ahnung) :oops:
Achso und das mit dem Rubrik-Include funktioniert zwar grundsätzlich, aber gibt mir dann alle Artikel aus und nicht nur den einen, den ich an der Stelle aufrufen möchte. Da mache ich anscheinend auch noch einen Denkfehler.
Vielen Dank
Sylvia
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

Hallo Sylvia,

man könnte folgendermaßen vorgehen:

1. Anlegen einer Datei detail_php.php im Rubrikverzeichnis. Diese Datei hat dann folgenden Inhalt:

Code: Alles auswählen

<?php /* _\|/_              vim: set et ts=4 sw=4 sts=4 nowrap fdm=marker:
         (o o)                         
+-----oOO-{_}-OOo--------------------------------------------------------+
| ConPresso - Foolproof Content Management                               |
+------------------------------------------------------------------------+
| Copyright (c) Bartels Schoene GmbH & Co. KG, 48149 Muenster, Germany   |
+------------------------------------------------------------------------+
| This source file is subject to ConPresso license version 2002-11-16    |
| that is bundled with this package in the files LICENSE_EN.TXT or       |
| LICENSE_DE.TXT, and is available through the world-wide-web at         |
|     http://www.conpresso.de/license/LICENSE_EN-2002-11-16.TXT or       |
|     http://www.conpresso.de/license/LICENSE_DE-2002-11-16.TXT          |
|                                                                        |
| If you did not receive a copy of the ConPresso license and are unable  |
| to obtain it through the world-wide-web, please send a note to         |
| <license@conpresso.de> so we can e-mail you a copy immediately.        |
+------------------------------------------------------------------------+
| Authors: ConPresso development and support team <support@conpresso.de> |
+------------------------------------------------------------------------+
  $Id: detail.php 7 2005-07-31 13:07:39Z balu $ */
define('CPO', true);
require_once('../_include/common.inc.php');

require(CPO_BASEDIR.'_include/var_category.php');
require(CPO_BASEDIR.'_include/secure.php');

require(CPO_BASEDIR.'_includesite/i_detail.php');
?>
Dies ist der Inhalt einer normalen detail.php ohne den Aufruf der Header und Footer. Es wird eine Seite ausgegeben, die aus dem Artikel-Template zusammengebaut wird.

2. Deklarieren einer Javascript-Variablen rubrik_id im Local-Header. Natürlich muss diese innerhalb von Javascript-Tags stehen.

Code: Alles auswählen

<?php
echo '<script type="text/javascript">var rubric_id=\''.$cpoRubric['id'].'\'</script>';
?>
3. Im Rubrikseite-Template baust du dir ein Javascript ein, welches den Link folgendermaßen aufbaut:

Code: Alles auswählen

<script type="text/javascript">
document.write('<a href="javascript: window.open(\"detail_php.php?nr=<!-- Value: articlenr -->&rubric=' + rubric_id + '\")">Zur Detail-Seite</a>');
</script>
Jedenfalls wir der Link vom Javascript zusammengebaut, indem die Rubrik-id aus dem Local-Header benutzt wurde.

Das ist jetzt alles ins blaue gedacht, müsste aber funktonieren. Wenn du javascript kannst, sollte es kein Problem sein.

Gruß Matthias V

P.S.
Mit dem Rubrik-Include kann man nur eine Seite mit allen Artikeln ausgeben, also als einbindung der index-Seite in eine andere Rubrik. Dazu wird der Javascript/PHP-Teil des Templates benutzt.

Und in der Datenbank stehen keine Infos zu dem Link zur Detailseite. Jede Detailseite setzt sich zusammen aus der Datei, die aufgerufen wird, und der rubrik und der Artikelnummer. Die Artikelnummer kann man über die Templates ausgeben und die Rubrik-ID bzw. den Name kann man über PHP-Variablen ausgeben.

P.P.S. ich hoffe, ich habe alle Schreibfehler gefunden, die ich hier reingebaut habe.
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

Hallo Sylvia,

es wäre schön, wenn du schreibst ob es so funktioniert und ob du es hinbekommst, da ich dies hier ohne jeden Test einfach mal hingeschrieben habe.

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Beitrag von jumpy »

Hi, hab´s gerade ausprobiert und bis auf einen kleinen Fehler hat´s prima funktioniert (einmal statt ' ").
Aufruf:
<script type="text/javascript">
document.write('<a href="javascript: open_window(\'detail_php.php?nr=<!-- Value: articlenr -->&rubric=' + rubric_id + '\')"><!-- Image: showpics; --></a>');
</script>

Die Funktion open_window im local_header definiert dann die Fenstergröße usw.:
<script>
function open_window(url)
{
mywin=window.open(url,"win",'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=520,height=350');
}
</script>.
Vielen, vielen Dank
Gruß
Sylvia
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

Da du noch eine extra Funktion open_window() benutzt könntest du an diese Funktion auch nur die Artikelnummer übergeben, statt die gesammte URL. Die URL müsste dann von der Funktion zusammengesetzt werden, indem du in diese Funktion per PHP die Rubrik_id oder den Rubrik_Namen direkt reinschreibst.
Dazu schreibst du in die Funktion

Code: Alles auswählen

<?php echo $cpoRubric['id']; ?>
oder

Code: Alles auswählen

<?php echo $cpoRubric['name']; ?>
Dadurch muss nich in jedem Artikel die Rubrik-ID in die URL per Javascript eingetragen werden. Dies würde die Ladezeit veringern.

Kann man sich das Ergebnis mal ansehen?
Welche Vorteile versprichst du dir davon?

Zusammenfassend:

Template:

Code: Alles auswählen

<script type="text/javascript">
document.write('<a href="javascript: open_window(\'<!-- Value: articlenr -->\')"><!-- Image: showpics; --></a>');
</script>
Local-Header:

Code: Alles auswählen

<script type="text/javascript">
function open_window(articlenr)
{
mywin=window.open('detail_php.php?nr=' + articlenr + '&rubric=<?php echo $cpoRubric['name']; ?>', "win", 'toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0, width=520, height=350');
}
</script>
Dadurch entfällt auch die Deklaration der Variable rubric, die ich unter 2. beschrieben habe.

Gruß Matthias V

P.S. es ist noch wichtig, dass du in die detail_php.php noch ein HTML-Grundgerüst schreibst.
Ersetze mal

Code: Alles auswählen

require(CPO_BASEDIR.'_includesite/i_detail.php');
?>
durch

Code: Alles auswählen

?>

<html>
<head>
<title>Detailseite</title>
<!-- hier kommen noch Metadateien, CSS-Aufrufe, und ähnliches hin -->
</head>
<body>

<?php require(CPO_BASEDIR.'_includesite/i_detail.php'); ?>

</body>
</html>
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Beitrag von jumpy »

Ich nutze diese Pop-Up-Fenster, um zusätzlich Infos zu unseren Shows zu präsentieren. Ich habe detail-header und footer dringelassen, so dass ich mir dort das html-Grundgerüst zusammengebaut habe.

Kannst es dir gerne mal ansehen, aber jetzt habe ich mir gerade mein Template zerschossen (zu sehr mit den Platzhaltern rumgespielt) :oops:
und kriege jetzt folgende Mitteilung in der Rubrikanzeige:

s. auch: http://www.s158222912.online.de/_rubric ... p?rubric=2

Warning: preg_replace(): Unknown modifier '(' in /homepages/26/d158222894/htdocs/conpresso/_include/parser.php on line 162

Was kann das jetzt wieder sein :?:


Vielen Dank
Sylvia

PS. Kann man eigentlich Platzhalter, die man nicht mehr braucht oder bei denen man sich verschrieben hat, irgenwie wieder löschen?
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 02:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal

Beitrag von Matthias V »

jumpy hat geschrieben:Warning: preg_replace(): Unknown modifier '(' in /homepages/26/d158222894/htdocs/conpresso/_include/parser.php on line 162

Was kann das jetzt wieder sein :?:
Diese Fehlermeldung sieht danach aus, als ob du mehrere Platzhalter mit gleichem Namen und unterschiedlichem Platzhaltertyp verwendest. Zusätzlich verwendest du noch ein ifSet mit diesem Platzhalternamen.

Die Fehlermeldung kannst du folgendermaßen umgehen, so wie ich es im Handbuch meines Gästebuchmoduls schreibe, denn dort brauche ich unbedingt mehrere Platzhalter mit gleichem Namen.
Gästebuch-Handbuch hat geschrieben:Datei _include/parser.php öffnen

* suche:
// we got content for this placeholder
$_regex = substr($_regex, 0, -1).'(.*?)\<\!--\s*\/ifSet\s*--\>/si';
* dazwischen einfügen:
if (substr($_regex, -31, 31)=='(.*?)\<\!--\s*\/ifSet\s*--\>/si') continue;
* suche:
// we got content for this placeholder
$_regex = substr($_regex, 0, -1).'(.*?)\<\!--\s*\/ifNotSet\s*--\>/si';
* dazwischen einfügen:
if (substr($_regex, -34, 34)=='(.*?)\<\!--\s*\/ifNotSet\s*--\>/si') continue;
Oder du verwendest nur Platzhalter, die alle unterschiedliche Namen haben.
jumpy hat geschrieben:PS. Kann man eigentlich Platzhalter, die man nicht mehr braucht oder bei denen man sich verschrieben hat, irgenwie wieder löschen?
Die löschen sich von alleine. D.h. wenn du diese in allen Teilen des Templates gelöscht hast und das Template speicherst, dann tauchen diese nicht mehr im Menü des Template-Editors auf.
Bei der Artikelerfassung musst du diese Felder leeren und die Artikel abspeichern. Nicht mehr im Template verwendete Platzhalter stehen immer am Ende in der Ansicht "Artikel bearbeiten".

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
jumpy
ConPresso-User
Beiträge: 27
Registriert: 24.03.2006 23:28
Danksagung erhalten: 1 Mal

Beitrag von jumpy »

Danke,
ich hatte sie zwar schon nicht mehr im Template, aber im veralteten Artikeltext.
Jetzt ist alles in Ordnung.

Tja, dann werde ich mal weiterbasteln.
Schönes Wochenende
Gruss
Sylvia