Template HORTAL: verschiedene Probleme

grindmobil

Klar, dass das für dich nur eine kleine Änderung ist.

Aber das Versprechen von WebsiteBaker ist ja nicht, dass man gleich mal in den PHP-Innereien herumfuhrwerken muss. Für einen Anfänger kann das ganz schon Angst einflößend sein.

hgs

Quote from: grindmobil on August 15, 2019, 04:51:01 PM
Es steht bei fast allen Templates:
Not recommended for WebsiteBaker > 2.10
Das hat einen Grund: Weil es Probleme gibt.
Lieber Chio
Ich verstehe dein Understatment hier nicht.
Ich nutze nur deine Tempalte mit WB 2.12.2 und php7.3 und ändere die 2 Dinge die zu Einträgen in der ErrorLog geführt haben.
Diese sind hier in einem sehr kompetenten Forum nachzulesen.

Also mach weiter so tolle Temlates und alle sind zufrieden. ;-)




LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

Gast

QuoteDas hat einen Grund: Weil es Probleme gibt.

Jau
und mit zwei Sätzen ist das Problem gelöst  :wink:

grindmobil

Es steht bei fast allen Templates:
Not recommended for WebsiteBaker > 2.10
Das hat einen Grund: Weil es Probleme gibt.

Es gibt auch andere Quellen für Templates, da steht das nicht. Das bedeutet aber nicht, dass es die Probleme nicht gibt, sondern nur, dass die Quelle alt ist.

Anmerken möchte ich auch noch:
Neben Hortal und Vertal gibt es auch noch die Templates Hortal WBCE und Vertal WBCE, die mit WB wohl gar nicht funktionieren.

Die Zeile:
if ( isset($template_id) AND $page_id==4)  { $isstartpage = true; }
kann man komplett löschen. Sie dient nur dazu, in der Templatesuche die Seite "Dieses Template" ($page_id 4)  als Startseite darzustellen.
Es passiert aber auch nichts, wenn man die Zeile belässt, weil: Die Variable $template_id wird NUR in der Templatesuche verwendet.

astricia

Zu Frage 1:

margin so lassen, wie es war, aber die Zeile mit box-shadow auf:
box-shadow: none;
setzen.

LG,
Astrid

Gast

Zur Aufklärung....
DV hat ja im verlinkten Beitrag schon geschrieben, um was es geht. Früher war es so, das die Startseite und einige andere Seiten wie z.B. Suchergebnisse oder Wartungsmeldung keine Definition von $page_id hatten. Das wiederum hat zu Problemen geführt, z.b. wenn man einen Redirect auf der Startseite hat, z.b. ein Kontaktformular. Diese funktionieren nämlich nur über eine Page-ID.
Die Abfragen in den älteren Templates zielten auch genau auf diese fehlende Page_ID ab und waren zu damaliger Zeit ein einfacher Weg zur Ermittlung der Startseite.

der Originalcode:
$isstartpage false;
if ( !isset(
$page_id) ) { $isstartpage true; }
if ( isset(
$template_id) AND $page_id==1)  { $isstartpage true; } 


eine "Übersetzung"
Zeile 1: $isstartpage ist unwahr, wurde nicht definiert

