Smileys global verfügbar machen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Kerwindena

Smileys global verfügbar machen

Beitrag von Kerwindena »

hallo,
ich bin gerade dabei einen chat in das template meines phpBB3 Systems einzubauen. zu diesem zweck hätte ich es gerna das in diesem feld automatisch die phpBB smyles verwendet würden... mit ner schleife a la <!-- BEGIN smiley --> geht das auf einigen seiten auch ganz gut... problem sind halt nur die seiten wo standartmäßig keine smileys drauf sind... in diesem fall wird die funktion ja nicht aufgerufen.... ich kenn mich zwar gutgenug mit php aus um das problem selbst zu lösen aber in der praxis scheitert es dann daran, dass ich mich zu wenig mit der doch recht komplexen datenstruktur von phpBB. ums kurz zu sagen ist mir noch nicht ganz klar, was ich wo ändern muss damit ich die oben genannte schleife auf jeder seite im template benutzen kann... wäre nett, wenn mir jemand sagt was ich ändern muss, beziehungsweise welche dateien dafür relevant sind.... so such ich mich ja dumm und dämlich...
mfg,
Kerwindena

PS.: ja ich habe Google und die SuFu benutzt^^
aurora876
Ehemaliger Übersetzer
Beiträge: 1600
Registriert: 30.08.2008 20:41

Re: Smileys global verfügbar machen

Beitrag von aurora876 »

es reicht nicht, das html zu kopieren, das php muß auch mit ;)
There are 10 types of people in the world: Those who understand binary and those who don't. :D

Support Toolkit in Deutsch
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Smileys global verfügbar machen

Beitrag von nickvergessen »

