WebsiteBaker Community Forum

WebsiteBaker Support (2.12.x) => Modules => Topic started by: Concilla on May 31, 2019, 12:39:11 PM

Title: Blog_menu mit aktivem Link (class)?
Post by: Concilla on May 31, 2019, 12:39:11 PM
Liebe WebsiteBaker,

ich habe ein blog_menu für eine Newsseite, das die jeweiligen Newsgruppen anzeigt. Leider kann der aktive Link per CSS nicht farbig gestaltet werden, da er keine zusätzliche Klasse enthält. Wenn der  jeweilig angeklickte Link z.B. class=“active“ erhalten würde,  bedürfte es sicherlich Änderungen im Modul (include.php)? Könntet Ihr mir hier bitte helfen? Oder ist das zu kompliziert?

Vielen Dank im Voraus.
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: dbs on May 31, 2019, 02:49:46 PM
Hallo, sprichst du vom Modul "blog_menu" und vom Modul "News"?
Die wissen ja eigentlich nichts voneinander, holen sich nur bestimmte Daten aus der Datenbank.

Für die Module blog_menu und blog funktioniert es, wenn man in der include.php von blog_menu die while-Schleife in Zeile 96 so anpasst
Code: [Select]
<?php
// diese zeilen nicht, ist nur für bunten code. 
// das li hat eine class="active" erhalten

                  
while($history $result->fetchRow()){
                    
// $output .= "<li><a href=\"" .WB_URL.PAGES_DIREC TORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&amp;m=".$history['m']."&amp;method=".$date_option."\">" .$history['mo']." ".$history['y']."</a> (".$history['total'].")</li>\n";
                    
                    // mark current blog menu link as active ------------
                    
$curr_link WB_URL.PAGES_DIRECTORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&m=".$history['m']."&method=".$date_option;
                    
$curr_addr WB_URL.$_SERVER['REQUEST_URI'];
                    
$active    = ($curr_addr == $curr_link) ? ' class="active"' ''

                    
$output .= "<li ".$active."><a href=\"" .WB_URL.PAGES_DIRECTORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&amp;m=".$history['m']."&amp;method=".$date_option."\">" .$history['mo']." ".$history['y']."</a> (".$history['total'].")</li>\n";
                    
// --------------------------------------------------
                
}
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: Concilla on May 31, 2019, 05:31:29 PM
Danke für Deine Anwort. Ich habe jetzt eine ganze Weile herum probiert, aber ich bekomme immer ein:

There was an uncatched exception
syntax error, unexpected end of file
in line (107) of (/modules/blog_menu/include.php)

oder in einer anderen Zeile. Bei mir im Modul blog_menu sieht es in der include.php so aus, kompletter Code:

Code: [Select]
<?php
// function to display a Blog Menu on every page via (invoke function from template or code page)

if (!function_exists('display_blog_menu')) {
function display_blog_menu($page_id,$date_option 0,$group_header '<h1>Categories</h1>' ,$history_header '<h1>History</h1>',$display_option 0) {

// register outside object
global $database;

//get link to the page
$query "SELECT link FROM " .TABLE_PREFIX ."pages WHERE page_id=$page_id;";
$result $database->query($query);
if($result->numRows() > 0){
$link $result->fetchRow();
            
$page_link $link['link'];
}

// convert all numeric inputs to integer variables
$page_id = (int) $page_id;

if($display_option==or $display_option==2){ //show categories

// query to obtain categories for the selected page
   $query "SELECT * FROM " .TABLE_PREFIX ."mod_news_groups WHERE page_id=$page_id AND active=true;";

// make database query and obtain active groups and amount of posts per group
$result $database->query($query);
if($result->numRows() > 0){
if ($group_header != "") {
echo $group_header;
}
$output "";
while($group $result->fetchRow()){
                $id $group['group_id'];
$query_detail "SELECT * FROM " .TABLE_PREFIX ."mod_news_posts WHERE page_id=$page_id AND active=true AND group_id=$id;";
$detail_result $database->query($query_detail);
$num $detail_result->numRows();
$output .= "<li><a href=\"" .WB_URL.PAGES_DIRECTORY .$page_link .PAGE_EXTENSION ."?g=".$group['group_id']."\">" .$group['title'] ."</a></li>\n";
       }
}
$output "<ul>".$output."</ul>";
        echo $output;
}
if($display_option==or $display_option==1){ //show history

        //determine sorting method
        switch($date_option){
            case 0:
                $date "posted_when";
                break;
            case 1:
                $date "published_when";
                break;
        }

        $output ="";
        //query to obtain history per month for the selected page
        $query "SELECT MONTHNAME(FROM_UNIXTIME(".$date.")) as mo,MONTH(FROM_UNIXTIME(".$date.")) as m,FROM_UNIXTIME(".$date.",'%Y') as y,COUNT(*) as total FROM " .TABLE_PREFIX ."mod_news_posts WHERE page_id=$page_id AND active=true GROUP BY y,m ORDER BY y DESC,m DESC;";
        $result $database->query($query);
if($result->numRows() > 0){
if ($history_header != "") {
echo $history_header;
}
while($history $result->fetchRow()){
                $output .= "<li><a href=\"" .WB_URL.PAGES_DIRECTORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&m=".$history['m']."&method=".$date_option."\">" .$history['mo']." ".$history['y']."</a> (".$history['total'].")</li>\n";
             }
         }
$output "<ul>".$output."</ul>";
        echo $output;
}

}
}

