參考連結:http://www.phpbb2.de/dload.php?action=file&file_id=272
phpbb:2.0.10
appserv:2.3.0
問題描述:
想把簽名檔的編輯頁面弄得和po文章一樣,目前只差表情符號了…\r
原外掛擷圖:

目前已把bbcode的部份擴充:

目前想到的笨方法:在profile_signature.tpl裡用html和javascript一個一個慢慢加
有誰能幫我改一下此外掛的PHP檔,把表情符號也整合進來嗎??感激不盡…
版主: 版主管理群


我是真的隨便亂弄的,因為我根本不懂php心靈捕手 寫: 您實在是太謙虛了!
如果方便的話, 是否可以貼出來給大家分享呢?
代碼: 選擇全部
<td><img src="images/smiles/m25.gif" border="0" onmouseover="this.style.cursor='hand';" onclick="emoticon('(m25)');" alt="" title="" /></a></td> 代碼: 選擇全部
//
// Fill smiley templates (or just the variables) with smileys
// Either in a window or inline
//
function generate_smilies($mode, $page_id)
{
global $db, $board_config, $template, $lang, $images, $theme, $phpEx, $phpbb_root_path;
global $user_ip, $session_length, $starttime;
global $userdata;
$inline_columns = 4;
$inline_rows = 9;
$window_columns = 9;
if ($mode == 'window')
{
$userdata = session_pagestart($user_ip, $page_id);
init_userprefs($userdata);
$gen_simple_header = TRUE;
$page_title = $lang['Emoticons'] . " - $topic_title";
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'smiliesbody' => 'posting_smilies.tpl')
);
}
$sql = "SELECT emoticon, code, smile_url
FROM " . SMILIES_TABLE . "
ORDER BY smilies_id";
if ($result = $db->sql_query($sql))
{
$num_smilies = 0;
$rowset = array();
while ($row = $db->sql_fetchrow($result))
{
if (empty($rowset[$row['smile_url']]))
{
$rowset[$row['smile_url']]['code'] = str_replace("'", "\\\'", str_replace('\\\', '\\\\\\\', $row['code']));
$rowset[$row['smile_url']]['emoticon'] = $row['emoticon'];
$num_smilies++;
}
}
if ($num_smilies)
{
$smilies_count = ($mode == 'inline') ? min(19, $num_smilies) : $num_smilies;
$smilies_split_row = ($mode == 'inline') ? $inline_columns - 1 : $window_columns - 1;
$s_colspan = 0;
$row = 0;
$col = 0;
while (list($smile_url, $data) = @each($rowset))
{
if (!$col)
{
$template->assign_block_vars('smilies_row', array());
}
$template->assign_block_vars('smilies_row.smilies_col', array(
'SMILEY_CODE' => $data['code'],
'SMILEY_IMG' => $board_config['smilies_path'] . '/' . $smile_url,
'SMILEY_DESC' => $data['emoticon'])
);
$s_colspan = max($s_colspan, $col + 1);
if ($col == $smilies_split_row)
{
if ($mode == 'inline' && $row == $inline_rows - 1)
{
break;
}
$col = 0;
$row++;
}
else
{
$col++;
}
}
if ($mode == 'inline' && $num_smilies > $inline_rows * $inline_columns)
{
$template->assign_block_vars('switch_smilies_extra', array());
$template->assign_vars(array(
'L_MORE_SMILIES' => $lang['More_emoticons'],
'U_MORE_SMILIES' => append_sid("posting.$phpEx?mode=smilies"))
);
}
$template->assign_vars(array(
'L_EMOTICONS' => $lang['Emoticons'],
'L_CLOSE_WINDOW' => $lang['Close_window'],
'S_SMILIES_COLSPAN' => $s_colspan)
);
}
}
if ($mode == 'window')
{
$template->pparse('smiliesbody');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
}用這種方式是能加入表情符號,但要是更改了表情符號,那這一部分就要重做了,有沒有辦法可以做到像po文頁那樣呢?ayaya 寫:
二、加入表情符號(inline部份)
1.進到po文頁面按右鍵檢視原始檔,把表情符號那段複製到profile_signature.tpl裡即可\r
(就是\r
這些插入圖片的html標籤語法)代碼: 選擇全部
<td><img src="images/smiles/m25.gif" border="0" onmouseover="this.style.cursor='hand';" onclick="emoticon('(m25)');" alt="" title="" /></a></td>
代碼: 選擇全部
<table width="100" border="0" cellspacing="0" cellpadding="5">
<tr align="center">
<td colspan="{S_SMILIES_COLSPAN}" class="gensmall"><b>{L_EMOTICONS}</b></td>
</tr>
<!-- BEGIN smilies_row -->
<tr align="center" valign="middle">
<!-- BEGIN smilies_col -->
<td><a href="javascript:emoticon('{smilies_row.smilies_col.SMILEY_CODE}')"><img src="{smilies_row.smilies_col.SMILEY_IMG}" border="0" alt="{smilies_row.smilies_col.SMILEY_DESC}" title="{smilies_row.smilies_col.SMILEY_DESC}" /></a></td>
<!-- END smilies_col -->
</tr>
<!-- END smilies_row -->
<!-- BEGIN switch_smilies_extra -->
<tr align="center">
<td colspan="{S_SMILIES_COLSPAN}"><span class="nav"><a href="{U_MORE_SMILIES}" onclick="window.open('{U_MORE_SMILIES}', '_phpbbsmilies', 'HEIGHT=300,resizable=yes,scrollbars=yes,WIDTH=250');return false;" target="_phpbbsmilies" class="nav">{L_MORE_SMILIES}</a></span></td>
</tr>
<!-- END switch_smilies_extra -->
</table>
進到po文頁面按右鍵檢視原始檔,並複製該段程式碼很快就可完成不是嗎?~Why~ 寫: 用這種方式是能加入表情符號,但要是更改了表情符號,那這一部分就要重做了,有沒有辦法可以做到像po文頁那樣呢?
我想可能是在function_post.php和posting.php控制的…\r~Why~ 寫: 在posting_body.tpl和posting_smiles.tpl都只是用下面的語句完成,為什麼這樣就可以呢?這裡面的
{smilies_row.smilies_col.SMILEY_CODE},{smilies_row.smilies_col.SMILEY_IMG},{smilies_row.smilies_col.SMILEY_DESC},
{S_SMILIES_COLSPAN}是在哪裡定義的?應該如何定義?
請各位大大有空教教!
我非常贊同您的說法!ayaya 寫:進到po文頁面按右鍵檢視原始檔,並複製該段程式碼很快就可完成不是嗎?
何況表情符號怎麼會常常變更呢?![]()

代碼: 選擇全部
//讀入表情
generate_smilies('inline', PAGE_POSTING);代碼: 選擇全部
<table width="100" border="0" cellspacing="0" cellpadding="5">
<tr align="center">
<td colspan="{S_SMILIES_COLSPAN}" class="gensmall"><b>{L_EMOTICONS}</b></td>
</tr>
<!-- BEGIN smilies_row -->
<tr align="center" valign="middle">
<!-- BEGIN smilies_col -->
<td><a href="javascript:emoticon('{smilies_row.smilies_col.SMILEY_CODE}')"><img src="{smilies_row.smilies_col.SMILEY_IMG}" border="0" alt="{smilies_row.smilies_col.SMILEY_DESC}" title="{smilies_row.smilies_col.SMILEY_DESC}" /></a></td>
<!-- END smilies_col -->
</tr>
<!-- END smilies_row -->
<!-- BEGIN switch_smilies_extra -->
<tr align="center">
<td colspan="{S_SMILIES_COLSPAN}"><spanclass="nav"><a href="{U_MORE_SMILIES}" onclick="window.open('{U_MORE_SMILIES}', '_phpbbsmilies', 'HEIGHT=300,resizable=yes,scrollbars=yes,WIDTH=250');return false;" target="_phpbbsmilies" class="nav">{L_MORE_SMILIES}</a></span></td>
</tr>
<!-- END switch_smilies_extra -->
</table>