Navigation fehlerhaft, wenn Blog nicht auf Startseite ist
- Torsten_Kelsch
- Legend Bludit
- Posts: 263
- Joined: Thu Aug 27, 2015 10:24 pm
- Location: Germany
- Has thanked: 4 times
- Been thanked: 2 times
- Contact:
Ich habe folgendes Problem, das ich besser in meiner Muttersprache Deutsch als in Englisch beschreiben kann: Für einen Kunden habe ich den News-Bereich (= Blog-Bereich) nicht auf die Startseite (die hier Home heißt), sondern eine andere Seite gepackt. Ich habe dafür ein Template news.php erstellt, und alles funktioniert auch so weit. Die Einstellungen im Backend sehen folgendermaßen aus:
Doch wo es hakt: Befindet sich der Frontend-Besucher auf dieser News-Seite, so wird sie nicht als aktiv markiert, während das bei den anderen Seiten jedoch klappt. Mir ist das irgendwie unverständlich, und wenn jemand eine Lösung hätte, wäre ich sehr dankbar.
Doch wo es hakt: Befindet sich der Frontend-Besucher auf dieser News-Seite, so wird sie nicht als aktiv markiert, während das bei den anderen Seiten jedoch klappt. Mir ist das irgendwie unverständlich, und wenn jemand eine Lösung hätte, wäre ich sehr dankbar.
On Error GoTo Bed
- Torsten_Kelsch
- Legend Bludit
- Posts: 263
- Joined: Thu Aug 27, 2015 10:24 pm
- Location: Germany
- Has thanked: 4 times
- Been thanked: 2 times
- Contact:
Ein selbst erstelltes (da ich für Kunden immer individuell gestalte).Edi wrote:Welches Theme verwendest Du?
On Error GoTo Bed
- Torsten_Kelsch
- Legend Bludit
- Posts: 263
- Joined: Thu Aug 27, 2015 10:24 pm
- Location: Germany
- Has thanked: 4 times
- Been thanked: 2 times
- Contact:
Nicht auf der Startseite, sondern einer der weiteren Seiten. Genauer gesagt: Ich habe ein Template für diese News-Seite gebaut, das news.php heißt – das ist wahrscheinlich der Knackpunkt, denn so ein Name ist ja nirgends definiert und wird darüber hinaus in der Schleife zum Aufbau des Menüs nicht angegeben:Edi wrote:Unter welcher Adresse wird die Blog-Seite aufgerufen?
Code: Select all
<?php
foreach($parents as $page) {
echo '<li'.( ($page->key()==$Url->slug())?' class="active"':'').'><a href="'.$page->permalink().'">'.$page->title().'</a></li>';
}
?>
Hier noch mein Quellcode der News-Seite:
Code: Select all
<h1>News</h1>
<!-- Show each post on this page -->
<?php foreach ($posts as $Post): ?>
<article class="post">
<!-- Show plugins, Hook: Post Begin -->
<?php Theme::plugins('postBegin') ?>
<!-- Post's header -->
<header>
<h2><a href="<?php echo $Post->permalink() ?>"><?php echo $Post->title() ?></a></h2>
<p><?php echo $Post->description() ?></p>
<?php
// Get the user who created the post.
$User = $Post->user();
// Default author is the username.
$author = $User->username();
// If the user complete the first name or last name this will be the author.
if( Text::isNotEmpty($User->firstName()) || Text::isNotEmpty($User->lastName()) ) {
$author = $User->firstName().' '.$User->lastName();
// Local month
$nmeng = array('January','February','March','April','May','June','July','August','September','October','November','December');
$nmger = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$dt = $Post->date();
$dt = str_ireplace($nmeng, $nmger, $dt);
}
?>
<p>
<?php date_default_timezone_set('Europe/Berlin'); ?>
<time><?php echo $dt; ?></time>
</p>
</header>
<main>
<!-- Cover Image -->
<?php
if($Post->coverImage()) {
echo '<a href="'.$Post->permalink().'" class="image featured"><img src="'.$Post->coverImage().'" alt="Cover Image"></a>';
}
?>
<!-- Post's content, the first part if has pagebrake -->
<?php echo $Post->content(false) ?>
</main>
<!-- Post's footer -->
<footer>
<!-- Read more button -->
<?php if($Post->readMore()) { ?>
<ul class="actions">
<li><a href="<?php echo $Post->permalink() ?>" class="button"><?php $Language->p('Read more') ?></a></li>
</ul>
<?php } ?>
</footer>
<!-- Plugins Post End -->
<?php Theme::plugins('postEnd') ?>
</article>
<?php endforeach; ?>
<!-- Pagination -->
<ul class="actions pagination">
<?php
if( Paginator::get('showNewer') ) {
echo '<li><a href="'.Paginator::urlPrevPage().'" class="button big previous">'.$Language->get('Prev page').'</a></li>';
}
if( Paginator::get('showOlder') ) {
echo '<li><a href="'.Paginator::urlNextPage().'" class="button big next">'.$Language->get('Next page').'</a></li>';
}
?>
</ul>
On Error GoTo Bed
- Edi
- Site Admin
- Posts: 3121
- Joined: Sun Aug 09, 2015 5:01 pm
- Location: Zurich
- Has thanked: 54 times
- Been thanked: 77 times
- Contact:
So auf die Schnelle... Ich würde versuchen, die Bedingungen in der Datei index.php anzupassen. Die sind standardmässig so definiert:
Ich denke, Du könntest die Bedingungen oder die Bedingung für "page" mit einer Zusatzbedigung beispielsweise mit dem Seitentitel der Blog-Seite ("$Page→key()") für das Template news.php erweitern.
Code: Select all
<?php
if($Url->whereAmI()=='post') {
include(THEME_DIR_PHP.'post.php');
}
elseif($Url->whereAmI()=='page') {
include(THEME_DIR_PHP.'page.php');
}
else {
include(THEME_DIR_PHP.'home.php');
}
?>
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
- Torsten_Kelsch
- Legend Bludit
- Posts: 263
- Joined: Thu Aug 27, 2015 10:24 pm
- Location: Germany
- Has thanked: 4 times
- Been thanked: 2 times
- Contact:
Danke, Edi, aber ich denke, da wirfst du was durcheinander. Die Seite News wird ja korrekt aufgerufen, denn mein Code in der index.php lautet folgendermaßen:
Auch in der Navigation erscheint sie als Menüeintrag, allerdings wird dieser nicht markiert, wenn man gerade auf der Seite ist. Ich habe jetzt herausgefunden, dass per Echo-Befehl etwas ausgibt, aber nicht. Das bedeutet also, dass die Bedingung im Falle der News-Seite nie erfüllt wird. Warum die Ausgabe des Slugs leer bleibt, kann ich mir nur dadurch erklären, dass möglicherweise in dem Seitentemplate etwas nicht stimmt. Ich versuche, den Fehler zu finden, hatte bisher aber noch keinen Erfolg.
Es wäre wirklich einfacher, wenn Diego den Blogbereich nicht so an die Startseite binden würde. Vielleicht wird ja mit Bludit 2.0 alles besser, wenn zwischen Posts und Seiten gar nicht mehr so unterschieden wird.
Code: Select all
<div class="content">
<?php
if( ($_SERVER['REQUEST_URI']=='/home') || ($_SERVER['REQUEST_URI']=='/') ) {
include(THEME_DIR_PHP.'home.php');
}
elseif( ($Url->whereAmI()=='tag') || ($Url->whereAmI()=='blog') ) {
include(THEME_DIR_PHP.'news.php');
}
elseif($Url->whereAmI()=='post') {
include(THEME_DIR_PHP.'post.php');
}
elseif($Url->whereAmI()=='page') {
include(THEME_DIR_PHP.'page.php');
}
?>
</div>
Code: Select all
$page->key()
Code: Select all
$Url->slug()
Code: Select all
$page->key()==$Url->slug()
Es wäre wirklich einfacher, wenn Diego den Blogbereich nicht so an die Startseite binden würde. Vielleicht wird ja mit Bludit 2.0 alles besser, wenn zwischen Posts und Seiten gar nicht mehr so unterschieden wird.
On Error GoTo Bed
- Edi
- Site Admin
- Posts: 3121
- Joined: Sun Aug 09, 2015 5:01 pm
- Location: Zurich
- Has thanked: 54 times
- Been thanked: 77 times
- Contact:
Da scheint einiges durcheinandergeraten zu sein...
1) Wie wird die Seite aufgerufen? Mit welcher URL? Ich habe Dich das bereits gefragt, aber Du hast es mir nicht verraten.
2) Woher holst Du das "blog" in der Bedingung für das Template news.php? Als mögliche Werte sind vorgegeben "home", "post", "page" und "tag".
3) Wie erscheint der Menüeintrag in der Navigation? Hast Du die Navigation angepasst?
4) "$Url->slug()" gibt den "Slug" aus, wenn einer vorhanden ist. Das heisst, dass bei der Hauptseite kein "Slug" ausgegeben wird.
5) "$page->key()" gibt nicht den gesuchten Wert aus. Die Anweisung wäre "$Page->key". Da news.php bei Dir aber nicht als Seite definiert ist, wird kein Wert ausgegeben.
1) Wie wird die Seite aufgerufen? Mit welcher URL? Ich habe Dich das bereits gefragt, aber Du hast es mir nicht verraten.
2) Woher holst Du das "blog" in der Bedingung für das Template news.php? Als mögliche Werte sind vorgegeben "home", "post", "page" und "tag".
3) Wie erscheint der Menüeintrag in der Navigation? Hast Du die Navigation angepasst?
4) "$Url->slug()" gibt den "Slug" aus, wenn einer vorhanden ist. Das heisst, dass bei der Hauptseite kein "Slug" ausgegeben wird.
5) "$page->key()" gibt nicht den gesuchten Wert aus. Die Anweisung wäre "$Page->key". Da news.php bei Dir aber nicht als Seite definiert ist, wird kein Wert ausgegeben.
Bludit 2.0 kann entweder als Blog oder für statische Seiten definiert werden. Für einen Blog wird es zwei oder drei vorderfinierte statische Seiten geben. Für die Verwendung von mehreren statischen Seiten und einem Blog wird es vielleicht Plugins geben. Als Richtlinie gilt nach wie vor: So einfach wie möglich.Es wäre wirklich einfacher, wenn Diego den Blogbereich nicht so an die Startseite binden würde. Vielleicht wird ja mit Bludit 2.0 alles besser, wenn zwischen Posts und Seiten gar nicht mehr so unterschieden wird.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
- Torsten_Kelsch
- Legend Bludit
- Posts: 263
- Joined: Thu Aug 27, 2015 10:24 pm
- Location: Germany
- Has thanked: 4 times
- Been thanked: 2 times
- Contact:
(Na, klasse, als ich die Vorschau einschalten wollte, schmeißt mich das Forumssystem raus, ich muss mich neu einloggen, mein Geschriebenes ist futsch und ich kann alles neu pinnen. Da kommt echt Begeisterung auf.)
@Edi: Danke für deine vielen Bemühungen, und hier sind meine Antworten:
Wie auch immer; ich werde die Navigation jetzt hart kodieren, ich muss endlich mit dem Auftrag fertig werden. In naher Zukunft wird der Kunde wohl keine neuen Seiten anlegen oder bestehende löschen.
Danke, Edi, für deine zeitaufwändige Hilfe. Ich weiß das sehr zu schätzen und werde weiterhin versuchen, im Gegenzug hier im Forum anderen Benutzern zu helfen, so gut ich kann.
@Edi: Danke für deine vielen Bemühungen, und hier sind meine Antworten:
- http://www.matzner.de/news
- Aus Einstellungen > Erweitert > URL-Erweiterungen in der ursprünglichen Form. Wenn ich „blog“ als Bedingung für das Template „news.php“ in etwas anderes ändere, wird das Template nicht gefunden. Vielleicht ist „blog“ eine Konstante tief im System oder so.
- Es wird korrekt „News“ ausgegeben, allerdings ohne aktiv markiert zu werden, wenn man auf der Seite ist.
- Das mit der Hauptseite habe ich schon durch eigenen Code hingekriegt. Dennoch müsste es ja einen Slug für die Hauptseite geben, so etwas wie eine leere Zeichenkette oder einen Slash – ist aber jetzt egal.
- Ich habe $page in $Page geändert (in der Navigations-Foreach-Schleife), was zur Folge hat, dass auf jeder Seite der Inhalt der letzten Seite ausgegeben wird. Die Variable wird ja aber auch erst in der Schleife (neu) definiert, wenn ich das richtig sehe – und ich kann statt $Page auch $seite, $Seite oder sonst was schreiben.
Wie auch immer; ich werde die Navigation jetzt hart kodieren, ich muss endlich mit dem Auftrag fertig werden. In naher Zukunft wird der Kunde wohl keine neuen Seiten anlegen oder bestehende löschen.
Danke, Edi, für deine zeitaufwändige Hilfe. Ich weiß das sehr zu schätzen und werde weiterhin versuchen, im Gegenzug hier im Forum anderen Benutzern zu helfen, so gut ich kann.
On Error GoTo Bed
- Edi
- Site Admin
- Posts: 3121
- Joined: Sun Aug 09, 2015 5:01 pm
- Location: Zurich
- Has thanked: 54 times
- Been thanked: 77 times
- Contact:
Wieder etwas gelernt... Ich wusste zwar, dass Diego das machen will, habe mich aber nicht darum gekümmert.
Also: Wenn Du eine Seite mit dem Slug einrichtest, der unter "URL-Erweiterungen" > "Blog" definiert ist, werden die Blogbeiträge auf der Seite mit dem Titel des Slugs angezeigt. Dazu ist kein zusätzliches Template nötig.
Diese Seite hat dann aber keinen Slug und wird deshalb im Menü nicht hervorgehoben, wenn sie aufgerufen wird.
Den Rest schaue ich mir morgen an.
Also: Wenn Du eine Seite mit dem Slug einrichtest, der unter "URL-Erweiterungen" > "Blog" definiert ist, werden die Blogbeiträge auf der Seite mit dem Titel des Slugs angezeigt. Dazu ist kein zusätzliches Template nötig.
Diese Seite hat dann aber keinen Slug und wird deshalb im Menü nicht hervorgehoben, wenn sie aufgerufen wird.
Den Rest schaue ich mir morgen an.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets