. .
pragmaMx Support Forum 26 Mai 2012, 03:24:24 *
Willkommen Gast. Bitte einloggen oder registrieren.


Einloggen mit Benutzername und Passwort
News:
Brauchen Sie Hilfe? Bitte nutzen Sie unsere Suchfunktion bevor Sie Beiträge oder Fragen ins Board schreiben! Viele Fragen wurden bereits gestellt und beantwortet. Danke!
 
Übersicht Hilfe Forenregeln / Boardrules
 
Suche
Seiten: [1] 2  Alle   Nach unten
Drucken
Autor Thema: Und schon wieder eine Frage: Kann man 2 Blöcke in einen includen?  (Gelesen 7736 mal)
0 Mitglieder und 3 Gäste betrachten dieses Thema.
Kevke
weiss was
***
Offline Offline

Geschlecht: Männlich
Beiträge: 182


WWW
« am: 31 Januar 2004, 20:25:40 »

Würde gerne einen Center Block erstellen welcher zwei Blöcke
included hat.

Unzwar Random Pic und den Content Block.

Geht sowas?
Gespeichert
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #1 am: 01 Februar 2004, 12:06:44 »

Moin Kevke Smiley

das geht:

Alle Blöcke erzeugen ja, wenn man sie includet eine Variable $content.

 php
include("blocks/block-irgendwas_1.php");
$out1 = $content;
unset($content);

include("blocks/block-irgendwas_2.php");
$out2 = $content;

$content = $out1.$out2;
$blockfiletitele = "Der Titel für den Block";
 
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #2 am: 09 Oktober 2004, 14:49:13 »

So ich greif das Theme wieder mal auf und zwar hab ich auch sowas vor bloss das sich bei mir die blöcke die angezeigt werdenm sollen im Admin bereich einstellen lassen.

