externe, HTML-Links in Navigation?

Begonnen von sausi, 06 Dezember 2005, 19:59:16

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

sausi

Hi,

eh ich gesteinigt werde: ich habe mir über die Suche alles zum Thema angeschaut, aber nichts gefunden, was mein Problem lösen konnte.
Deshalb will ich es hier jetzt mal möglichst genau darstellen.
Ich brauche eine Navigation, in der sowohl Links zu Funktionen von PragmaMx, statischen Htmlseiten und externen Seiten gemischt vorhanden sind.
Alle Inhalte sollen im Contentbereich angezeigt werden.
Die anhängende Tabelle zeigt beispielhaft, wie das aussehen soll. Am Ende sind da noch viel mehr Links drin.
Die Anzeige einer statischen Seite hat schon geklappt, aber nicht im Contentbereich.

Ich finde es seltsam, daß so eine elementare Anforderung nicht über die Administration unterstützt wird. Vielleicht kann ja jemand dazu mal ein Tutorial verfassen. Oder am besten einen Hack, mit dem man das über die Administration machen kann.
Da ich absolut kein Coder bin, hilft mir nur eine Lösung weiter, die mir genau die Syntax beschreibt, wie das Problem zu lösen ist. Verschiedene in anderen Thread genannte Erweiterungen habe ich auch schon vergeblich ausprobiert.

Wäre echt nett, wenn sich jemand dazu hinreissen ließe, mir da auf die Sprünge zu helfen.

Bei Unklarheiten bitte nachfragen.

Danke

Sausi


[gelöscht durch Administrator]

Jay-E

Also ich hab dich jetzt nicht genau verstanden aber probier es mal so:

Du erstellst einen neuen block als Html code nimmst du den hier:


<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="Hier der Url zur Datei" target="_self">Seniors</a>
<br>
<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="Hier der Url zur Datei" target="_self">Juniors</a>
<br>
<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="Hier der Url zur Datei" target="_self">Cheerleader</a>


dann wieder neuer Block und dann gibst du das hier ein als Html Code:

<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="modules.php?name=News" target="_self">News</a>
<br>
<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="modules.php?name=Kalender" target="_self">Kalender</a>
<br>
<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="Hier der link zur Tabelle" target="_self">Tabelle</a>
<br>


dann wieder ein neuer Block und fügst das hier ein:

<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="http://www.asc-tigersfan.de/forum" target="_self">Forum</a>
<br>
<img src=http://www.dein-seitenname/images/menu/rarrow.gif><a href="modules.php?name=Guestbook" target="_self">Gästebuch</a>


so probier das mal und wenn was nicht geht meld dich wieder




sausi

Hi,

der Aufruf der Seiten funktioniert soweit. Nur werden HTML-Seiten dann nicht im Content-Bereich angezeigt, d.h., das Target wird ignoriert. Irgendwas muß also noch anders gemacht werden.

Schon mal danke bis hierher.

jogi24

hi
@ sausi

reine HTML-seiten must du im iframe laufen lassen oder du machst aus den HTML-seiten ein modul.

Lazar

#4
Ich packe dafür eine "Aufruf Datei" in das Pragma Root Verzeichnis.
Beispiel:


<?php 
require_once("mainfile.php"); 
include(
"header.php"); 
Opentable(); 
$uname $cookie[1];
if (
is_user($user)) include("meinehtmlseite.php"); 
else echo (
"Diese Funktion steht nur angemeldeten Benutzern zur Verfügung. Bitte anmelden...");
Closetable(); 
include(
"footer.php"); 
?>



Alternativ kann man auch ein Modul schreiben, das eine Seite im IFRame öffnet.
Beispiel:
(Im Modulordner ein Verzeichnis erstellen, und dort folgende index.php rein:

<?php

// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly..."); 
// rechte Blöcke ein oder aus
$index 1;
// header includen
include("header.php");

opentable();
?>


<iframe height="2000" width="100%" src="modules/testkomplex/files/index.php" frameborder="no" scrolling="auto"></iframe>

<?php
// footer includen

closetable();
include(
"footer.php"); 


(Ok, sind vielleicht nicht die saubersten Lösungen, es funktioniert aber bisher sehr gut)

sausi

 :)

Danke, ich glaube, jetzt haut das hin.
Eine Frage noch: seh ich das richtig, daß ich nun für jede HTML-Seite, die ich direkt aufrufen will, ein Modul basteln muß? Oder kann man das irgendwie generalisieren?.

Lazar

