WebsiteBaker Logo
  • *
  • Templates
  • Help
  • Add-ons
  • Download
  • Home
*
Welcome, Guest. Please login or register.

Login with username, password and session length
 

News


WebsiteBaker 2.13.6 is now available!


Will it continue with WB? It goes on! | Geht es mit WB weiter? Es geht weiter!
https://forum.websitebaker.org/index.php/topic,32340.msg226702.html#msg226702


The forum email address board@websitebaker.org is working again
https://forum.websitebaker.org/index.php/topic,32358.0.html


R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WB
https://forum.websitebaker.org/index.php/topic,32355.0.html


* Support WebsiteBaker


  • Home
  • Help
  • Search
  • Login
  • Register

  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.8.x) »
  • General Help & Support »
  • Hilfe & Support (deutsch) »
  • Diskussion über WB (closed) »
  • Alle Section_IDs einer Seite auflisten
  • Print
Pages: [1] 2   Go Down

Author Topic: Alle Section_IDs einer Seite auflisten  (Read 11235 times)

Waldschwein

  • Guest
Alle Section_IDs einer Seite auflisten
« on: July 31, 2010, 02:10:03 PM »
Hallo!

Wahrscheinlich habe ich sämtliche Scheuklappen aufgesetzt und das Problem ist eher mangelndes PHP-/SQL-Verständnis als WB, aber ich möchte trotzdem einmal fragen.

Ich will im Frontend mit den Section_IDs und dazugehörigen Blöcken arbeiten. Das ganze erst einmal in PHP, HTML / JS kommt später.
Die Page_ID bekommt man ja recht leicht über eine Konstante, doch Blöcke und Section IDs sind nicht zuverlässig vorhanden (man könnte zwar jQuery herumbiegen und es über die Section-Anchor auslesen, aber nun gut, das ist ziemlich unzuverlässig, gerade weil die Optionen eine Änderung des Prefix bieten...)

Folgender Code ist schon einmal da:
Code: [Select]
<?php $sql = &#39;SELECT `section_id`, `block`, `module` FROM `&#39;.TABLE_PREFIX.&#39;sections` WHERE `page_id` = &#39;.$page_id;
$sect_set = $database->query($sql);
$section_id = $sect_set->fetchRow(); ?>
Die Array-Ausgabe (unter print_r) sieht dann so aus
Quote
Array (
  • => 8 [section_id] => 8 [1] => 1 [block] => 1 [2] => wysiwyg [module] => wysiwyg ) 
Soweit so gut, gäbe es nicht mehrere Sections auf dieser Seite...

Warum so viel Aufwand?
Ganz einfach, es soll ein Frontend Edit Modul werden, und leider macht hier jedes Modul was es soll. WYSIWYG kann manchmal so aussehen, Topics anders, Form ganz anders. Daher muss man sowohl wissen, welcher Modul-Typ der jeweiligen Section zugeordnet ist, den Block (wäre sinnvoll, einfach dass man diesen hat) und eben auch die Section selbst für URL-Links usw.

Was meine Frage einfach ist:
Wie bekomme ich die Section_ID im Frontend (natürlich nur, wenn jemand eingeloggt ist & Rechte hat) so erhalten, dass ich mehrere Links auf einer Seite setzen kann, wo die jeweils richtige Section_ID ermittelt wird?

Ich habe einen Screenshot angehängt der erklären soll, wie es gemeint ist.
Dass das Form-Modul so etwas "spezielles" braucht ist klar, aber das kann später evtl. auch einmal das Modul selbst ansteuern.

Die URLs / Buttons werden dann mit jQuery an die richtige Stelle platziert, das ist nicht das Problem. Ebenso ist es kein Problem, dass später ja "eigentlich" das ganze Backend geladen wird - es wird einfach alles ausgeblendet, was nicht gebraucht wird in einem Overlay.

Gruß Michael


[gelöscht durch Administrator]
Logged

susigross

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #1 on: July 31, 2010, 04:37:46 PM »
Du meinst auf dem Server oder auf dem Client soll die Abfrage laufen?
Server ist ja einfach, in der DB die Tabelle sections where page_id = aktuelle Seite abfragen?
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #2 on: July 31, 2010, 04:59:14 PM »
Ja, das soll auf dem Server sein - auf dem Client ginge es ja mit jQuery, wenn einige Bedingungen zutreffen (Anker gesetzt & nicht verändert usw.).
Wenn ich aber per select `section_id`FROM `sections`WHERE `page_id`=$page_id anrufe wird zwar (s.o.) eine Section der Seite richtig aufgelistet, aber eben nicht die restlichen.
Habe ich da evtl. einen Denkfehler in den PHP-Arrays? Ich gehe halt aus, wenn eine Seite sagen wir 3 Sections hat, dass die auch dann alle übergeben werden, und man (s.o.) letztendlich ansteuern kann.

Gruß Michael

Logged

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3087
  • Gender: Female
Re: Alle Section_IDs einer Seite auflisten
« Reply #3 on: July 31, 2010, 05:11:40 PM »
erst mal nachdenken:

Was ist eine Tabelle?
Was liefert eine SQL-Abfrage?
Was liefert fetchROW?  (mit Betonung auf Row) ?

beantworte Dir die 3 Fragen und Du hast die Lösung.
Logged
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"We need education to cope with digitalization - and NOT the digitalization of education.!"

Tägliches Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

susigross

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #4 on: July 31, 2010, 05:34:42 PM »
Dein Code
Code: [Select]
select `section_id`FROM `sections`WHERE `page_id`=$page_idsollte eigentlich immer alle sections der Seite liefern.
Hast du noch ein limit drin oder gehst du das Ergebnis nicht in einer Schleife durch?
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #5 on: July 31, 2010, 06:21:50 PM »
Hallo!

Jaja, der Anfänger.  :oops: Hat die while Schleife vergessen und nicht richtig geschaut, wo das return innerhalb der Funktion steht... Sorry für die Aufregung, und danke für die Hilfe. Jetzt ist alles im Array, was da reingehört.

Gruß Michael

Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #6 on: July 31, 2010, 06:31:34 PM »
Mir ist nicht recht klar, warum das Pferd von dieser Seite her aufzäumst. Was bringt dir das?
Jegliches Frontend-Edit muss vom Modul her kommen, es muss dafür vorbereitet sein. Über das Abfragen der Sections kommst du gerade dahin, dass du ein Modul zwar im Frontend aufrufen kannst, aber spätestens beim Speichern landest du (derzeit) ganz normal im Backend. Von vielen "Besonderheiten" der Module abgesehen.
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #7 on: July 31, 2010, 06:36:09 PM »
Quote from: chio on July 31, 2010, 06:31:34 PM
Mir ist nicht recht klar, warum das Pferd von dieser Seite her aufzäumst. Was bringt dir das?
Jegliches Frontend-Edit muss vom Modul her kommen, es muss dafür vorbereitet sein. Über das Abfragen der Sections kommst du gerade dahin, dass du ein Modul zwar im Frontend aufrufen kannst, aber spätestens beim Speichern landest du (derzeit) ganz normal im Backend. Von vielen "Besonderheiten" der Module abgesehen.
Es gibt eigentlich ein Totschlagargument, und das ist WYSIWYG in Verbindung mit Abwärtskompatibilit ät.
Was bringt Frontend-Edit, wenn es beim meist verwendeten (und bei allen Edits immer bevorzugten) Modul nicht klappt?
Dass das Frontend-Edit vom Modul her kommen muss ist klar, aber zum Beispiel Topics 0.6 hat ja auch ein Frontend-Edit, ohne auf ein externes Modul zurück greifen zu müssen.
Beim Speichern lande ich übrigens nicht im Backend - dafür gibt's ja jQuery - oder sagen wir lieber JavaScript mit dem Modewort AJAX. http://api.jquery.com/category/ajax/

Gruß Michael
« Last Edit: July 31, 2010, 06:39:21 PM by Waldschwein »
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #8 on: August 01, 2010, 04:47:29 PM »
Beim WYSIWYG-Modul wären die nötigen Änderungen in einer halben Stunde gemacht. Es sind ja nur wenige Dateien betroffen. Vorausgesetzt: Es ist klar, WIE man das machen soll. Da habe ich schon Möglichkeiten aufgezeigt, aber ich kenne die WB-Pläne zuwenig, um hier absolut sattelfest zu sein. Sonst hätte ich es eh schon gemacht ;-)

Außerdem würde ich hier sowieso mehr mit Thorns WYSIWYG-History als "Vorzeige-Kandidaten" liebäugeln, weil Core-Modul-Eingriffe normalerweise Jahre dauern.

Die 2. Sache ist der Behälter, in dem das Ganze dann laufen soll. Der ist unabhängig davon, welches Modul darin läuft.
Da ich wenig jQuery-Erfahrung habe, will ich mir das gar nicht anfangen.


« Last Edit: August 01, 2010, 04:51:39 PM by chio »
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #9 on: August 01, 2010, 06:06:46 PM »
Hallo!

Das WYSIWYG Modul kann man natürlich schnell verändern, aber das Problem ist dann einfach, dass man zu viel braucht.
Momentan sage ich, das höchste der Gefühle ein "anständiges" Frontend-Edit zu machen ist das Einbinden von jQuery im Frontend (logisch, sonst geht wenig) und einem PHP-Schnippsel - wohl oder übel auch das manuelle Aktivieren von EDIT_ONE_SECTION, das leider über eine Konstante definiert ist und man hier leider auch nichts mit einem Modul machen kann. Sehr schade - aber gut, ist halt so.
Wenn man jetzt Modulabhängig alles gestaltet, wird das Ganze meiner Meinung nach ein Schuss in den Ofen - wem will man erklären "Um Frontend Edit zu nutzen musst du Modul X aktualisieren, und dann noch Modul Y, usw."
Das ändert nichts an der Tatsache, dass es sinnvoll ist, eine Möglichkeit bereitzustellen "Wenn das Modul bereit ist für Frontend Edit, benutze das auch gefälligst" - aber eben auch "Wenn nicht, nimm Krückenlösung XY".

Das Ganze funktioniert momentan schon ein bißchen - siehe Screenshot. Zwar unschön mit iframe (wegen Rumgebastel kommt der Overlay erstmal später dran) und sonst etwas, aber es funktioniert.

Alternativ könnte man jetzt einfach ein anderes WYSIWYG Modul reinpacken, und das einfach anstatt dem integrierten aufrufen (nein, es betrifft keine Formatierungen, weil die abhängig vom Editor sind, aber nicht vom Modul).
An WB selbst möchte ich nichts ändern, weil mir das zu heiß gestrickt ist. Um das ganze wirklich richtig zu machen, müsste man von Anfang bis Ende das ganze Konzept von WB (aus technischer Sicht) umschmeißen und - mit Verlaub - daran glaube ich nicht. Man könnte natürlich sich den "account" als Vorbild nehmen und einfach alles mal eben doppelt für's Frontend programmieren - aber auch das finde ich viel zu heiß.

Nein, ich denke momentan ist folgendes einfach am Besten:

1.) Frontend Edit Modul wird installiert (ein Admin-Tool) - zeitgleich wird automatisch ein Snippet mitinstalliert - der Benutzer / Admin merkt davon aber nichts (außer er sieht in der Modulliste nach).
2.) Ins Frontend Template muss das Snippet registiert werden (einfach ein <?php frontend_edit(); ?>). Zudem muss entweder WB 2.8.1 unverändert vorhanden sein oder (mit WB 2.8.0 oder folgendem WB 2.8.2) die Konstante "EDIT_ONE_SECTION" in der framework/initialize.php auf true sein. (Leider ist das ganze so verstrickt, dass ich heute noch drüber rätsel, was eigentlich das ganze macht - ist schade, aber nun gut. Wäre viel sinnvoller, dass man auch "extern" die Möglichkeit hat, es zu überschreiben). Natürlich muss "irgendwie" jQuery auch im Frontend vorhanden sein.
3.) Im Admin-Tool (tool.php) kann ich ein paar Funktionen an und ausknipsen. Das ganze wird in der Datenbank gespeichert und an die fedit_functions.php übergeben.
4.) Die fedit_functions.php besteht aus ein paar Funktionen. Die eine holt sich die Werte aus der Datenbank, eine andere
stellt jQuery zur Verfügung (ja, eine Krücke, aber erstmal bleibt es so, kann man später evtl. auslagern), eine andere rödelt durch die aktuelle Seite und stellt die ganzen Sections zur Verfügung (mal gucken, wie das alles noch mit Sicherheit aussieht, WB 2.8.2 hat hier auch ein paar interessante Funktionen wie "section_is_active", die schon Einzug halten sollten). Die eigentliche Funktion dann holt sich die Page_ID, und spuckt alles der Reihe nach aus. Die Section_ID wird als Link an die URL drangehängt.
5.) Noch bin ich nicht soweit - aber gibt es eine "frontend_edit.php" (o.ä.) eines Moduls wird die anstatt der Backend-URL aufgerufen.
Gibt's ja wieder ein Problem - wie weiß das Frontend-Edit welche Section welches Modul hat und ob das Modul die frontend_edit.php überhaupt hat? "Einfach so" geht das nicht - auch hier muss es in der Datenbank herumwälzen. Ich wüsste zumindest keine gescheite, andere Sache. Außer halt wie bei Topics, dass der Edit-Button irgendwie abgefangen wird. Aber ohne eine PHP-Schnittstelle (API) geht das alles ja nicht.

Um die Buttons zu stylen gibt's eine frontend.css, zudem sollte später natürlich alles auch in eine frontend.js reingeschrieben werden, damit keiner in den PHP-Dateien herumpfuschen braucht.

Natürlich - Feinheiten und auch einige "Grobheiten" müssen unbedingt noch fertig werden, evtl. muss man sogar im Backend-Theme eine JavaScript Datei einbinden.

Gruß Michael





[gelöscht durch Administrator]
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #10 on: August 02, 2010, 02:20:06 PM »
Hallo!

Ich hänge jetzt einmal die aller erste Alpha Version an meiner (naja...) Künste.

Was nicht funktioniert
- Leider wird die Section-ID bei mehreren Sections auf einer Seite nicht nacheinander ausgegeben. Ich habe mit foreach() um mich geschmissen, aber irgendwie nimmt er egal was ich mache entweder das erste oder letzte Element - oder alle, nur dann bei jeder Section alle, aber nicht nacheinander.
- Die Pop-Ups passen sich je nach Browser nicht immer ganz korrekt an. Firefox sollte gehen.
- Die Pop-Ups wandeln sich nach einer Aktion (z.B. speichern) in ein Vollbild um, und das Frontend verschwindet. Daher ist es erst einmal per Standard deaktiviert - in dem Admin-Tool kann man anknipsen. Das ganze scheint wohl doch ein bißchen die höhere Kunst zu sein von JavaScript - wenn sich einer auskennt damit wäre super. Momentan geht es per AJAX, nicht per iframe. Es hat alles seine Vor-und Nachteile, die Methoden sind unglaublich vielfältig wie man es machen kann, aber wenn man gescheit die Overlay Funktion machen will reicht ein einfaches Tutorial irgendwo im Netz einfach nicht aus.
- Es gibt noch keine Schnittstelle für Add-ons - ich weiß momentan einfach nicht, wie man eine Verbindung zustande bringen sollte. Frontend-Edit müsste erst mühsam in der Datenbank das jeweilige Add-on zur Section suchen, dann nachfragen. Oder das Add-on stellt selbst die Verbindung her, aber da müsste dann jemand sagen was er davon hält.
- Noch keine "richtigen" Abfragen, wer welche Section bearbeiten kann und welche aktiv ist (muss noch kommen).

Was man braucht
- WB ab Version 2.8.0 (es kann auch drunter gehen, aber nicht getestet)
- jQuery im Frontend, register_modfiles js/css.
- Aktiverten Anker bei jedem Abschnitt im Frontend (mit class="section_anchor")
- Einen PHP-Code irgendwo <?php frontend_edit(); ?>
- Viel Geduld, Augenzudrücken und Einfühlvermögen für Programmier Coder Buchstabenaneinande rreiher

Was klappt
Einfach selber gucken - wurde genug gesagt.

Gruß Michael
« Last Edit: August 08, 2010, 03:33:16 PM by Waldschwein »
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #11 on: August 02, 2010, 02:46:52 PM »
Ändert das Teil irgendwas an WB?

Ich habe hier sehr seltsame Effekte - auch nachdem ich das Modul wieder entfert habe.
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #12 on: August 02, 2010, 02:48:01 PM »
Quote from: chio on August 02, 2010, 02:46:52 PM
Ändert das Teil irgendwas an WB?

Ich habe hier sehr seltsame Effekte - auch nachdem ich das Modul wieder entfert habe.

Eh, nein... Was macht es denn?
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #13 on: August 02, 2010, 02:52:51 PM »
Habs gefunden: Es hängt ein "nyroModal.css" rein, das die class="header" auf display:none" setzt.
Da mein Template _auch_ eine Klasse "header" hat, gift es hier Wickel.
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #14 on: August 02, 2010, 03:18:02 PM »
So, jetzt hab ich soweit reinhehängt.

Sollte da etwas in einem Fensterchen aufgehen? Ich habe einfach nur Links direkt ins Backend.
Was genau muss da jetzt eigentlich im Header stehen? register_frontend_m odfiles('jquery'); auch? Noch was?
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #15 on: August 02, 2010, 03:29:34 PM »
Ein Fensterchen geht nur auf, wenn in den Admin-Tools (Verwaltungsprogramm e » Frontend Edit) "Ändern jeden Abschnitts:" und "Pop-ups oder Overlays:" auf Anzeigen steht - per Standard ist das einmal deaktiviert.
register_frontend_m odfiles('jquery'); sollte da stehen, wenn man (seit WB 2.8.1) eben auf die WB eigene Lösung setzen will. Das war es dann auch - halt noch <?php frontend_edit(); ?> in der index.php vom Template, aber das steht auch schon mal in den Admin-Tools.

Gruß Michael
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #16 on: August 02, 2010, 03:53:52 PM »
Ich kanns drehen und wenden, wie ich will: Es geht kein Fenster auf. Ich komme immer nur direkt ins Backend.
Hast du mal ein template, bei dem es funktionieren sollte?
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #17 on: August 02, 2010, 04:23:41 PM »
Aber so nebenbei:
Dass das Fenster nach Aktionen verschwindet und man im Backend landet hat einen banalen Grund: Target="_top".
Das steckt im Admin-Template so drin. success.htt
Und ein paar andere Stellen, je nach Modul.

Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #18 on: August 02, 2010, 05:52:32 PM »
Hmm - da könnte man jetzt herumrätseln, ich habe es extra noch auf einer anderen Seite (anderer Server, anderes PHP, andere WB Version, anderes Template...) installiert. Die eine verwendet andreas00 Template (aber stark angepasst), die andere das round aus der aktuellen SVN.
Es sollte aber grundsätzlich nichts mit dem Template zu tun haben. Hast du denn bei jeder Section einen Button oder nur oben in einer Reihe?
Wenn nicht wäre es sinnvoll, dass du einmal im Seitenquelltext nachguckst.
- Führt die Suche nach "nyromodal" zu Ergebnissen? Sie sollten in einem JavaScript Code stehen.
- Gibt es einen Link wie "admin/pages/modify.php?page_id=1&amp;wysiwyg=51" im jQuery / JavaScript Code?

Das mit dem target="_top" muss ich mir mal angucken. Soweit hab ich dann doch nicht gedacht. Solche Sachen kann man aber mit jQuery abschalten - nyromodal (das Overlay-Modul) hat so viele Funktionen, ich muss mich hier erst einmal halbwegs durchbeißen.

Dass das .header ausgeschaltet wird, war ein Denkfehler meinerseits. Das Komma schließt ja alles ab. Kann man umgehen, in dem man aus
div#nyroModalWrapper .menu, .header { display: none; }
eben
div#nyroModalWrapper .menu, div#nyroModalWrapper .header { display: none; }
macht.
Das ganze bewirkt, dass im neuen Fenster eben das Menu & der ganze Header aus dem WB-Backend verschwindet, und so wesentlich weniger Probleme auftreten (sollten), und - wenn Edit_One_Section eben auf "true" gesetzt ist im WB-Framework man sogar erstmal einen Eindruck bekommt, wie "echtes" Frontend-Edit aussehen könnte. Die CSS für das Fenster wird übrigens aus dem Frontend - nicht aus dem Backend hierfür genommen.

Gruß Michael
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #19 on: August 02, 2010, 06:07:09 PM »
Naja, natürlich hat es was mit dem Template zu tun, wenns nicht funktioniert. Hängt ja davon ab, wie der ganze jQuery-Krempel eingebunden ist.
Wenns einfach nicht funktioniert, sucht man sich da zum Krüppel.
Logged

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #20 on: August 02, 2010, 07:09:49 PM »
Gut.
Sektion-Anker (WB Optionen!) ist auf Standard "wb_" eingestellt.
Meine round index.php:

Code: [Select]
<?php
// prevent this file from being accessed directly
if (!defined(&#39;WB_PATH&#39;)) die(header(&#39;Location: ../../../index.php&#39;));

// TEMPLATE CODE STARTS BELOW
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=<?php 
    
echo defined(&#39;DEFAULT_CHARSET&#39;) ? DEFAULT_CHARSET : &#39;utf-8&#39;; ?>
" />
    <meta name="description" content="<?php page_description(); ?>" />
    <meta name="keywords" content="<?php page_keywords(); ?>" />
    <?php 
    
// automatically include optional WB module files (frontend.css, frontend.js)
    
if (function_exists(&#39;register_frontend_modfiles&#39;)) {
        
register_frontend_modfiles(&#39;css&#39;);
        
register_frontend_modfiles(&#39;jquery&#39;);
        
register_frontend_modfiles(&#39;js&#39;);
    
} ?>

    <link rel="stylesheet" type="text/css" href="<?php 
        
echo TEMPLATE_DIR; ?>
/template.css" media="screen,projection" />
    <link rel="stylesheet" type="text/css" href="<?php 
        
echo TEMPLATE_DIR; ?>
/print.css" media="print" />
    <title><?php page_title(&#39;&#39;, &#39;[WEBSITE_TITLE]&#39;); ?></title>
</head>

<body>

<table cellpadding="0" cellspacing="0" border="0" align="center" class="main" width="750">
<tr>
[...]
    <td class="content" width="600" rowspan="2">
        <?php frontend_edit();
        
page_content(); ?>

    </td>
</tr>
</table>
</body>
</html>

Meine andreas00 index.php:
Code: [Select]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="<?php page_description(); ?>" />
<meta name="keywords" content="<?php page_keywords(); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo TEMPLATE_DIR; ?>/andreas00.css" media="screen,projection" />
<link rel="stylesheet" type="text/css" href="<?php echo WB_URL; ?>/include/jquery/plugins/jquery-ui.css" media="screen,projection" />
<?php
if(function_exists(&#39;register_frontend_modfiles&#39;)) {
  
register_frontend_modfiles(&#39;css&#39;);
} ?>

<title><?php page_title(); ?></title>
<script language="JavaScript" type="text/javascript">
//<![CDATA[
var URL = '<?php print WB_URL ?>';
var WB_URL = '<?php print WB_URL ?>';
var TEMPLATE_DIR = '<?php print TEMPLATE_DIR ?>';
//]]>
</script>
<script type="text/javascript" src="<?php echo WB_URL;?>/include/jquery/jquery-min.js"></script>
<script type="text/javascript" src="<?php echo WB_URL;?>/include/jquery/jquery-ui-min.js"></script>
<script type="text/javascript" src="<?php echo WB_URL;?>/include/jquery/jquery-insert.js"></script>
<?php
if(function_exists(&#39;register_frontend_modfiles&#39;)) {
  
register_frontend_modfiles(&#39;js&#39;);
} ?>

</head>

<body>
<div id="wrap">
[...]
<?php ob_start();     // start output buffer
frontend_edit();
page_content(2);   // call content
$foo=ob_get_contents();    // put outputbuffer in $foo
ob_end_clean();             // clear outputbuffer
[...]
?>


</div>
</body>
</html>

Die zweite ist die "kein register_modfiles.j query Lösung, da WB 2.8.0.
Die erste ist die komfortable >= WB 2.8.1er.

Wichtig ist die Reihenfolge im <head>
1.) Alles CSS
2.) Alles jQuery
3.) Alles JavaScript

Gruß Michael
« Last Edit: August 02, 2010, 07:17:29 PM by Waldschwein »
Logged

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: Alle Section_IDs einer Seite auflisten
« Reply #21 on: August 02, 2010, 08:10:05 PM »
Hallo Michael,

ziemlich cooler Ansatz.

Ich habe nicht viel Zeit zum Testen, aber ansatzweise funktioniert es.

Einfach als Feedback:

Die Sections lassen sich eineln in einem "Modal" aufmachen und editieren. Beim Klick auf "Abbruch", komme ich zurück auf die Seite - Beim Klick auf "Speichern", komme ich (leider) ins Backend, nachdem die Modal-Box verschwunden ist.

Leider wird auch nicht ALLES aus dem Backend_Theme in der Modal-Box Ansicht rausgefiltert (siehe ScreenShot).

Das gefällt mir aber sehr vom Ansatz her!

//EDIT: bei mehreren Sections wird für die Links jeweils die letzte im Array genommen (?)

Gruß,
Stefek

[gelöscht durch Administrator]
« Last Edit: August 02, 2010, 08:14:05 PM by Stefek »
Logged
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Waldschwein

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #22 on: August 02, 2010, 09:19:13 PM »
Hallo Stefek,

danke für das Feedback.
Das mit dem letzten Link im Array ist bekannt - leider hat es bisher an meinen bescheidenen Programmier-Kenntnissen gelegen, dass ich keine Lösung hierfür gefunden habe.
Ich stelle einfach mal einen Codeauszug hier rein, evtl. kennt jemand die Lösung dazu.
Code: [Select]
<?php
if (!function_exists(&#39;sections_on_page&#39;))
    
{
    function 
sections_on_page()
        {
        global 
$wb, $database, $HEADING;

        if (
$wb->is_authenticated())
            {
            
$is_admin=false;
            
$page_id =PAGE_ID == 0 ? $wb->default_page_id : PAGE_ID;
            
$sql     =&#39;SELECT `section_id`, `block`, `module` FROM `&#39; . TABLE_PREFIX . &#39;sections`&#39;;
            
$sql    .=&#39;WHERE `page_id` = &#39; . $page_id . &#39; ORDER BY `position`&#39;;
            
$sect_set=$database->query($sql);

            while (
$sections=$sect_set->fetchRow())
                {
                
$section_array[]=$sections[&#39;section_id&#39;];
                
}

            return 
$section_array;
            }
        }
    }

if (!
function_exists(&#39;fedit_jq_section_edit&#39;))
    
{
    function 
fedit_jq_section_edit()
 [...]
                {
                
$fedit_jq=WB_PATH . &#39;/modules/frontend_edit/frontend_snippet/fedit_jq_overlay.js&#39;;
                
}
[...]

            if (
file_exists($fedit_jq))
                {
                
$get_jq_file     =get_fedit_file($fedit_jq);
                
$feditget_section=&#39;<script type="text/javascript">&#39; . $get_jq_file . &#39;</script>&#39;;
                
$section_array   =sections_on_page();
                
$fedit_section   =$feditget_section;
                
$store_modify    =&#39;&#39;;

                
foreach ($section_array as &$value)
                    {
                    
$store_modify
                        
= &#39;<a href="&#39; . ADMIN_URL . &#39;/pages/modify.php?page_id=&#39; . $page_id . &#39;&amp;wysiwyg=&#39; . $value
                        
. &#39;" class="fbox" title="&#39; . $HEADING[&#39;MODIFY_PAGE&#39;] . &#39;: &#39; . $value . &#39;"><img src="&#39; . WB_URL
                        
. &#39;/modules/frontend_edit/images/edit_16.png" alt="&#39; . $HEADING[&#39;MODIFY_PAGE&#39;] . &#39;" /></a>&#39;;
                    
unset ($value);
                    }

                foreach (
$section_array as &$value)
                    {
                    
$fedit_replace = str_replace(&#39;replace&#39;, $store_modify, $fedit_section);
                    
return $fedit_replace;
                    }
                }
            }
        }
    }
?>


In der fedit_jq_overlay.js ist folgener jQ-Code:

Code: [Select]
if (jQuery) {
    jQuery(document).ready(function() {
        if($(".section_anchor").length) {
            $(".section_anchor").after('replace');
 // ++++ Das ist das Replace in der PHP Datei, das per str_replace ersetzt wird ++++
        };
[...]
    });
};

Der Klick auf das Speichern ist noch ein kleines Problem - ich werde auf jeden Fall rumbasteln, in der Priorität 1.) Backend-Theme unabhängig -> wenn es nicht geht 2.) Einbinden von einer kleinen Datei in das Backend-Header oder in den jQuery Ordner des Backend-Themes. Auf jeden Fall mal den Tipp von chio ausprobieren mit dem target.

Gruß Michael
Logged

chio

  • Guest
Re: Alle Section_IDs einer Seite auflisten
« Reply #23 on: August 03, 2010, 10:59:45 AM »
Code: [Select]
$sql     ='SELECT `section_id`, `block`, `module` FROM `' . TABLE_PREFIX . 'sections`';
            $sql    .='WHERE `page_id` = ' . $page_id . ' ORDER BY `position`';
Meine rudimentären SQL Kenntnisse sagen mir, dass nach SELECT auch position stehen muss und dass bei  ORDER BY `position` die Gänsefüßchen weg müssen.
Logged

Offline Luisehahne

  • WebsiteBaker Org e.V.
  • **
  • Posts: 4548
  • Gender: Male
Re: Alle Section_IDs einer Seite auflisten
« Reply #24 on: August 03, 2010, 11:05:44 AM »
Zur Info!

Quote
Meine rudimentären SQL Kenntnisse sagen mir, dass nach SELECT auch position stehen muss und dass bei  ORDER BY `position` die Gänsefüßchen weg müssen.

Sind keine Gänsefüsschen sondern sogannte Backticks. (identifier quote character)

zum Nachlesen
http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Dietmar
Logged
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

  • Print
Pages: [1] 2   Go Up
  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.8.x) »
  • General Help & Support »
  • Hilfe & Support (deutsch) »
  • Diskussion über WB (closed) »
  • Alle Section_IDs einer Seite auflisten
 

  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2