Nun hab alles schön erstellt bloss bleibt der center Block leer und die die blöcke die darin angezeigt werden sollen werden links angezeigt:-(

Hier mal der code:

Code: [Select]  
if (eregi("cblocks1.php", $_SERVER['PHP_SELF'])) {
    Header("Location: ../index.php");
    die();
}

global $bgcolor1, $bgcolor2, $prefix;
$cbinfo = sql_fetch_array(sql_query("select * from ".$prefix."_nsncb_config where cgid='1'"));
if ($cbinfo['enabled'] == '1') {
    if ($cbinfo['height'] <> "") { $cheight = "height='".$cbinfo['height']."' "; } else { $cheight = ""; }
    $content = "<table width='100%' ".$cheight."border='0' cellspacing='1' cellpadding='0' bgcolor='$bgcolor2'><tr><td valign='top'>\n";
    $content .= "<table width='100%' ".$cheight."border='0' cellspacing='1' cellpadding='4' bgcolor='$bgcolor1'><tr>";
    $result3 = sql_query("SELECT * FROM ".$prefix."_nsncb_blocks WHERE cgid='1' ORDER BY cbid");
    while($cbidinfo = sql_fetch_array($result3)) {
        if ($cbidinfo['cbid'] <= $cbinfo['count']) {
            if ($cbidinfo['wtype'] == '0') {
                $content .= "<td width='".$cbidinfo['width']."' valign='top' align='center'>\n";
            } else {
                $content .= "<td width='".$cbidinfo['width']."%' valign='top' align='center'>\n";
            }
            cb_blocks($cbidinfo['rid']);
            $content .= "</td>\n";
        }
    }
    $content .= "</tr></table>\n";
    $content .= "</td></tr></table>\n";
    $content .= "<br>";
}
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
jogi24
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 2.337

jogi24


WWW
« Antworten #3 am: 09 Oktober 2004, 19:05:20 »

hi

ist das nicht der centerblock von NSN Huh
Gespeichert
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #4 am: 10 Oktober 2004, 14:21:12 »

Jupps das ist er. Wobei ist eigentlich kein block da er ja included wird im header und footer. Daher wollte ich denn als richtig block haben das man den kram besser positionieren kann.
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #5 am: 11 Oktober 2004, 07:04:18 »

Moin Smiley

wenn die Blockinhalte links ausgegeben wérden, dann wird das bestimmt durch einen Echo-Befehl ausgelöst.
Was macht denn die Funktion cb_blocks() ?
Der Rest von dem Code sieht eigentlich normal aus...
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #6 am: 11 Oktober 2004, 08:30:01 »

In der funktion ist nix von echos zu sehen ist nur ne abfrag ob block da oder nicht.
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #7 am: 11 Oktober 2004, 11:47:57 »

Jop, aber irgendwo / irgendwas muss den Inhalt der Variablen $content ja ausgeben...
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #8 am: 03 November 2004, 18:58:59 »

Code: [Select]  
global $prefix, $bgcolor1, $bgcolor2;
$cbinfo = sql_fetch_array(sql_query("select * from ".$prefix."_nsncb_config where cgid='1'"));
if ($cbinfo['enabled'] == '1') {
    if ($cbinfo['height'] <> "") { $cheight = "height='".$cbinfo['height']."' ";
} else
{
$cheight = "";
}
    $content = "<table width='100%' ".$cheight."border='0' cellspacing='1' cellpadding='0' align='center'><tr><td valign='top' align='center'>\n";
    $content .= "<table width='100%' ".$cheight."border='0' cellspacing='1' cellpadding='4' align='center'><tr>";
    $result3 = sql_query("SELECT * FROM ".$prefix."_nsncb_blocks WHERE cgid='1' ORDER BY cbid");
    while($cbidinfo = sql_fetch_array($result3)) {
        if ($cbidinfo['cbid'] <= $cbinfo['count']) {
            if ($cbidinfo['wtype'] == '0') {
                $content .= "<td width='".$cbidinfo['width']."' valign='top' align='center'>\n";
            } else {
                $content .= "<td width='".$cbidinfo['width']."%' valign='top' align='center'>\n";
            }
            $content .= cb_blocks($cbidinfo['rid']);
            $content .= "</td>\n";
        }
    }
    $content .= "</tr></table>\n";
    $content .= "</td></tr></table>\n";
    $content .= "<br>";
}

so sieht im mom mein block hinhalt aus
und so m die function cb_blocks:

Code: [Select]  
function cb_blocks($rid) {
    global $prefix, $db, $admin, $user;
    $sql = "SELECT * FROM ".$prefix."_nsncb_blocks WHERE rid='$rid'";
    $result = sql_query($sql);
    while($row = sql_fetch_array($result)) {
        $title = $row['title'];
        $filename = $row['filename'];
        $content = $row['content'];
        if ($filename == "" AND $content > "") {
            themecenterbox($title, $content);
        } elseif ($filename > "" AND $content == "") {
            $file = @file("blocks/$filename");
            if (!$file) {
                $content = _BLOCKPROBLEM;
            } else {
                include("blocks/$filename");
            }
            if ($content == "") { $content = _BLOCKPROBLEM2; }
            themecenterbox($title, $content);
        } elseif ($filename == "" AND $content == "") {
            $content = _BLOCKPROBLEM2;
            themecenterbox($title, $content);
        }
    }
}

Mal sehen ob du da was sieht weil der hinghalt wird immer noch rechts angezeigt.
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #9 am: 04 November 2004, 08:18:52 »

Ja ich weiss ihr habt viel um die Ohren aber das wäre mir doch jetzt mal wichtig.
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #10 am: 04 November 2004, 08:47:35 »

Moin Smiley

du kriegst jetzt nicht die lösung, sondern nur nen kleinen Stuppser.

Code: [Select]  
themecenterbox($title, $content);

Schau mal, was die Funktion themecenterbox() macht Wink

Zitat
wenn die Blockinhalte links ausgegeben wérden, dann wird das bestimmt durch einen Echo-Befehl ausgelöst.
Was macht denn die Funktion cb_blocks() ?
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #11 am: 04 November 2004, 10:54:30 »

Jo aber die themecenterbox benutzt doch nur echo´s wenn die function thememiddlebox nicht vorhanden ist. Also müsste ich die thememiddlebox auf $content abändern?

Nachtrag: Sauerei heute hängt es wieder total also die echos in beiden funktionen müssen bleiben sonst geht ja garnix mehr. Geb mal noch einen Tip bitte:-)

Ach noch was der Inhalt wird links untereinander angezeigt also schon ganz anderst wie es im block selbst eigentlich erstellt ist. wenn ich es mit echo mache wird er auch links angezeigt aber die darstellung stimmt wenigtens;-)
« Letzte Änderung: 04 November 2004, 11:04:55 von NeMeSiSX2LC » Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #12 am: 05 November 2004, 07:36:50 »

Ja ich weiss ihr habt viel um die Ohren aber das wäre mir doch jetzt mal wichtig.

Mach auch nicht wieder aber würde mich jetzt doch mal interessieren.
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #13 am: 05 November 2004, 07:43:19 »

Zitat
Jo aber die themecenterbox benutzt doch nur echo´s wenn die function thememiddlebox nicht vorhanden ist. Also müsste ich die thememiddlebox auf $content abändern?

Nachtrag: Sauerei heute hängt es wieder total also die echos in beiden funktionen müssen bleiben sonst geht ja garnix mehr. Geb mal noch einen Tip bitte:-)

Ach noch was der Inhalt wird links untereinander angezeigt also schon ganz anderst wie es im block selbst eigentlich erstellt ist. wenn ich es mit echo mache wird er auch links angezeigt aber die darstellung stimmt wenigtens;-)

Sorry, aber da versteh ich jetzt garnix.....

Tatsache ist, dass themecenterbox und thememiddlebox die Ausgaben per echo ausgeben. Dadurch landet die Ausgabe nicht in der Variablen $content sondern werden bereits beim generieren des Blocks, ausserhalb der theme-Haupttabelle ausgegeben.

Eine Möglichkeit das zu umgehen, wäre die Ausgabe in den Ausgabepuffer zwischenzuspeichern und das dann in die Variable zu lenken....
Stichwort ob_start()
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #14 am: 05 November 2004, 07:52:03 »

Zitat
Sorry, aber da versteh ich jetzt garnix.....

Tatsache ist, dass themecenterbox und thememiddlebox die Ausgaben per echo ausgeben. Dadurch landet die Ausgabe nicht in der Variablen $content sondern werden bereits beim generieren des Blocks, ausserhalb der theme-Haupttabelle ausgegeben.

Eine Möglichkeit das zu umgehen, wäre die Ausgabe in den Ausgabepuffer zwischenzuspeichern und das dann in die Variable zu lenken....
Stichwort ob_start()

Das verstehe ich nun wieder nicht wo soll die ausgabe gepuffert werden? Im Block

Ach ist es nicht schön wenn die Kommunikation Funktioniert?
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
jubilee
Gast
« Antworten #15 am: 05 November 2004, 08:35:07 »

Hallo !
Zitat
Das verstehe ich nun wieder nicht wo soll die ausgabe gepuffert werden? Im Block
Guckst Du in der PHP-Dokumentation nach
ob_start --->
Zitat
This function will turn output buffering on. While output buffering is active no output is sent from the script (other than headers), instead the output is stored in an internal buffer.

The contents of this internal buffer may be copied into a string variable using ob_get_contents(). To output what is stored in the internal buffer, use ob_end_flush(). Alternatively, ob_end_clean() will silently discard the buffer contents.

An optional output_callback function may be specified. This function takes a string as a parameter and should return a string. The function will be called when ob_end_flush() is called, or when the output buffer is flushed to the browser at the end of the request. When output_callback is called, it will receive the contents of the output buffer as its parameter and is expected to return a new output buffer as a result, which will be sent to the browser.

Note:
In PHP 4.0.4, ob_gzhandler() was introduced to facilitate sending gz-encoded data to web browsers that support compressed web pages. ob_gzhandler() determines what type of content encoding the browser will accept and will return it's output accordingly.

Output buffers are stackable, that is, you may call ob_start() while another ob_start() is active. Just make sure that you call ob_end_flush() the appropriate number of times. If multiple output callback functions are active, output is being filtered sequentially through each of them in nesting order.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() and ob_start() may not be called from a callback function. If you call them from callback function, the behavior is undefined. If you would like to delete the contents of a buffer, return "" (a null string) from callback function.

MfG
jubilee
Gespeichert
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #16 am: 05 November 2004, 09:38:35 »

Joa schon klar aber wo einsetzen das leuchtet mir grad nicht ein
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #17 am: 05 November 2004, 10:21:17 »

Hier die ungetestete, aber von unnötigem Kram befreite, Version der Funktion:
Code: [Select]  
<?php

function cb_blocks($rid) {
  global $prefix;
  $sql "SELECT * FROM ".$prefix."_nsncb_blocks WHERE rid='".intval($rid)."'";
  $result sql_query($sql);
  $row sql_fetch_array($result);
  if (empty($row['filename']) && !empty($row['content'])) {
    $content $row['content'];
  } elseif (!empty($row['filename']) && empty($row['content'])) {
    if (is_file("blocks/".$row['filename'])) {
      include("blocks/".$row['filename']);
    } else {
      $content _BLOCKPROBLEM;
    }
  if (empty($content)) { 
    $content _BLOCKPROBLEM2
  }
  ob_start();
  themecenterbox($row['title'], $content);
  return ob_get_clean();
}

?>

Wobei ich mir nicht ganz sicher bin, ob das nicht noch einfacher geht. Die DB-Abfrage in der Funktion müsste eigentlich unnötig sein, weil beim Aufruf die Tabelle ja schonmal abgefragt wurde....
Aber that's nuke live...
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #18 am: 05 November 2004, 10:57:32 »

so also die blöcke sind schonmal da wo sie sein soll aber darunter steht jetzt das

Fatal error: Cannot use object of type stdClass as array in \includes\mx_baseconfig.php on line 154

  ob_start();
  themecenterbox($row['title'], $content);<<<<< 154
  return ob_get_clean();
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
NeMeSiSX2LC
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 3.604

NeMeSiSX2LC


WWW
« Antworten #19 am: 05 November 2004, 11:01:54 »

Aja wenn man es so macht

$title = $row['title'];
ob_start();
  themecenterbox($title $content);
  return ob_get_clean();

Dann gehts
Gespeichert

CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1
Seiten: [1] 2  Alle   Nach oben
Drucken
 
Gehe zu:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
design by hENNE, layout based on YAML