Autor |
Nachricht |
SimonDerDude
Threadersteller
Dabei seit: 15.01.2010
Ort: error: undefined
Alter: 35
Geschlecht:
|
Verfasst Fr 16.07.2010 09:59
Titel Switch Content & Smarty (JQuery) |
|
|
Tagchen,
ich bin gerade auf Kriegsfuß mit Smarty.
Ich durfte dem Intranet unserer Agentur ein Re-Design verpassen und habe den gesamten Content in .tpl angelegt.
Es ist eine Navigation vorhanden, welche mit Leveln aus einer Datenbank erzeugt wird.
Hat alles dolle funktioniert, aber der Chef so:
Der gescrollte Content soll nicht nach oben springen wenn ein Link geklickt wird.
Da ich die Navigation eh mit JavaScript (Treeview Menu) gestaltet habe, war ich der Meinung folgendes Script zu nutzen um ein Reload der Seite zu verhindern:
Code: |
{literal}
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j("ul li a").click(function(){
$j.ajax({
url: $j(this).attr("href"),
success: function(response) {
$j("#con").html(response);
}
});
return false;
});
});
</script>
{/literal}
|
Gut, es funktioniert auch, jedoch wird im betitelten Container nicht nur der Inhalt der tpl Datei ausgegeben sondern das gesamte Layout.
Ich weiss gerade auch nicht recht wonach ich suchen muss.
Logischerweise gibt es keine live ansicht, deshalb nur ein Screenshot des Problems:
Screen
Ich schätze, dass irgend etwas am JS geändert werden muss, für Fragen und Anregungen bin ich offen.
Vielleicht bin ich auch einfach nur zu müde
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Fr 16.07.2010 10:19
Titel
|
|
|
Das Problem hat aber rein gar nichts mit Smarty zu tun. Du lädst eine komplette HTML Seite (egal woher) in deinen Content div, d.h. das was du siehst ist genau richtig
|
|
|
|
|
Anzeige
|
|
|
SimonDerDude
Threadersteller
Dabei seit: 15.01.2010
Ort: error: undefined
Alter: 35
Geschlecht:
|
Verfasst Fr 16.07.2010 10:59
Titel
|
|
|
Das heisst ich muss in der tpl zu html Konvertierung verhindern dass das gesamte layout erzeugt wird?
Oder habe ich gerade eine falsche Auffassung des Scriptes...
Es wird doch lediglich der Platzhalter ausgefüllt warum kommt da der komplette content
Ich habe das Rad nicht neu erfunden, daher muss ich mir erst den wirklich kompletten überblick verschaffen was das Script überhaupt genau tut.
Zuletzt bearbeitet von SimonDerDude am Fr 16.07.2010 11:03, insgesamt 1-mal bearbeitet
|
|
|
|
|
SimonDerDude
Threadersteller
Dabei seit: 15.01.2010
Ort: error: undefined
Alter: 35
Geschlecht:
|
Verfasst Fr 23.07.2010 09:25
Titel
|
|
|
Wie ich es halt nicht gerafft habe, Eistee hat natürlich recht.
Code: | url: $j(this).attr("href") |
Kein Wunder wird das komplette Layout geladen wenn ich auf die url zugreife.
Nun frage ich mich bloß wie ich NUR den hintersten Teil abgreife.
Der sieht ja z.B. so aus:
Code: | /index.php?page=miniERP |
Hat jemand schonmal so etwas gemacht?
Ich werde sogleich nach dem Post Googl0arn, ich schreibe bloß schon weil ich nicht ewig dafür Zeit habe.
|
|
|
|
|
zweitaccount
Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 23.07.2010 09:33
Titel
|
|
|
Moin,
du könntest deiner Url beim Request noch einen
Parameter dranhängen (z.B. async=true) und auf
deinen Templates abfragen isset($_GET['async'])
und wenn ja nur den gewünschten Teil ohne Head
etc... ausgeben lassen.
Grüße
Zweitaccount
|
|
|
|
|
SimonDerDude
Threadersteller
Dabei seit: 15.01.2010
Ort: error: undefined
Alter: 35
Geschlecht:
|
Verfasst Fr 23.07.2010 10:02
Titel
|
|
|
zweitaccount hat geschrieben: | einen Parameter dranhängen |
Awesome, auf sowas sind nichtmal die im Smarty Forum gekommen.
Ich versuche das mal - besten Dank
Zuletzt bearbeitet von SimonDerDude am Fr 23.07.2010 10:03, insgesamt 1-mal bearbeitet
|
|
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Fr 23.07.2010 23:43
Titel
|
|
|
ansonsten kannst du den geladenen schwund auch explizit auf einen container parsen:
http://api.jquery.com/load/ hat geschrieben: |
Loading Page Fragments
The .load() method, unlike $.get(), allows us to specify a portion of the remote document to be inserted. This is achieved with a special syntax for the url parameter. If one or more space characters are included in the string, the portion of the string following the first space is assumed to be a jQuery selector that determines the content to be loaded.
We could modify the example above to use only part of the document that is fetched:
$('#result').load('ajax/test.html #container');
|
(statt $.ajax)
... erzeugt aber natürlich massig overhead (sollte ja im intranet aber nicht so wichtig sein).
Zuletzt bearbeitet von sahnemuh am Fr 23.07.2010 23:43, insgesamt 1-mal bearbeitet
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Sa 24.07.2010 13:01
Titel
|
|
|
zweitaccount hat geschrieben: | Moin,
du könntest deiner Url beim Request noch einen
Parameter dranhängen (z.B. async=true) und auf
deinen Templates abfragen isset($_GET['async'])
und wenn ja nur den gewünschten Teil ohne Head
etc... ausgeben lassen.
Grüße
Zweitaccount |
JQuery sendet sowieso den X-REQUESTED-WITH-Anfrageheader, damit kann man sich so ein Parametrisierungsgeschrummel sparen.
Zitat: | Awesome, auf sowas sind nichtmal die im Smarty Forum gekommen.
|
Das wundert mich nicht.
http://fabien.potencier.org/article/34/templating-engines-in-php
Zuletzt bearbeitet von bacon am Sa 24.07.2010 13:02, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
jquery - hide content in jquery object
jquery page switch plugin
Javascript "Content-Switch" mit Effekt
Suche jQuery Content Switcher
Content-Scoller als jQuery-Plugin gesucht
JQuery Slide: Button und Content unabhängig?
|
|