Die Zeile 96 ist bei mir eigentlich nur ein "}" und die while-Schleife beginnt in der Zeile 88.
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: dbs on May 31, 2019, 06:17:06 PM
Wahrscheinlich weil die Klammern schlecht gesetzt sind im Original.
Deine Datei müsste so aussehen:
Code: [Select]
<?php
// function to display a Blog Menu on every page via (invoke function from template or code page)

if (!function_exists('display_blog_menu')) {
    function 
display_blog_menu($page_id,$date_option 0,$group_header '<h1>Categories</h1>' ,$history_header '<h1>History</h1>',$display_option 0) {
        
        
// register outside object
        
global $database;

        
//get link to the page
        
$query "SELECT link FROM " .TABLE_PREFIX ."pages WHERE page_id=$page_id;";
        
$result $database->query($query);
        if(
$result->numRows() > 0){
            
$link $result->fetchRow();
            
$page_link $link['link'];
        }
        
        
// convert all numeric inputs to integer variables
        
$page_id = (int) $page_id;

        if(
$display_option==or $display_option==2){ //show categories

            // query to obtain categories for the selected page
              
$query "SELECT * FROM " .TABLE_PREFIX ."mod_news_groups WHERE page_id=$page_id AND active=true;";

            
// make database query and obtain active groups and amount of posts per group
            
$result $database->query($query);
            if(
$result->numRows() > 0){
                if (
$group_header != "") {
                    echo 
$group_header;
                }
                
$output "";
                while(
$group $result->fetchRow()){
                    
$id $group['group_id'];
                    
$query_detail "SELECT * FROM " .TABLE_PREFIX ."mod_news_posts WHERE page_id=$page_id AND active=true AND group_id=$id;";
                    
$detail_result $database->query($query_detail);
                    
$num $detail_result->numRows();
                    
$output .=    "<li><a href=\"" .WB_URL.PAGES_DIREC TORY .$page_link .PAGE_EXTENSION ."?g=".$group['group_id']."\">" .$group['title'] ."</a></li>\n";
                  }
            }
            
$output "<ul>".$output."</ul>";
            echo 
$output;
        }
        if(
$display_option==or $display_option==1){ //show history

            //determine sorting method
            
switch($date_option){
                case 
0:
                    
$date "posted_when";
                    break;
                case 
1:
                    
$date "published_when";
                    break;
            }

            
$output ="";
            
//query to obtain history per month for the selected page
            
$query "SELECT MONTHNAME(FROM_UNIXTIME(".$date.")) as mo,MONTH(FROM_UNIXTIME(".$date.")) as m,FROM_UNIXTIME(".$date.",'%Y') as y,COUNT(*) as total FROM " .TABLE_PREFIX ."mod_news_posts WHERE page_id=$page_id AND active=true GROUP BY y,m ORDER BY y DESC,m DESC;";
            
$result $database->query($query);
            if(
$result->numRows() > 0){
                if (
$history_header != "") {
                    echo 
$history_header;
                }
                while(
$history $result->fetchRow()){
                    
// $output .= "<li><a href=\"" .WB_URL.PAGES_DIREC TORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&amp;m=".$history['m']."&amp;method=".$date_option."\">" .$history['mo']." ".$history['y']."</a> (".$history['total'].")</li>\n";
                    
                    // mark current blog menu link as active ------------
                    
$curr_link WB_URL.PAGES_DIRECT ORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&m=".$history['m']."&method=".$date_option;
                    
$curr_addr WB_URL.$_SERVER['REQUEST_URI'];
                    
$active    = ($curr_addr == $curr_link) ? ' class="active"' ''

                    
$output .= "<li ".$active."><a href=\"" .WB_URL.PAGES_DIREC TORY .$page_link .PAGE_EXTENSION ."?y=".$history['y']."&amp;m=".$history['m']."&amp;method=".$date_option."\">" .$history['mo']." ".$history['y']."</a> (".$history['total'].")</li>\n";
                    
// --------------------------------------------------
                
}
            }
            
$output "<ul>".$output."</ul>";
            echo 
$output;
        }

    }
}