#6
Du kannst auch einfach oben folgendes in Deine eigene Seite schreiben:
<?php 
require_once("mainfile.php"); 
include(
"header.php"); 
Opentable(); 


und unten:
Closetable();
include("footer.php");
?>


Ich habe mich aber dafür entschieden, das ich es grundsätzlich mit einer Startseite mache. (da ich z.B. teilweise auch mehrere Seiten Include.

(Der "bessere" Weg wäre natürlich die Seiten grundsätzlich in Module zu packen. Aber da ich oft nur mal eine Seite für einen begrenzten Zeitraum drin haben möchte, verwende ich den einfachen Weg).

Mittlerweile habe ich die gesamte Navigation als HTML Block, da ich sowieso viel Wert drauf, die Navigation selber zu gestalten.
Beispiel: Der Foren Link auf http://battle-friends.de/index.php

JoergK

ZitatOder kann man das irgendwie generalisieren?

Das sollte auch gehen. Erstell eine index.php mit folgendem Inhalt:

<?php

// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly..."); 
// rechte Blöcke anzeigen: 1 = ja, 0 = nein
$index 1;
// header includen
include("header.php");

opentable();

if (@
file_exists("modules/testkomplex/files/".$pagetitle.".htm")){
  echo 
"<iframe height='2000' width='100%' src='modules/testkomplex/files/".$pagetitle.".htm' frameborder='no' scrolling='auto'></iframe>\n";
}elseif (@
file_exists("modules/testkomplex/files/".$pagetitle.".html")){
  echo 
"<iframe height='2000' width='100%' src='modules/testkomplex/files/".$pagetitle.".html' frameborder='no' scrolling='auto'></iframe>\n";
}else{
  echo 
"Die gewünschte Seite existiert nicht.\n";
}

closetable();

// footer includen
include("footer.php");
?>


In Deinem HTML-Menüblock müßte in Anlehnung an die Syntax in Antwort 1 der Code für nen ensprechenden Menüpunkt dann so aussehen:

<img src=images/menu/rarrow.gif> <a href="modules.php?name=testkomplex&pagetitle=NamederHTML-Datei_ohneEndung">Text für den Menüpunkt</a>

Probier's mal aus, hab das nicht getestet ;)


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

sausi

 :)
Nun ist es perfekt
Ich habe mit meinem Bruder (Diplom Informatiker) eine kleine Änderung vorgenommen. Es hat wohl ein Problem mit der Varialben $pagetitle gegeben, weil die als globale Variable genutzt wird. Die haben wir in $pagetitle1 umbenannt. Und Schwupp di Wupp, nun funzt es.
Den Pfad habe ich an den bei mir angelegten angepasst.
Hier der Code:
<?php

// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly..."); 
// rechte Blöcke anzeigen: 1 = ja, 0 = nein
$index 1;
// header includen
include("header.php");

opentable();


  echo 
"<iframe height='2000' width='100%' src='pages/".$pagetitle1.".htm' frameborder='yes' scrolling='auto'></iframe>\n";

closetable();

// footer includen
include("footer.php");
?>


Der Aufruf erfolgt über
<img src=images/menu/rarrow.gif> <a href="modules.php?name=pages&pagetitle1=Name der Datei">Linktitel</a><br>
Auch den ifelse haben wir rausgenommen. Für das, was ich brauche ist er wohl nicht erforderlich.
Wer mag kann sich das Ergebnis ja mal unter http://www.asc-tigersfan.de/pragma anschauen.

Vielen Dank für die schnelle und effektive Hilfe.

JoergK

Super, dass es nu funzt  :thumbup:

Sorry, aber dass $pagetitle bereits innerhalb von pragmaMx genutzt wird wußte ich nicht, hätte es aber durch ne Kontrolle in Erfahrung bringen können. Werd ich wohl beim nächsten mal machen.  ;)


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Andi

Zitat von: JoergK am 10 Dezember 2005, 18:16:30
dass $pagetitle bereits innerhalb von pragmaMx genutzt wird wußte ich nicht,

Joppi, das ist die Variable, mit der <title> Tag im html-Header beeinflusst werden kann ;)
schön´s Grüssle, Andi

Sam Eagle

Moinsen!
Ich hab das mal versucht nachzubauen, kriege aber ´nen Fehlerhinweis.
Deswegen nochmal für ´nen Blöden:
Ich hab im Verzeichnis "modules" ein Verzeichnis "pages" eingerichtet.
Im Verzeichnis "pages" liegen eine Datei "vorstand.htm" und eine "index.php" mit folgendem Inhalt:

<?php
// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");
// rechte Blöcke anzeigen: 1 = ja, 0 = nein
$index = 0;
// header includen
include("header.php");
opentable();
if (@file_exists("modules/pages/".$pagetitle1.".htm")){
  echo "<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".htm' frameborder='no' scrolling='auto'></iframe>\n";
}elseif (@file_exists("modules/pages/".$pagetitle1.".html")){
  echo "<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".html' frameborder='no' scrolling='auto'></iframe>\n";
}else{
  echo "Die gewünschte Seite existiert nicht.\n";
}
closetable();
// footer includen
include("footer.php");
?>

Der Aufruf erfolgt über:
<img src=images/menu/rarrow.gif alt=""> <a href="modules.php?name=pages&pagetitle1=vorstand">Vorstand</a><br>

Die Fehlermeldung lautet:
Parse error: parse error, unexpected T_STRING in /mnt/am1/08/737/00000018/htdocs/modules/pages/index.php on line 2

Hab ich was vergessen oder bin ich total auf dem Holzweg? Meine PHP Kenntnisse gehen nämlich gegen null.
Gruß
Sam Eagle

JoergK

Hiho  ;)

hab das mal angetestet und kann (leider) keinen Fehler lokalisieren, sprich ich bekomme keine Fehlermeldung.

Ich tippe mal, dass es evtl. an der PHP-Version und/oder an der PHP-Konfiguration liegen könnte - bin mir dessen jedoch nicht sicher.

Hier mal zum Vergleich und als Hilfestellung für nen Experten die Serverumgebung, auf der ich's getestet hab:


  • pragmaMx 0.1.7, 1.20/2005-11-11
  • PHP-Version: 4.3.4
  • Server-Version: Apache/2.0.49 (Linux/SuSE)


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

RiotheRat

Wofür hat pragmaMx einen Debugmodus? Die Variable $pagetitle1 ist nirgends definiert! Von daher kann ein Konstrukt wie modules/pages/".$pagetitle1.".htm nicht funktionieren.

<?php
// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly..."); 
// rechte Blöcke anzeigen: 1 = ja, 0 = nein
$index 0;
// header includen
include("header.php");
OpenTable();

$pagetitle1 = (empty($_GET['pagetitle1'])) ? "" trim($_GET['pagetitle1']);

if (@
file_exists("modules/pages/".$pagetitle1.".htm")){
  echo 
"<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".htm' frameborder='no' scrolling='auto'></iframe>\n";
}elseif (@
file_exists("modules/pages/".$pagetitle1.".html")){
  echo 
"<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".html' frameborder='no' scrolling='auto'></iframe>\n";
}else{
  echo 
"Die gew&uuml;nschte Seite existiert nicht.\n";
}
CloseTable();
// footer includen
include("footer.php");
?>
Unaufgeforderte PNs & Emails werden ignoriert

Erst wenn die letzte Zeile Code verhunzt, der letzte Server gehackt und der letzte Script-Kidde befriedigt ist, erst dann, werdet Ihr feststellen, dass Nuke nicht sicher ist...

Sam Eagle

Moinsen!
Vielen Dank erstmal für eure Hilfe!
@rio
Habe deinen Code in die index.php gepackt, der Fehlerhinweis bleibt aber (leider) der selbe.

Falls noch jemand Ideen hat immer her damit. Ansonsten werde ich wohl jetzt für jede Seite ein Modul bauen.

Gruß
Sam Eagle

P.S.: Falls es hilft: Ich benutze Pragmamx 0.1.7 und Provider ist Strato.

ruajoerg

...,

ist es noch die Seite, die du oben angegeben hast? Dort ist kein Parse error ersichtlich. Die Seiten werden doch korrekt angezeigt - zumindestens bei mir ???
Gruß Jörg

jubilee

ZitatDie Seiten werden doch korrekt angezeigt - zumindestens bei mir

Vielleicht hat er seinen Browsercache nicht geleert ?

MfG
jubilee

Sam Eagle

Moinsen!
Zitat
ist es noch die Seite, die du oben angegeben hast? Dort ist kein Parse error ersichtlich. Die Seiten werden doch korrekt angezeigt - zumindestens bei mir ???
Ich bin etwas verwirrt!  ;D Welche Seite meinst du?
Ich geb euch jetzt mal die Links zu den "echten" Seiten!
Startseite: www.tsv-sievern.de/2006.php Dann links unter Abteilungen "Vorstand" anklicken.
Direktaufruf: http://www.tsv-sievern.de/modules.php?name=pages&pagetitle1=vorstand
Gruß
Sam Eagle

ruajoerg

...,

Fehler vom Amt, vergiss mein Beitrag. Habe nicht alles gelesen ;D
Gruß Jörg

jogi24

hi

da zeile 2 eine info-zeile ist, versuch mal
// durch # zu ersetzen.
aber nur zeile 2

dann müsste der nächste fehler in zeile 4 kommen.

Sam Eagle

#20
Moinsen!
Bleibt dabei! "on line 2"
Vielleicht sollte ich mit der Index.php in Zeile 3 anfangen, dann hätte sich das Problem erledigt!  ;D ;D ;D (kleiner Scherz)!
Hab die Seite auf dem Server geändert! Kannst ja auch nochmal ausprobieren.
Gruß
Sam Eagle
P.S.: Wenn man die index.php direkt aufruft über http://www.tsv-sievern.de/modules/pages/index.phpkommt der folgende Fehler:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /mnt/am1/08/737/00000018/htdocs/modules/pages/index.php on line 2

Parse error: parse error, unexpected T_STRING in /mnt/am1/08/737/00000018/htdocs/modules/pages/index.php on line 2


jubilee

Hallo !
Hmmmm komisch das
Du hast da als kommetarzeichen auch wirklich // verwendet und nicht zufällig \\
Poste bitte nochmal die gesamte index.php hier
MfG
jubilee

Sam Eagle

Moinsen!
Hier der Inhalt der index.php:

<?php
// Direktaufruf verhindern
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");
// rechte Blöcke anzeigen: 1 = ja, 0 = nein
$index = 0;
// header includen
include("header.php");
OpenTable();

$pagetitle1 = (empty($_GET['pagetitle1'])) ? "" : trim($_GET['pagetitle1']);

if (@file_exists("modules/pages/".$pagetitle1.".htm")){
  echo "<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".htm' frameborder='no' scrolling='auto'></iframe>\n";
}elseif (@file_exists("modules/pages/".$pagetitle1.".html")){
  echo "<iframe height='2000' width='100%' src='modules/pages/".$pagetitle1.".html' frameborder='no' scrolling='auto'></iframe>\n";
}else{
  echo "Die gew&uuml;nschte Seite existiert nicht.\n";
}
CloseTable();
// footer includen
include("footer.php");
?>

Kann es vielleicht sein, dass ich vorher Bockmist gebaut habe? Beim aktivieren des Moduls oder sonstwas?
Gruß
Sam Eagle

Sam Eagle

Moinsen!
Leute! Ich hab´s! So krumm kann kein Mensch denken!
Ich habe die index.php mit dem ganz normalen Wordpad von Win XP erstellt. Beim speichern schlägt Wordpad automatisch das RTF Format vor. Naja nix bei gedacht und "speichern" geklickt. Ergebnis waren die oben genannten Fehlermeldungen. Nachdem ich nun ca. 8 Triliarden mal die index.php geändert habe und tausend Sachen versucht habe kam mir der glorreiche Gedanken: Was, wenn das RTF Format formatierungsinfos mit speichert ? Format auf Textdokument geändert und schon läuft´s!
Danke an alle für die Hilfe!
Dann kann es jetzt ja weiter gehen!
Gruß
Sam Eagle

JoergK

ZitatIch habe die index.php mit dem ganz normalen Wordpad von Win XP erstellt.

Du solltest Dir nen "gescheiten" Editor zulegen. Ich z.B. arbeite mit dem Weaverslave. Den gibt's, wie einige andere Editoren auch, sogar kostenlos. Ist aber nur ein Beispiel. Es gibt eine Reihe guter Texteditoren, die speziell auf Scriptsprachen, wie z.B. HTML, CSS, PHP, Perl etc. zugeschnitten sind.


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

jubilee

Hallo !
Sämmtliche "bessere" Editoren von Windows taugen nix für solche Art arbeiten.
Allein der Editor (Editor oder Notepad) versaut beim Speichern nicht die Datei, weil er gar keine Formatierungsinfos speichert (ausser tabstops) und die Datei anschließ0end im sauberen Textformat vorliegt.
Alle anderen Editoren oder Textverarbeitungsprogramme bauen Müll.
Bitte nur Editoren nehmen die wirklich für Scriptsprachen geeignet sind. Es gibt da wirklich reihenweise ganz brauchbare Dinger. Da lohnt evt. auch ein Ausflug nach http://www.hotscripts.com
im Bereich php/Tools and Programs sollte sich etwas finden.


MfG
jubilee