Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 15. Juli 2014 16:26
- simonson
- kennt CMS/ms
- Ort: Wien
- Registriert: 07. März 2012
- Beiträge: 192
Anker aus php führen immer zur Startseite
Hallo Gemeinde,
ich binde ein externes php-file, das lange Texte enthält, mit einem UDT [ {read_file} = readfile($params["file"]); ]
in eine Seite ein.
In diesem file werden Anker
<a name="anfang">; <a name="kapitel_1">, .....benutzt
und mit
<a href="#anfang">Seitenanfang</a>, .... aufgerufen.
Leider führen diese Anker immer zur Startseite und nicht an die gewünschte Stelle im Dokument.
Einen "smarty-Anker" {anchor anchor="side_00" text="TOP" />} kann ich in dem externen file nicht verwenden,
da dieser nur als Text ausgegeben wird.
Jemand eine Idee zur Problemlösung?
Dank vorab!
mfg
simonson
CMSMS 1.12 Apache/2.4.6 (Linux/SUSE) - PHP 5.4.20 - MySQL 5.0.95 - W7 ultimate - FF 38.0.1
Offline
#2 15. Juli 2014 19:57
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Anker aus php führen immer zur Startseite
==== php code für udt =====
$gCms = cmsms();
$contentops = $gCms->GetContentOperations();
$alias = $smarty->get_template_vars('page_alias');
$content = $contentops->LoadContentFromAlias($alias);
if( !is_object($content) ) return '';
$url = $content->GetURL();
$text = readfile($params["file"]);
$text = replace('"#','"'.$url.'#');
echo $text;
Ungetestet, müsste in etwa so funktionieren:
- Erst URL der Seite holen
- Anschliessend Text aus File
- Im Text "# mit "http://www.seite.de/seite.htm# ersetzen.
- Text ausgeben
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#3 16. Juli 2014 10:22
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: Anker aus php führen immer zur Startseite
Warum stattdessen nicht einfach das <base>-Tag im Template entweder entfernen oder so anpassen, dass es immer zum aktuellen Dokument (und nicht nur zur Domain) zeigt?
Das <base>-Tag wird automatisch mit {metadata} ausgegeben. Wenn Du nicht auf {metadata} verzichten willst, dann gibt es dafür noch den Parameter {metadata showbase='false'} oder in der config.php den Wert $config['showbase'] = false;
Beim automatisch eingefügten <base>-Tag wird als Wert für das href-Attribut die Root-URL des CMS verwendet. D.h. alle relativen Links (auch Ankerlinks) sind nicht mehr relativ zur aktuell angezeigten Seite, sondern relativ zur Root-URL. Daher landet man da immer auf der Startseite. Wenn man also stattdessen das <base>-Tag im Template selber so einfügt:
<base href="{if isset($content_obj) && is_object($content_obj)}{$content_obj->GetURL()}{else}{root_url}{/if}" />
Dann sollten alle Anker wie erwartet funktionieren.
Ich hab es aber nicht getestet. Es kann auch sein, dass dann Bilder bzw. Stylesheets nicht geladen werden können. Vor allem wenn pretty-URLs verwendet werden.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#4 16. Juli 2014 20:23
- simonson
- kennt CMS/ms
- Ort: Wien
- Registriert: 07. März 2012
- Beiträge: 192
Re: Anker aus php führen immer zur Startseite
Danke für die Hinweise - melde mich nach Test und hoffentlich Erfolg ;-)
mfg
simonson
CMSMS 1.12 Apache/2.4.6 (Linux/SUSE) - PHP 5.4.20 - MySQL 5.0.95 - W7 ultimate - FF 38.0.1
Offline
Seiten: 1