[MOD] Ankerlinks im Frontend ermöglich

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

[MOD] Ankerlinks im Frontend ermöglich

Beitrag von i-fekt » Do 9. Feb 2006, 14:33

Problem:
Ihr benutzt Sprungmarken und sie funktionieren nicht, leiten euch immer zur Startseite/Mandantenverzeichnis (z.B. /cms) um.


Was ist zu tun?

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
/cms/front_content.php


#
#-----[ FIND ]------------------------------------------
#
 if ($is_XHTML == true) {
  $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'" />';
 } else {
  $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'">';
 }


#
#-----[ REPLACE WITH ]------------------------------------------
#
 if( !empty($edit) ) {
  if( $is_XHTML == true ) {
   $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'"/>';
  } else {
   $baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'">';
  }
 }

Erklärung
Schuld ist der <base>-Tag, dieser wird im Frontend nicht benötigt. Durch die Änderung wird der <base>-Tag nur im Backend ausgegeben.


Gruß,
Daniel
Zuletzt geändert von i-fekt am Fr 28. Jul 2006, 17:46, insgesamt 3-mal geändert.

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: [FAQ] Ankerlinks funktionieren nicht mehr

Beitrag von mvf » Do 9. Feb 2006, 14:59

gleich probieren muss,

wenn des funtz ist wieder ein minor-todo von der liste :D

merci i-fekt ;) this community roxxxxxxxxxxxxxx
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 31. Jul 2006, 15:11

Mmmh, eine Lösung. Es gibt aber in Bezug auf den Newsletter mindestens einen Nebeneffekt (gilt noch nicht für V4.6.8.5) - muss ich berücksichtigen.

Übrigens sollte $baseCode wenigstens auf "" gesetzt werden.

Ich nehme es mal nach Bugs.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mo 31. Jul 2006, 15:39

das ding ist mit vorsicht zu genießen, dann bei modrewrite wird der base tag benötigt. in meinem bundle habe ich das anker problem aber ohnehin schon gelöst.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Mi 2. Aug 2006, 14:23

Dann gib uns doch bitte einen Tipp, wie du das bewerkstelligt hast :-)

Thanx

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mi 2. Aug 2006, 14:28

es funktioniert halt in modrewrite. ich suche nach <a href=""> tags die mit # beginnen und ersetze diese um den vollen modrewrite pfad, da ich da eh an der stelle rumfuhrwerken musste, is das kein thema. nur wenn man kein modrewrite nutzt braucht man diesen "hack" da oben.

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Mi 2. Aug 2006, 14:31

Gibt es in deiner Modifikation eine Möglichkeit an der Stelle abzufragen ob ModRewrite aktiviert ist oder nicht? Dann könnte man das noch dazubauen.
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Mi 2. Aug 2006, 14:33

Den obigen Hack habe ich schon eingefügt, allerdings geht er bei mir immer noch auf die Basisseite zurück...

Woran kann dass denn liegen?

Siehe hier: http://www.unser-horrem.de/cms/front_co ... hp?idcat=7

Verlinkt ist der erste rote Pfeil um wieder zum Anfang zu gelangen (rechts neben Nutzungsbedingungen)...

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mi 2. Aug 2006, 14:34

derzeit nicht, ist aber kein problem das mit reinzunehmen. das wichtige an denanker links ist, dass die url identisch der aktuellen ist. da man in contenido ja alle systemvariabelen zur verfügung hat, egal ob z.b. eine idart übergeben wurde oder nicht, muss man da die get-variablen abfragen, und damit den neuen link aufbauen.

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mi 2. Aug 2006, 14:36

@rethus:

Code: Alles auswählen

<a href="/#Top">
so kann das auch nciht klappen, weil der immer zur basisdomain geht.
so wird das schon eher was:

Code: Alles auswählen

<a href="#Top">

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Mi 2. Aug 2006, 15:04

Klar, das weiß ich... aber tiny scheint es nicht zu wissen...
Er schreibt da immer ein / vor...

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Mi 2. Aug 2006, 19:43

