Kmom05 - Riktigt svår nöt: nav-lösning

  • Författare
  • Meddelande

Wim4rk

webbsurfare

  • Inlägg: 7
  • Blev medlem: 26 aug 2019, 12:38

Kmom05 - Riktigt svår nöt: nav-lösning

Inlägg11 okt 2019, 20:17

Sitter och försöker validera min inlämning i kmom05. Det har liksom gått fint att koda, och allt validerar när jag kör dbwebb, men resultatet på studentservern är inte det förväntade.
Se min version av "Jetty" till exempel: http://www.student.bth.se/~olai19/dbwebb-kurser/htmlphp/me/kmom05/jetty/jetty.php

Jag har byggt en egen variant av multi-sidan som helt enkelt läser vilka filer som finns i multi-sidans katalog, och sedan serverar dem som en meny. Titeln hämtas från en kommentar jag lägger på rad två i alla filer. Om den är 'Hidden' så visas den inte i menyn.
Kod: Markera allt
<?php

$post_title = " | Jetty";

// Include the configuration file
include(__DIR__ . "/src/config.php");

// Include essential functions
include(__DIR__ . "/src/functions.php");

// Get what subpage to show, defaults to index
$pageReference = $_GET["page"] ?? "index";

// Get the filename of this multipage, exkluding the file suffix of .php
$base = basename(__FILE__, ".php");

//Auto create collection of valid sub pages
$dir = __DIR__ . "/$base/";
//$files = preg_grep('/^([^.])/', scandir($dir));

//print_r($files);

$pages = array();
//$title = '';

foreach (glob($dir . '*.php') as $file) {

    //Open file as array to get second line
    $lines = file($file);

    //Remove comment slashes and whitespace from second line
    $title = trim(substr($lines[1], 2));

    //Filename is too long, remove file ending to create index
    $fileIndex = substr(basename($file), 0, -4);
    //$fileIndex = substr($file, 0, -4);

    //Prepare page to be added
    $newLine = array (
        "title" => $title,
        "file" => $file,
    );
    $pages["$fileIndex"] = $newLine;
}

// Get the current page from the $pages collection, if it matches
$page = $pages[$pageReference] ?? null;

// Base title for all pages, and add title from selected multipage
$title = $page['title'] ?? "404";
$title .= $post_title;

// Render the page
require __DIR__ . "/view/header.php";
require __DIR__ . "/view/multipage.php";
require __DIR__ . "/view/footer.php";

Jag inser att detta är omständigt, men det fungerar fint i min egen miljö, och jag sparar tid på det. Det har också fungerat i en tidigare variant på studentservern: http://www.student.bth.se/~olai19/dbwebb-kurser/htmlphp/me/kmom04/me4/session.php
Den gången använde jag scandir(), numer använder jag glob(). Scandir finns kvar som en kommentar, ser jag nu.
Jag poängterar: detta fungerar på min miljö, men inte på elevservern. Är det något som görs med filerna när de laddas upp via dbwebb som gör att min konstruktion inte fungerar?

Wim4rk

webbsurfare

  • Inlägg: 7
  • Blev medlem: 26 aug 2019, 12:38

Re: Kmom05 - Riktigt svår nöt: nav-lösning

Inlägg11 okt 2019, 20:25

Jag kanske skall visa koden för en aside?
Kod: Markera allt
<aside>
    <nav class="navaside">
        <ul>
            <?php foreach ($pages as $key => $value) {
                if ($value == $page) {
                    //echo "<em>LostNFound!</em>";
                    echo '<li class="navL">';
                    echo '<a href="?page=' .  $key . '" class="select"';
                    echo '>' . $value["title"] . "</a></li>\n";
                } elseif ($value['title'] != 'Hidden') {
                    echo '<li class="navL">';
                    echo '<a href="?page=' .  $key . '">' . $value["title"] . "</a></li>\n";
                }
            } ?>
        </ul>
    </nav>
</aside>

Och för view/multipage.php:
Kod: Markera allt
<div class="wrap-main">

<?php require __DIR__ . "/multipage-aside.php" ?>

    <main>
        <article>
            <?php if ($page) : ?>
                <?php require $page["file"] ?>
            <?php else : ?>
                <p>You have selected a page reference '<?= htmlentities($pageReference) ?>' that does not map to an actual page.</p>
            <?php endif; ?>
        </article>
    </main>
</div>
Online
Användarvisningsbild

lrc

troubleshooter

  • Inlägg: 398
  • Blev medlem: 11 aug 2016, 21:38
  • Ort: Östersund

Re: Kmom05 - Riktigt svår nöt: nav-lösning

Inlägg12 okt 2019, 00:09

Wim4rk skrev:Är det något som görs med filerna när de laddas upp via dbwebb som gör att min konstruktion inte fungerar?

dbwebb publish minifierar även filerna, d.v.s. tar bort onödig whitespace, vilket gör att det inte går att utgå från att de radnummer du har lokalt kommer att gälla i publicerat skick. Använd dbwebb publishpure för att publicera utan minifiering, men du borde nog egentligen komma på ett bättre sätt att definiera titlarna.

Vilka är online

Användare som besöker denna kategori: Martyzz och 26 gäster