Das müsste vermutlich reichen...

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
$template->assign_vars(array(
	'SMILIES_STATUS'		=> (($config['allow_bbcode'] && $config['allow_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],
	'S_SMILIES_ALLOWED'		=> $smilies_status,
));

// Build smilies array
generate_smilies('inline', 0);
kein Support per PN
Kerwindena

Re: Smileys global verfügbar machen

Beitrag von Kerwindena »

so das hilft mir schon ein wenig weiter danke...nur noch 2 sachen:
1. syntaxfehler... hast vergessen eine klammer zuzumachen

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
$template->assign_vars(array(
   'SMILIES_STATUS'      => (($config['allow_bbcode'] && $config['allow_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF']),
   'S_SMILIES_ALLOWED'      => $smilies_status,
));

// Build smilies array
generate_smilies('inline', 0);
aber das ist net weiter schlimm^^
2. nur wo genau muss ich das einfügen? weil auf jeder einzelnen seite einbinden möchte ich nicht weil ich dann irgendwo es vergesse und es dann doch net überall geht.... in der common.php macht ers aber nicht mehr wenn ich auf die postig seite gehe, weil er dann die funktionen doppelt läd.... common wäre mir aber lieber... weiß denn wer auf welchen seiten die "includes/functions_posting.php" noch includirt wird oder also außer in der posting.php damit ichs dort rauswerfen kann????

mfg,
Kerwindena
Kerwindena

Re: Smileys global verfügbar machen

Beitrag von Kerwindena »

so habs jetzt thx an alle, die mir geholfen haben....
so für alle, die wie ich vergeblich nach einer lösung gesucht haben:
  1. neue datei im includes/ ordner anlegen: functions_posting_smileys.XXX (xxx durch dateiendung ersetzen)

    Code: Alles auswählen

    <?php
    /** 
    *
    * @package phpBB3
    * @version $Id: functions_posting.php,v 1.262 2007/07/25 16:06:10 acydburn Exp $
    * @copyright (c) 2005 phpBB Group 
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
    *
    */
    
    /**
    * Fill smiley templates (or just the variables) with smilies, either in a window or inline
    */
    function generate_smilies($mode, $forum_id)
    {
    	global $auth, $db, $user, $config, $template;
    	global $phpEx, $phpbb_root_path;
    
    	if ($mode == 'window')
    	{
    		if ($forum_id)
    		{
    			$sql = 'SELECT forum_style
    				FROM ' . FORUMS_TABLE . "
    				WHERE forum_id = $forum_id";
    			$result = $db->sql_query_limit($sql, 1);
    			$row = $db->sql_fetchrow($result);
    			$db->sql_freeresult($result);
    		
    			$user->setup('posting', (int) $row['forum_style']);
    		}
    		else
    		{
    			$user->setup('posting');
    		}
    
    		page_header($user->lang['SMILIES']);
    
    		$template->set_filenames(array(
    			'body' => 'posting_smilies.html')
    		);
    	}
    
    	$display_link = false;
    	if ($mode == 'inline')
    	{
    		$sql = 'SELECT smiley_id
    			FROM ' . SMILIES_TABLE . '
    			WHERE display_on_posting = 0';
    		$result = $db->sql_query_limit($sql, 1, 0, 3600);
    
    		if ($row = $db->sql_fetchrow($result))
    		{
    			$display_link = true;
    		}
    		$db->sql_freeresult($result);
    	}
    
    	$last_url = '';
    
    	$sql = 'SELECT *
    		FROM ' . SMILIES_TABLE . 
    		(($mode == 'inline') ? ' WHERE display_on_posting = 1 ' : '') . '
    		ORDER BY smiley_order';
    	$result = $db->sql_query($sql, 3600);
    
    	$smilies = array();
    	while ($row = $db->sql_fetchrow($result))
    	{
    		if (empty($smilies[$row['smiley_url']]))
    		{
    			$smilies[$row['smiley_url']] = $row;
    		}
    	}
    	$db->sql_freeresult($result);
    
    	if (sizeof($smilies))
    	{
                    $template->destroy_block_vars('smiley');
    		foreach ($smilies as $row)
    		{
    			$template->assign_block_vars('smiley', array(
    				'SMILEY_CODE'	=> $row['code'],
    				'A_SMILEY_CODE'	=> addslashes($row['code']),
    				'SMILEY_IMG'	=> $phpbb_root_path . $config['smilies_path'] . '/' . $row['smiley_url'],
    				'SMILEY_WIDTH'	=> $row['smiley_width'],
    				'SMILEY_HEIGHT'	=> $row['smiley_height'],
    				'SMILEY_DESC'	=> $row['emotion'])
    			);
    		}
    	}
    
    	if ($mode == 'inline' && $display_link)
    	{
    		$template->assign_vars(array(
    			'S_SHOW_SMILEY_LINK' 	=> true,
    			'U_MORE_SMILIES' 		=> append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id))
    		);
    	}
    
    	if ($mode == 'window')
    	{
    		page_footer();
    	}
    }
    ?>
  2. im includes/ ordner die functions_posting_.XXX die stelle

    Code: Alles auswählen

    /** 
    *
    * @package phpBB3
    * @version $Id: functions_posting.php,v 1.262 2007/07/25 16:06:10 acydburn Exp $
    * @copyright (c) 2005 phpBB Group 
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
    *
    */
    
    /**
    * Fill smiley templates (or just the variables) with smilies, either in a window or inline
    */
    function generate_smilies($mode, $forum_id)
    {
    	global $auth, $db, $user, $config, $template;
    	global $phpEx, $phpbb_root_path;
    
    	if ($mode == 'window')
    	{
    		if ($forum_id)
    		{
    			$sql = 'SELECT forum_style
    				FROM ' . FORUMS_TABLE . "
    				WHERE forum_id = $forum_id";
    			$result = $db->sql_query_limit($sql, 1);
    			$row = $db->sql_fetchrow($result);
    			$db->sql_freeresult($result);
    		
    			$user->setup('posting', (int) $row['forum_style']);
    		}
    		else
    		{
    			$user->setup('posting');
    		}
    
    		page_header($user->lang['SMILIES']);
    
    		$template->set_filenames(array(
    			'body' => 'posting_smilies.html')
    		);
    	}
    
    	$display_link = false;
    	if ($mode == 'inline')
    	{
    		$sql = 'SELECT smiley_id
    			FROM ' . SMILIES_TABLE . '
    			WHERE display_on_posting = 0';
    		$result = $db->sql_query_limit($sql, 1, 0, 3600);
    
    		if ($row = $db->sql_fetchrow($result))
    		{
    			$display_link = true;
    		}
    		$db->sql_freeresult($result);
    	}
    
    	$last_url = '';
    
    	$sql = 'SELECT *
    		FROM ' . SMILIES_TABLE . 
    		(($mode == 'inline') ? ' WHERE display_on_posting = 1 ' : '') . '
    		ORDER BY smiley_order';
    	$result = $db->sql_query($sql, 3600);
    
    	$smilies = array();
    	while ($row = $db->sql_fetchrow($result))
    	{
    		if (empty($smilies[$row['smiley_url']]))
    		{
    			$smilies[$row['smiley_url']] = $row;
    		}
    	}
    	$db->sql_freeresult($result);
    
    	if (sizeof($smilies))
    	{
    		foreach ($smilies as $row)
    		{
    			$template->assign_block_vars('smiley', array(
    				'SMILEY_CODE'	=> $row['code'],
    				'A_SMILEY_CODE'	=> addslashes($row['code']),
    				'SMILEY_IMG'	=> $phpbb_root_path . $config['smilies_path'] . '/' . $row['smiley_url'],
    				'SMILEY_WIDTH'	=> $row['smiley_width'],
    				'SMILEY_HEIGHT'	=> $row['smiley_height'],
    				'SMILEY_DESC'	=> $row['emotion'])
    			);
    		}
    	}
    
    	if ($mode == 'inline' && $display_link)
    	{
    		$template->assign_vars(array(
    			'S_SHOW_SMILEY_LINK' 	=> true,
    			'U_MORE_SMILIES' 		=> append_sid("{$phpbb_root_path}posting.$phpEx", 'mode=smilies&f=' . $forum_id))
    		);
    	}
    
    	if ($mode == 'window')
    	{
    		page_footer();
    	}
    }
    mit

    Code: Alles auswählen

    /** 
    *
    * @package phpBB3
    * @version $Id: functions_posting.php,v 1.262 2007/07/25 16:06:10 acydburn Exp $
    * @copyright (c) 2005 phpBB Group 
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
    *
    */
    
    /**
    * Fill smiley templates (or just the variables) with smilies, either in a window or inline
    */
    include_once($phpbb_root_path . 'includes/functions_posting_smileys.' . $phpEx);
    
    ersetzen.
  3. in der config.XXX im phpbb-root am ende, direkt vor dasdas hier:

    Code: Alles auswählen

    include_once($phpbb_root_path . 'includes/functions_posting_smileys.' . $phpEx);
    $template->assign_vars(array(
       'SMILIES_STATUS'      => (($config['allow_bbcode'] && $config['allow_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF']),
       'S_SMILIES_ALLOWED'      => $smilies_status,
    ));
    // Build smilies array
    generate_smilies('inline', 0);
    
    einfügen.
Hoffe, dass dies irgendjemandem weiterhilft....

also von mir aus [closed]

mfg,
Kerwindena
Trash-Master
Mitglied
Beiträge: 211
Registriert: 13.11.2008 21:13

Re: Smileys global verfügbar machen

Beitrag von Trash-Master »

Soweit ist das ja alles ganz praktisch und ich würde das auch gerne anwenden, wenn ich nicht dann an der entsprechenden Stelle (der Mypage (Mod) Editor im UCP) immer diesen Fehler kriegen würde:

Code: Alles auswählen

Fatal error: Call to a member function assign_vars() on a non-object in /home/www/**********/phpbb3/config.php on line 20
Da wo die Smilies aber schon vor der Änderung funktionierten, funktionieren sie auch weiterhin.

Kann jemand helfen?

lg,
TrashMaster
phpBB Version: 3.0.5
Style: Prosilver, Prosilver SE
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“