@rethus
suche mal bitte im forum, ich glaube das thema gabs schon mal - kann an der tinymce version liegen - am besten die aktuelle laden und dann das verzeichnis einfach drüberkopieren - vll. hilft das schon - bei mir klappt das problemlos

@i-fekt
gesagt getan - ist eingebaut. geändert gegenüber der letzten version wurde die front_content.php und classes/class.modrewrite.php

für alle anderen zum selberbauen in nicht modrewrite paketen:
folgende funktion wird benötigt und es muss sichergestellt werden, dass sie auch geladen wurde in der front_content, falls sie extern ausgelagert wird:

Code: Alles auswählen

/**
	 * return full contenido url from single anchor 
	 *
	 * @param array $arr_matches [0] = complete anchor, [1] = pre arguments, [2] = anchor name, [3] = post arguments
	 * @return string new anchor
	 */
	function contenido_html_anchor( $arr_matches = array(), $str_xhtml = true ) {
		global $parts, $idcat, $idart, $artname, $client, $lang, $sess;		
		
		$arr_params = array();
		$str_join_parameter = $str_xhtml ? '&' : '&';
		
		foreach ( $_GET as $str_key => $str_value ) {
			$arr_no_anchor = explode("#",$str_value);
			$arr_params[] = urlencode($str_key) . '=' . urlencode($arr_no_anchor[0]);
		}
		
		$str_new_url = '<a' . $arr_matches[1] . 'href="' . $sess->url( 'front_content.php?' . implode($str_join_parameter, $arr_params) . '#' . $arr_matches[2] ) . '"' . $arr_matches[3] . '>';

		return $str_new_url;
	}
danach muss in der [mandantenverzeichnis]/front_content.php folgende stelle gefunden werden:

Code: Alles auswählen

eval("?>\n".$code."\n<?php\n");
und muss ersetzt werden durch:

Code: Alles auswählen

ob_start();
eval("?>\n".$code."\n<?php\n");
$str_all = ob_get_contents();
ob_end_clean();

// anchor hack for non modrewrite websites
$str_all = preg_replace_callback(
"/<a([^>]*)href\s*=\s*[\"|\']#(.?|.+?)[\"|\']([^>]*)>/i", 
create_function( '$arr_matches' , 'return contenido_html_anchor($arr_matches, $GLOBALS["is_XHTML"]);' ),
$str_all
);

print ($str_all);

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Do 3. Aug 2006, 15:49

Hier noch ein neuer Lösungsansatz.

in der INIT-Methode von tinyMCE gebt Ihr einfach (am besten ziemlich weit unten) folgende ergänzung ein:

Code: Alles auswählen

convert_urls : false,
Damit funktioniert es bei mir... Ver. 2.0.6.1.
Die anderen Vorschläge haben alle nicht funktioniert.

Was scheinbar nicht funktioniert ist das einfügen eines Ankers über den Dialog.

Wenn das Dialogfenster offen ist, schreibt die JavaScript_Konsole: "init is not defined", wenn ich auf "Einfügen" klicke, schreibt sie "insertAction is not defined".

Und das obwohl die Verknüpfung zur Javascript-Datei in dr die Methoden drin sind richtig angegeben ist.

Kann jamend das Problem bestätigen?

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 3. Aug 2006, 15:53

Wenn das Dialogfenster offen ist, schreibt die JavaScript_Konsole: "init is not defined", wenn ich auf "Einfügen" klicke, schreibt sie "insertAction is not defined".

Und das obwohl die Verknüpfung zur Javascript-Datei in dr die Methoden drin sind richtig angegeben ist.

Kann jamend das Problem bestätigen?
Bitte keine Crosspostings, die Frage hast Du bereits an anderer Stelle gestellt.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Do 3. Aug 2006, 17:55

Ok, sorry... haben sich leider beide Themen in die Richtung entwickelt.
Das Posting was du meinst, ist hier
http://www.contenido.org/forum/viewtopi ... highlight=
zu finden, allerdings schlage ich wegen dem Titel des Postings diesen Thread vor, um das Thema weiter zu behandeln.
Ich werde auch in dem anderen Thread einen Vermerk machen, das es mit dem ankerproblem hier weiter geht.

Gesperrt