Seite 1 von 1
Smileys global verfügbar machen
Verfasst: 27.02.2009 17:49
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^^
Re: Smileys global verfügbar machen
Verfasst: 28.02.2009 00:34
von aurora876
es reicht nicht, das html zu kopieren, das php muß auch mit

Re: Smileys global verfügbar machen
Verfasst: 28.02.2009 11:27
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);
Re: Smileys global verfügbar machen
Verfasst: 28.02.2009 11:50
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
Re: Smileys global verfügbar machen
Verfasst: 02.03.2009 15:15
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:
- 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();
}
}
?>
- 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();
}
}
mitCode: 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.
- 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
Re: Smileys global verfügbar machen
Verfasst: 14.05.2009 10:05
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