Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 11. Mai 2011 10:58
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
[Alles gelöst] Mobile Seite über Subdomain
Hallo,
habe mich schon ein wenig umgeschaut, aber nicht wirklich was gefunden.
Für das Projekt www.festtagsgedichte.de möchte ich eine Mobile Präsenz aufbauen.
Auf dem iPad kann man die Seite noch ganz gut anschauen, aber auf dem iPhone oder anderen Smartphones ist es schon nicht mehr so schön, da wir mit einem Dropdown-Menü arbeiten und durch die Fülle der Information die Links sehr nah beieinander liegen.
Ich stelle mir das Ganze in etwa so vor:
http://m.soundandrecording.de
Anstelle der News sollen natürlich die Übergeordneten Kategorien auftauchen. Wenn man eine anklickt, gelangt man zur nächsten Kategorie bis man letztendlich den Text sieht.
Eine Suche will ich natürlich auch integrieren.
Eine Subdomain anzulegen ist kein Problem. Aber wie kann ich CMSms am geschicktesten beibringen, dass es bei Eingabe von http://m.festtagsgedichte.de das entsprechende Template anzeigen soll, ohne dass das Haupttemplate berührt wird?
Bin wie immer über jeden Tipp dankbar...
Jan
Beitrag geändert von jeff1980 (18. Mai 2011 08:13)
Offline
#2 11. Mai 2011 11:34
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Ganz ums ändern des Templates kommst du nicht rum. Du könntest eine Weiche einbauen mit welcher die Domain abgefragt wird. Entsprechend gibt es im Template sozusagen 2 Templates. So im Sinne von:
{ ... header ... }
{ assign der Contentelemente }
{if domain == "m.domain.com}
... hier das Mobile Template ....
{else}
... hier das normale Template ....
{/if}
Es braucht noch eine kleine Anpassung in der config.php damit die Domains erhalten bleiben, aber so könnte es funktionieren.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#3 11. Mai 2011 12:07
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
{if domain == "m.domain.com}
Du meinst doch sicherlich
{if $smarty.server.SERVER_NAME == "m.domain.com}
Und die config.php ändern, wie hier beschrieben
http://www.cmsmadesimple.de/forum/viewt … 5543#p5543
Die Weiterleitung auf die mobile Domain kannst du ja via htaccess machen
Offline
#4 11. Mai 2011 12:34
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
nockenfell schrieb:{if domain == "m.domain.com}
Du meinst doch sicherlich
{if $smarty.server.SERVER_NAME == "m.domain.com}
Genau. War zu faul die genaue Bezeichnung des Parameters rauszusuchen. Die weiss ich nicht auswendig.
Die Weiterleitung auf die mobile Domain kannst du ja via htaccess machen
Damit wäre ich vorsichtig. Es gibt auch Leute die eine Seite im normalen Layout sehen wollen. (bei mir ist das z.B. doodle.com). Diese Logik würde ich im Template einbauen zusammen mit dem Link dass die Seite auch normal geöffnet werden kann.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#5 11. Mai 2011 12:40
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Das mit der config.php habe ich mir schon fast gedacht. Was wird dann aber aus den canonical urls? Die sind doch eigentlich dazu da, dass sie immer gleich bleiben. Das wäre aber bei dieser Änderung ja nicht mehr der Fall.
Mit htaccess habe ich grad einen thread von nhaak gefunden:
http://forum.cmsmadesimple.org/viewtopi … 25&t=33539 3. Post
Könnte das auch noch hinhauen?
Offline
#6 14. Mai 2011 16:04
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Hallo noch mal,
die von nhaak genannte Version funktioniert bei mir nicht mehr. Aber ich habe jetzt ein anderes Brett vorm Kopf:
Mein Plan ist es ja, eine von der Bedienung an m.soundandrecording.de angelegte Navigation zu bauen.
In unserem Falle würde das z.B. so aussehen:
1. Bildschirm:
Festtage >
Besondere Anlässe >
Jahreszeitliches >
Weihnachten >
Liebe >
Kurz & knapp >
Sonstiges >
Shop >
Projekte >
International >
Sitemap >
Kontakt >
2. Bildschirm (man hat auf "Kurz & Knapp" geklickt)
Aphorismen >
Zungenbrecher >
Lateinische Sprichwörter >
Nach einem weiteren Klick folgen nun entweder noch weitere Kategorien oder schon direkt der Text.
Allerdings bekomme ich es auf einer Testseite, bei denen ich mehere Seiten mit entsprechenden Unterkategorien angelegt habe, nicht hin, dass immer nur eine gezielte Ebene im Menü angezeigt wird.
Auf der Startseite ist es noch recht simpel. Dort kann ich ja mit
{menu template='mobile' start_level='1' number_of_levels='1'}
noch recht simpel nur die erste Ebene anzeigen.
Aber wie gehe ich jetzt für die nächste Ebene vor? Ich dachte, ich könnte Variablen aus dem Menü-Manager verwenden, z.B. depth:
{if $node->depth == 1}
{menu template='mobile' start_level='2' number_of_levels='2'}
{elseif $node->depth == 2}
usw...
{/if}
Aber "depth" scheint immer nur "1" zu sein (Bug?). Gibt es eine Variable, die mir die Ebene in einer prüfbaren Zahl ausgibt? Habe in den template_vars und auch mit {$nodelist|print_r} nicht wirklich was brauchbares finden können.
Im Prinzip müssten ja immer die Seiten angezeigt werden, die unter der gerade aktiven Seite liegen. Klingt ganz einfach, ist es sicher auch - komme da grad nur nicht weiter und sehe den Wald vor lauter Bäumen nicht mehr...
PS: Aufgrund noch nicht geklärter Performance-Probleme läuft die Seite noch mit 1.8.2 ...
Beitrag geändert von jeff1980 (14. Mai 2011 16:08)
Offline
#7 15. Mai 2011 06:38
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Wie sieht denn dein MenuManager-Template aus?
Offline
#8 15. Mai 2011 07:18
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Ist im Moment noch das Standard-Template (Sample-Navigation). Hab's nur schon in die Datenbank importiert und umbenannt.
Offline
#9 17. Mai 2011 08:14
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Aber "depth" scheint immer nur "1" zu sein (Bug?).
Hab gerade keine 1.8.2 zu testen, aber mit
[== Smarty ==]
<pre>{$nodelist|print_r}</pre>
sollten dir die jeweiligen "Tiefen" der Menü-Eintrage angezeigt werden (hier mit der 1.9.4.1 getestet).
Kann aber (logischerweise) nicht mit dem Parameter number_of_levels='1' funktionieren, da du damit ja gerade ausgeschlossen hast, tiefere Ebenen anzeigen zu lassen
Offline
#10 17. Mai 2011 08:31
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Danke, dass Du Dich da so mit reinhängst ...
<pre>{$nodelist|print_r}</pre>
Damit hab ich schon geschaut (auch gerade mal mit der 1.9.4.1 verglichen).
Dabei ist mir aufgefallen, dass depth sehr wohl funktioniert. Aber anscheinend nur, wenn man alle Ebenen des Menüs anzeigen lässt (eben ohne "number_of_levels"). Dann nämlich zeigt er für jeden Menüpunkt den entsprechenden depth-Wert an. Wenn aber nur eine Ebene zu sehen ist (egal wie tief), ist depth "1".
Weitere Variablen scheinen uninteressant zu sein, da sie imho nicht dazu taugen, dynamisch die gesamte Tiefe anzugeben.
Es müsste doch eine Möglichkeit geben, die jeweilige Menütiefe bzw. die Ebene, auf der man sich befindet, abfragen zu können und diese als eindeutige Zahl auszugeben, sodass man sie für Abfragen benutzen kann.
Stehe echt auf dem Schlauch und habe nur noch Wirrwarr im Kopf .
Offline
#11 17. Mai 2011 10:38
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Es müsste doch eine Möglichkeit geben, die jeweilige Menütiefe bzw. die Ebene, auf der man sich befindet, abfragen zu können und diese als eindeutige Zahl auszugeben, sodass man sie für Abfragen benutzen kann.
Klar gibts die ... hab da mal einen UDT vorbereitet (Wiki sei Dank)
[== PHP ==]
global $gCms;
$manager =& $gCms->GetHierarchyManager();
$result = "";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
$result = $currentNode->getLevel();
$smarty->assign('ebene', $result);
Der UDT selbst erzeugt keinen Output. Die Smarty-Variable {$ebene} enthält dann die aktuelle Ebene.
Offline
#12 17. Mai 2011 13:58
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Coole Sache - funktioniert
Habe noch eine Kleinigkeit geändert, damit es "realistischer" ist und bei Ebene "1" anfängt (+1 im Ergebnis):
global $gCms;
$manager =& $gCms->GetHierarchyManager();
$result = "";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
$result = $currentNode->getLevel() + 1;
$smarty->assign('ebene', $result);
Das Template sieht nun, was das Menü angeht, so aus:
{ebene}
{if $page_alias == 'startseite'}
{menu template='menu_mobile' start_level='1' number_of_levels='1'}
{else}
{if $ebene == 1}
{menu template='menu_mobile' start_level='2' number_of_levels='2'}
{elseif $ebene == 2}
{menu template='menu_mobile' start_level='3' number_of_levels='3'}
{elseif $ebene == 3}
{menu template='menu_mobile' start_level='4' number_of_levels='4'}
{elseif $ebene == 4}
{menu template='menu_mobile' start_level='5' number_of_levels='5'}
{/if}
{/if}
Das Ding kommt sofort in mein neues Programm "Snippets" (leider MAC-only).
Das gibt es im Moment in einem Designer-Bundle: www.bundlehunt.com
Imho sehr cool und vielleicht für den einen oder anderen interessant?
Beitrag geändert von jeff1980 (17. Mai 2011 14:07)
Offline
#13 18. Mai 2011 07:30
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
So, dank der Hilfe hat es nun (fast) alles geklappt.
Das Template steht und muss nun noch auf verschiedenen Endgeräten getestet werden (habe nur das iPhone zur Hand).
Das Ergebnis kann hier bewundert werden: http://m.festtagsgedichte.de
Das Ganze sieht nun wie folgt aus:
{process_pagedata}
{if $smarty.server.SERVER_NAME == "m.festtagsgedichte.de"} <!-- Abfrage, über welche Domain die Seite besucht wird -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>{sitename} - {title}</title>
{metadata}
<meta name="viewport" content="width=320, scale=1" /> <!-- Begrenzung auf Display-Breite -->
{stylesheet name="mobile"}
</head>
<body>
<div id="wrapper">
<!-- start header -->
<div id="header">
<a href="http://m.festtagsgedichte.de" title="Festtagsgedichte - Gedichte zu jedem Anlass"><img src="http://m.festtagsgedichte.de/uploads/images/mobile/logo.png" title="Festtagsgedichte - Gedichte zu jedem Anlass" alt="Festtagsgedichte - Gedichte zu jedem Anlass" height="106" width="317" /></a>
</div>
<!-- end header -->
<!-- start menu -->
<div class="menu">
{ebene} <!-- UDT von Cyberman -->
{if $page_alias == 'home'}
{menu template='menu_mobile' start_level='1' number_of_levels='1'}
{else}
{if $ebene == 1}
{menu template='menu_mobile' start_level='2' number_of_levels='2'}
{elseif $ebene == 2}
{menu template='menu_mobile' start_level='3' number_of_levels='3'}
{elseif $ebene == 3}
{menu template='menu_mobile' start_level='4' number_of_levels='4'}
{elseif $ebene == 4}
{menu template='menu_mobile' start_level='5' number_of_levels='5'}
{elseif $ebene == 5}
{menu template='menu_mobile' start_level='6' number_of_levels='6'}
{elseif $ebene == 6}
{menu template='menu_mobile' start_level='7' number_of_levels='7'}
{/if}
{/if}
</div>
<!-- end menu -->
{if $node == ""} <!-- Inhalt soll nur angezeigt werden, wenn die aktuelle Seite die Letzte in der Hierarchie ist -->
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}
</div>
<!-- end content -->
{/if}
{if $page_alias != 'home'} <!-- auf der Startseite noch kein Zurück-Button -->
<div class="menu">
<ul class="sub">
<li><a class="arrow_bw" href="javascript:history.back();" title="Zurück">Zurück</a></li>
<li>{cms_selflink dir='start' label='' text='Zur Startseite' class='arrow_bw'}</li>
</ul>
</div>
{/if}
<div id="footer">
{global_content name='footer_mobile'}
</div>
</div>
</body>
</html>
{else}
Haupttemplate
{/if}
Das Stylesheet ist normales CSS. Ich habe die einzelnen Container (header, content etc.) noch einmal auf 320px Breite begrenzt und die Navigation schön groß gemacht (font-size: 170%).
Jetzt werde ich noch eine Suche einbinden und mir Gedanken machen, was noch zu tun sein könnte.
Ich bin auch für Vorschläge offen - insbesondere, wenn jemand die Seite auf anderen Geräten testen kann.
Ich werde mir nachher auch noch mal Device-Central vornehmen, traue dem ganzen aber nicht so recht.
Ein kleines "Problem" bleibt für mich aber:
Da ich an der config.php die root_url "variabel" gesetzt habe
$config['root_url'] = 'http://'.$_SERVER['SERVER_NAME'];
funktionieren nun die Canonical URLs nicht mehr. Dies würde im Extremfall bedeuten, dass Google doppelten Inhalt erkennt.
Gibt es da evtl. noch einen Weg, das zu verhindern bzw. wieder richtige Canonical URLs einzutragen?
Im Moment habe ich den Standardaufruf im Haupttemplate:
{if isset($canonical)}
<link rel="canonical" href="{$canonical}" />
{elseif isset($content_obj)}
<link rel="canonical" href="{$content_obj->GetURL()}" />
{/if}
Edith hat jetzt auch mal das Wort:
Leider klappt doch nicht alles. Hab nicht dran gedacht, dass ja jetzt zwei mal {content} im Template vorkommt. Natürlich kommt das System damit nicht klar und man keine Inhalte mehr einfplegen oder ändern - was kann ich denn dagegen tun?
Beitrag geändert von jeff1980 (18. Mai 2011 07:42)
Offline
#14 18. Mai 2011 07:48
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
funktionieren nun die Canonical URLs nicht mehr. Dies würde im Extremfall bedeuten, dass Google doppelten Inhalt erkennt.
Gibt es da evtl. noch einen Weg, das zu verhindern bzw. wieder richtige Canonical URLs einzutragen?
Im Moment habe ich den Standardaufruf im Haupttemplate:{if isset($canonical)} <link rel="canonical" href="{$canonical}" /> {elseif isset($content_obj)} <link rel="canonical" href="{$content_obj->GetURL()}" /> {/if}
Du kannst auch ein Replace auf der URL machen {$canonical|replace:"m.fest":"www.fest"}
Edith hat jetzt auch mal das Wort:
Leider klappt doch nicht alles. Hab nicht dran gedacht, dass ja jetzt zwei mal {content} im Template vorkommt. Natürlich kommt das System damit nicht klar und man keine Inhalte mehr einfplegen oder ändern - was kann ich denn dagegen tun?
{content assign="inhalt"}
{*inhalt anzeigen*}
{$inhalt}
Den Inhalt mit Assign einer Smarty Variable zuweisen. Diese kannst du dann an der bisherigen Stelle des Contentaufrufs einfügen.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#15 18. Mai 2011 08:04
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Beide Probleme gelöst - vielen Dank
Das mit "assign" beim content in dieser Form wusste ich auch noch nicht. Cool, so kann man dann ja auch Inhaltsblöcke "sortieren".
Offline
#16 18. Mai 2011 09:37
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Habe noch eine Kleinigkeit geändert, damit es "realistischer" ist und bei Ebene "1" anfängt (+1 im Ergebnis):
global $gCms; $manager =& $gCms->GetHierarchyManager(); $result = ""; $thisPage = $gCms->variables['content_id']; $currentNode = &$manager->sureGetNodeById($thisPage); $result = $currentNode->getLevel() + 1; $smarty->assign('ebene', $result);
Ähmm ... wie meinst du das?
Die erste Ebene ist immer 1 (zumindest bei mir) - ausgehend von deiner Änderung könntest du das Template jedoch wie folgt vereinfachen
[== Smarty ==]
{ebene}
{if $page_alias == 'startseite'}
{menu template='menu_mobile' start_level='1' number_of_levels='1'}
{else}
{menu template='menu_mobile' start_level=$ebene number_of_levels='1'}
{/if}
Du hattest übrigens einen Fehler drin ... number_of_levels muss nach deiner Vorgabe 1 sein
Im Prinzip müssten ja immer die Seiten angezeigt werden, die unter der gerade aktiven Seite liegen.
siehe Modulhilfe
number_of_levels="1" - Mit dieser Einstellung kann festgelegt werden, bis zu welcher Tiefe das Menü angezeigt wird.
Oder wolltest du in der letzten Ebene 7 untergeordnete Ebenen anzeigen?
Offline
#17 18. Mai 2011 10:26
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [Alles gelöst] Mobile Seite über Subdomain
Haut teilweise hin.
Der UDT ohne das "+ 1" gibt bei der Grundebene (m.festtagsgedichte.de) den Wert "0" aus. Für den MenüManager ist es aber schon Level 1 (z.B. beim start_level). Ich fand es so übersichtlicher, da nun $ebene und die wirkliche Ebene übereinstimmen.
[== Smarty ==]
{ebene}
{if $page_alias == 'startseite'}
{menu template='menu_mobile' start_level='1' number_of_levels='1'}
{else}
{menu template='menu_mobile' start_level=$ebene number_of_levels='1'}
{/if}
Das funktionierte leider nicht direkt. Hier musste ich den Wert von $ebene sogar um 2 erhöhen - sonst bewege ich mich immer auf der selben Ebene und komme nicht tiefer. Mit "+ 2" im UDT funktioniert es nun auch so und ist wirklich übersichtlicher.
number_of_levels immer auf "1" funktioniert nun auch - bei meinem Testsystem hatte ich das Gefühl, dass number_of_levels immer bei der ersten Ebene anfängt zu zählen, egal was bei start_level stand. Hing aber wahrscheinlich mit anderen Dingen zusammen - habe ja einiges ausprobiert und es letztendlich so übernommen, weil es immer geklappt hat.
Ich vermute, diese Ganze Verwirrung entsteht bei mir, weil der MenüManager einerseits bei $depth mit "0" anfängt zu zählen, bei start_level aber mit "1" (was ich persönlich sinniger finde). Zudem wurden diese Werte imho nicht vernünftig ausgegeben - zumindest nicht so, dass ich etwas damit anfangen konnte.
Aber der UDT ist echt super. Damit lässt sich zuverlässig arbeiten.
Offline
#18 18. Mai 2011 10:38
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [Alles gelöst] Mobile Seite über Subdomain
Hier musste ich den Wert von $ebene sogar um 2 erhöhen - sonst bewege ich mich immer auf der selben Ebene und komme nicht tiefer. Mit "+ 2" im UDT funktioniert es nun auch so und ist wirklich übersichtlicher.
Logisch ... wenn es bei dir mit 0 anfängt .
diese Ganze Verwirrung entsteht bei mir, weil der MenüManager einerseits bei $depth mit "0" anfängt zu zählen, bei start_level aber mit "1" (was ich persönlich sinniger finde). Zudem wurden diese Werte imho nicht vernünftig ausgegeben - zumindest nicht so, dass ich etwas damit anfangen konnte.
Entweder ist mit $depth da eher die Verschachtelung gemeint - wenn es nur eine Ebene gibt, gibts auch keine Verschachtelung, ergo Startebene == 1 / Tiefe == 0. Oder PHP hat wieder zugeschlagen (müsste man im Code nachsehen) - da wird auch mit 0 angefangen zu zählen.
Offline
Seiten: 1