Seite 2 von 2

Verfasst: 06.10.2008 16:21
von gn#36
Kannst du das Modul denn überhaupt irgendwo installieren?
Wenn nein ist die Info Datei vermutlich nicht ganz so wie sie sein sollte.
Hast du diese Datei korrekt angelegt (includes/acp/info/acp_foo.php):

Code: Alles auswählen

class acp_foo_info
{
    function module()
    {
        return array(
            'filename'    => 'acp_foo',
            'title'        => 'ACP_FOO',
            'version'    => '1.2.3',
            'modes'        => array(
                'index'        => array('title' => 'ACP_FOO_INDEX_TITLE', 'auth' => 'acl_a_foo_auth', 'cat' => array('')),
            ),
        );
    }

    function install()
    {
    }

    function uninstall()
    {
    }
}
Vielleicht verlinkst du mal die Moduldateien?

Verfasst: 06.10.2008 21:23
von veNom-at
Meine info Datei sieht so aus:
includes/acp/info/acp_news.php

Code: Alles auswählen

<?php
class acp_news_info
{
    function module()
    {
        return array(
            'filename'   => 'acp_news',
            'title'      => 'ACP_NEWS',
            'version'    => '1.0.0',
            'modes'      => array(
                'index'  	=> array('title' => 'ACP_NEWS_INDEX_TITLE', 'auth' => 'acl_a_foo_auth', 'cat' => array('')),
				'input'  	=> array('title' => 'ACP_NEWS_INPUT_TITLE', 'auth' => 'acl_a_foo_auth', 'cat' => array('')),
				'sendsql'  	=> array('title' => 'ACP_NEWS_SQL_TITLE', 'auth' => 'acl_a_foo_auth', 'cat' => array('')),
            ),
        );
    }

    function install()
    {
    }

    function uninstall()
    {
    }
}

?>
includes/acp/acp_news.php

Code: Alles auswählen

<?php

class acp_news
{
   var $u_action;
   var $new_config;
   function main($id, $mode)
   {
      global $db, $user, $auth, $template;
      global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
      $user->add_lang('mods/info_acp_news');
      switch($mode)
      {
         case 'index':
            $this->page_title = 'ACP_NEWS';
            $this->tpl_name = 'acp_news';
            break;
			
         case 'input':
			$this->page_title = 'ACP_NEWS_INPUT';
			$this->tpl_name = 'acp_news_input';
            break;
      }

   }
}

?>
Derzeit steht mein PHP Code der Funktion noch in der Templatefile, was ja leider nicht funktioniert, da nur HTML unterstützt wird. Soweit ich das verstanden habe gehört der PHP Code auch in die "includes/acp/acp_news.php". allerdings habe ich dann ein Problem mit der Ausgabe meiner Variablen, dazu bräuchte ich Variablen in dieser Art "{VARIABLE}", habe aber noch nicht gefunden wie ich diese anlegen kann.

Eine meiner Template Dateien:
acp_news.php

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
$phpbb_root_path = "./";

include($phpbb_root_path . "config.php");

$connect = @mysql_pconnect($dbhost, $dbuser, $dbpasswd);
	if ($connect == FALSE) {
		echo "keine verbindung zur Datenbank möglich";
		exit();
	}
mysql_select_db($dbname);

if(isset($_GET['delete'])) {
	$loeschen = "DELETE FROM phpbb_news WHERE ID='".$_GET["delete"]."'";
	mysql_query($loeschen) or die(mysql_error());
	echo "Erfolgreich gel&ouml;scht";
}

$selectnews = "SELECT * FROM phpbb_news ORDER BY ID DESC";
$ergebnis = mysql_query($selectnews);
while($row = mysql_fetch_object($ergebnis)) {	
	$news_id = $row->ID;
	$news_title = $row->titel;
	$news_author = $row->autor;
	$news_date = $row->datum;
	$news_text = $row->inhalt;


<div id="news-item">
	<div id="itemleft"><?php echo $news_title; ?></div><div id="itemright">
    <a href="news_input.php?change=<?php echo $news_id; ?>"><img src="<?php echo $phpbb_root_path ."adm/images/icon_edit.gif"; ?>" alt="Bearbeiten" border="0" /></a>
    &nbsp;
    <a href="news_list.php?delete=<?php echo $news_id; ?>"><img src="<?php echo $phpbb_root_path ."adm/images/icon_delete.gif"; ?>" alt="Löschen" border="0" /></div></a>
</div>
}

<!-- INCLUDE overall_footer.html -->
Config und mySQL connect müsste ich dann eigentlich eh auch rausnehmen können.

Verfasst: 06.10.2008 21:48
von gn#36
Ok, du hast meine andere Frage nicht so ganz beantwortet. Die info Datei sieht gut aus (sofern du das Recht a_foo_auth angelegt hast (und nicht acl_a_foo_auth)).

Rein theoretisch kannst du durchaus auch in einem Template PHP Code ausführen, dafür musst du PHP in Templates aktivieren. Günstiger wäre das aber schon das tatsächlich in die Moduldatei zu packen.

Lesestoff: KB:template_system, KB:template_syntax. Die sind zwar für phpBB2, gelten zum Großteil aber noch. Wichtige Neuerungen sind <!-- IF xy --> <!-- INCLUDE xy.html --> mit relativ offenkundiger Bedeutung. Dafür ist assign_vars_from_handle weggefallen (include erledigt ja jetzt das Template).

Verfasst: 08.10.2008 22:49
von veNom-at
Nach einen ziemlichen Rückschlag das ich ausversehen mein Script gelöscht hatte da ich einen Fehler hatte den ich nicht weg bekam und das Forum installierte fange ich diesmal direkt an in PHPBB zu programmieren.

Ich habe versucht wieder das foobar einzubinden, allerdings bekomme ich nun diese Fehlermeldung im ACP

Code: Alles auswählen

Parse error: syntax error, unexpected ')' in G:\xampp\htdocs\forum\includes\functions_module.php(328) : eval()'d code on line 1

Parse error: syntax error, unexpected ')' in G:\xampp\htdocs\forum\includes\functions_module.php(328) : eval()'d code on line 1
[phpBB Debug] PHP Notice: in file /adm/index.php on line 150: Cannot modify header information - headers already sent by (output started at /includes/functions_module.php(328) : eval()'d code:1)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 152: Cannot modify header information - headers already sent by (output started at /includes/functions_module.php(328) : eval()'d code:1)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 153: Cannot modify header information - headers already sent by (output started at /includes/functions_module.php(328) : eval()'d code:1)
[phpBB Debug] PHP Notice: in file /adm/index.php on line 154: Cannot modify header information - headers already sent by (output started at /includes/functions_module.php(328) : eval()'d code:1)
habe bereits gesucht, es wurde auch gelöst, aber niemand hat geschrieben wie es gelöst wurde.