edit: fehlende letzte Klammer hinzugefügt...
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: Concilla on May 31, 2019, 06:37:00 PM
Nein, tut mir leid. Bei mir wird leider keine Klasse "active" hinzugefügt  :-( Ich habe den Code, so wie von Dir geschickt, komplett ausgetauscht. Es ist alles so, wie es vorher auch war (li ohne aktiver Klasse bei Klick auf eine Gruppe), nachdem ich aus DIREC TORY noch DIRECTORY gemacht habe, da dies Fehler angezeigt hat.
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: dbs on June 01, 2019, 09:20:00 AM
Nach PN's  :)
Meine Änderung war für die Darstellung der Monate, Concilla benötigte es für die Gruppen.
Beides nun in der angehängten Datei (umbenennen zu include.php).
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: Concilla on June 01, 2019, 09:33:37 AM
Wenn man die ZIP entpacken möchte, kommt leider die Information: "Das Archiv hat entweder ein unbekanntes Format oder ist beschädigt."
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: Gast on June 01, 2019, 10:03:54 AM
Bitte lesen, was geschrieben wurde

Quote
Beides nun in der angehängten Datei (umbenennen zu include.php).

es ist keine ZIP-Datei
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: Concilla on June 01, 2019, 10:08:37 AM
Ah sorry, mal wieder zu schnell gewesen und nicht alles gelesen  :-(
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: dbs on June 01, 2019, 10:11:14 AM
Finde es ganz normal, dass man versucht .zip zu entpacken.
Deshalb ist ab jetzt auch .txt als Anhang erlaubt. Werde es im Post ändern.
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: yeha2 on June 23, 2020, 03:15:58 PM
Hallo zusammen!
In der Version
WB-Version
2.10.0
gibt es ein kleines Problem mit dem
BLOG_MENU
... ich habe die includes.php hier aus dem Forum aus diesem  Thema mal probiert, doch auch diese behebt das Problem nicht.
Vielleicht was ja jemand durch Zufall, woran das liegen könnte.
Auf meiner Seite kommt immer:

There was an uncatched exception
Call to a member function numRows() on null
in line (84) of (/modules/blog_menu/include.php)

und noch dazu verschwindet mein Menü oben mit den Seien der Homepage :(

Wer spitze wenn einer was weiß!


Title: Re: Blog_menu mit aktivem Link (class)?
Post by: dbs on June 23, 2020, 04:12:33 PM
Hallo, die Meldung besagt, dass die Tabellenabfrage kein Ergebnis liefert.
Falls du kannst schau mal in der Datenbank ob es die Tabelle mod_blog_posts gibt und ob da Einträge drin sind.

Außerdem hängst du mit WB etwas sehr hinterher. Wir sind bei 2.12.2 und kurz vor 2.13.
Denk über ein Update nach.
Title: Re: Blog_menu mit aktivem Link (class)?
Post by: yeha2 on June 24, 2020, 10:30:06 AM
Danke (Y)! Aber, wenn Du sagst erst mal Update, dann fange ich damit mal lieber an, werde mich mal in die Anleitung einlesen, wie das funzt!
Bevor ich am alten System jetzt  rum werkel!