Zeile 2: ist keine Definition von $page_id vorhanden, müßte es die Startseite sein. (Wie DV im verlinkten Beitrag erklärt hat, ist das schon seit ein paar Jahren geändert, genau seit WB 2.11.0 und $page_id steht immer zur Verfügung. Deshalb läuft diese Abfrage ins Leere und $isstartpage ist immer noch false, also unwahr bzw nicht definiert.

Zeile 3: wurde $template_id definiert UND ist $page_id == 1, müßte es die Startseite sein. (vorausgesetzt, die Startseite hätte die ID == 1)
$template_id ist eine Variable, die der Templateautor auf seinen Domains benutzt. Hat man sie als Benutzer nicht selbst in Gebrauch, kann diese Abfrage also immer nur unwahr sein, demzufolge wäre auch $isstartpage als Ergebnis unwahr bzw nicht definiert

Die Lösung von DarkViper:

if ($page_id === $wb->default_page_id) {
// Startseite
} else {
//beliebige andere Seite
}


$wb->default_page_id gibt als Ergebnis die im Backend eingestellte Startseite zurück, d.h. die oberste Seite im Seitenbaum. Ist diese Seite ein MenüLink, dann das Ziel davon

Die Abfrage "übersetzt"
" Ist die aktuelle Page-ID gleich der ermittelten Startseite aus $wb, ist es die Startseite, wenn nicht (else), ist es nicht die Startseite"

QuoteDie Seite bleibt dann weiß.
Eine weiße Seite deutet auf einen PHP-Fehler hin und nicht etwa auf das Resultat solcher Abfragen. Diese Abfragen zielen nur darauf ab, zu ermitteln, ob Startseite JA oder NEIN. Abhängig vom Ergebnis, kann man dann andere Dinge schalten, z.b. großes Headerbild vs kleines Headerbild, Headerslider vs  starres Headerbild, Breadcrumb oder nicht usw. Im schlimmsten Fall kann also nicht ermittelt werden, ob du dich auf der Startseite befindest oder nicht und dann geht das Script davon aus, das es eben nicht die Startseite ist.

Ich bin mir da recht sicher, das der Fehler im Code liegt, ggf wurde zu wenig oder zuviel geändert. Am schnellsten hättest du eine Lösung, wenn du den entsprechenden Abschnitt kopierst, z.b. von Zeile 1 der index.php bis zum body-Tag oder du zippst diese index.php und hängst sie hier mit an.
Eine andere Möglichkeit wäre: in den Erweiterten WB-Optionen unter SERVER die PHP-Fehlerausgabe auf mindestens "Production" stellen. Dann erhälst du, je nach Fehler, eine Meldung direkt auf der Seite oder in der error.log, die du im Backend unter dem X-Button einsehen kannst.

hgs

Also, ich habe das in der index.php so wie im Forum geschrieben verändert und es funktioniert.
Startseite großes HeaderBild
alle anderen Seite kleines HeaderBild
Original:
//if ( !isset($page_id) OR ( isset($template_id) AND $page_id==4) ) { $isfrontpage = true; } // WebsiteBaker.at presentation
geändert in:
if ( !isset($page_id) OR ($page_id==1) ) { $isfrontpage = true; }

LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

dbs

[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

Legaziofunk

________
WB 2.10.x (installed)/WB 2.12.x (installed)
PHP 7.2
MySQL 5.6.36-82.0-log

hgs

LG Harald

"Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

Legaziofunk

Hallo Leute,

ich habe mal Testweise ne Seite mit dem Template Hortal erstellt. Bei der Suche nach "Hortal" kommt hier nahezu nichts (3 Treffer), daher also ein neuer Thread.

1. Grauer Streifen
Das Template hat im Normalzustand oben einen grauen Streifen. Ein Abstand also, der den eigentlichen Inhalt (Header) vom Rand des Screens trennt.

Dafür veranwortlich ist m.E. dieser Abschnitt hier, speziell natürlich die Margin-Angabe mit 30px.

Setzt man diese auf "0" oder "auto" verschwindet der Rand.

.bodybox { /* Holds the page items in place */
max-width: 1280px;
min-height:90%;
margin: 30px auto 0 auto;
padding: 0;
background: #fff;
box-shadow: 0px 20px 40px -10px rgba(0, 0, 0, 0.4);
}


Das Problem ist dann, dass damit auch die am oberen Bildrand zu fixierende Navigatonszeile in den unsichtbaren Bereich abrutscht, sobald man scrollt.

Der Code dafür ist m.E. dieser hier, wo TOP auf "0" gesetzt ist:


#nav {
position:absolute;
top:0; left:25%;
width:75%;
height: 40px;
border: 0;
padding:0;
}


Wenn ich das Ganze "schlauerweise" umdrehen will, indem ich oben beim .bodybox die 30px auf auto oder auf "0" stelle und unten dann bei der #nav aus den TOP 0 eine TOP 30px mache, verschwindet zwar der graue bereich, aber die Navigation wird dann eben 30 px weiter unten angezeigt - auch wenn noch gar nicht gescrollt wurde - und liegt damit zum einen außerhalb des dahinterlegenden Balkens und zum anderen überdeckt sie damit den Breadcrum.

Erste Frage: Was ist hier zu tun, um den grauen Balken zu entfernen, ohne dass sich das Navi ebenfalls verschiebt?


2. Breadcrum NICHT auf erster Seite

In der index.php wird angegeben:
<div class="breadcrumbs">
<div id="aprevnext" class="aprevnext"><span style="display:none;">Prev-Next</span></div>
<div class="innerbc">
<?php
//Breadcrumbs: Diese zeigen wir NICHT auf der Startseite:
if ($isstartpage == false) {
show_menu2(1SM2_ROOTSM2_ALLSM2_CRUMB'<span class="[class]">[a][menu_title]</a></span>''''''''<span><a href="'.WB_URL.'">'.$homename.'</a></span> <span class="[class]">[a][menu_title]</a></span>');
}
?>

</div>
<div id="beginContent" style="clear:both;"></div>
</div>


Dazu muss man dem Ganzen natürlich "sagen", was denn die erste Seite ist. In meinem Falle ist es tatsächlich die mit der ID 1.

Der Code hierzu lautet (weiter oben):

//So kannst du feststellen, ob die Seite die Startseite ist und dann die Ausgabe anders machen:
$isstartpage = false;
if ( !isset($page_id) ) { $isstartpage = true; }
if ( isset($template_id) AND $page_id==1)  { $isstartpage = true; } // wbce.at presentation, you can remove this line
?>
<!DOCTYPE html>
<html lang="<?php echo strtolower(LANGUAGE); ?>">
<head>
<?php if(function_exists('simplepagehead')) {
simplepagehead('/'100);
} else { 
?>

<title><?php page_title(); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=<?php if(defined('DEFAULT_CHARSET')) { echo DEFAULT_CHARSET; } else { echo 'utf-8'; }?>" />
<meta name="description" content="<?php page_description(); ?>" />
<meta name="keywords" content="<?php page_keywords(); ?>" />
<?php }


Also den Satz "//So kannst du feststellen, ob die Seite die Startseite ist und dann die Ausgabe anders machen:" kapiere ich schon mal icht, denn wie soll ich das mit dieser Zeile feststellen...?

Aber ich nehme an, dass eben die "ND $page_id==" sogleich das entsprechende Element ist. Also habe ich hier "1" eingetragen (s.o.).

Aber, der Pfad wird dennoch angezeigt.

Zweite Frage: Was kann ich tun, um das Versprechen, das mit Hortal bzgl. der versteckten Breadcrum NUR auf der STARTSEITE macht, dennoch einzulösen?

Mille Grazie an alle! :-)
________
WB 2.10.x (installed)/WB 2.12.x (installed)
PHP 7.2
MySQL 5.6.36-82.0-log