WebsiteBaker Support (2.8.x) > Diskussion über WB (closed)

Alle Section_IDs einer Seite auflisten

<< < (5/9) > >>

Waldschwein:
Gut.
Sektion-Anker (WB Optionen!) ist auf Standard "wb_" eingestellt.
Meine round index.php:


--- Code: ---<?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>
--- End code ---

Meine andreas00 index.php:

--- Code: ---<!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>

--- End code ---

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

Stefek:
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]

Waldschwein:
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: ---<?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;
                    }
                }
            }
        }
    }
?>

--- End code ---

In der fedit_jq_overlay.js ist folgener jQ-Code:


--- Code: ---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 ++++
        };
[...]
    });
};

--- End code ---

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

chio:

--- Code: ---$sql     ='SELECT `section_id`, `block`, `module` FROM `' . TABLE_PREFIX . 'sections`';
            $sql    .='WHERE `page_id` = ' . $page_id . ' ORDER BY `position`';
--- End code ---
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.

Luisehahne:
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.
--- End quote ---

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

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version