[討論] 誰能將「表情符號」整合進「個性簽名編輯外掛」中

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
ayaya
星球公民
星球公民
文章: 128
註冊時間: 2004-09-04 18:27

[討論] 誰能將「表情符號」整合進「個性簽名編輯外掛」中

文章 ayaya »

問題外掛:signature editor 1.0.0 (個性簽名編輯外掛含預覽功能)
參考連結: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檔,把表情符號也整合進來嗎??感激不盡…
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

[加油]

文章 心靈捕手 »

這個外掛的作者, 點出了一個改良的方向;
但是他的編輯介面, 的確有很大的改進空間.

您能夠把簽名檔的編輯頁面弄得和編輯文章一樣,
的確是難能可貴.

很抱歉! 不能給您實質的幫助,
只是來給您打打氣.
祝 早日成功! :-)
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
ayaya
星球公民
星球公民
文章: 128
註冊時間: 2004-09-04 18:27

文章 ayaya »

感謝您的祝福…\r

我仔細地推敲了一下posting.php,posting_body.tpl,function_post.php這幾個檔後,

居然被我誤打誤裝地試出來了 :-P

現在已經成功整合了「更多表情符號」的連結…\r

不過inline的表情符號仍要一個一個慢慢加,

但是用檢視原始檔然後複製過來也蠻快的…\r

所以我的問題可以說已經解決了,只是看看這裡有沒有好心人再改良一下而已…\r

不過顯然高手都在閒聊哈啦區討論比較多 ;-)
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

ayaya 寫:居然被我誤打誤裝地試出來了 :-P
您實在是太謙虛了!

如果方便的話, 是否可以貼出來給大家分享呢? ;-)
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
ayaya
星球公民
星球公民
文章: 128
註冊時間: 2004-09-04 18:27

文章 ayaya »

心靈捕手 寫: 您實在是太謙虛了!

如果方便的話, 是否可以貼出來給大家分享呢? ;-)
我是真的隨便亂弄的,因為我根本不懂php

不知道會有什麼問題,不過至少現在還沒發現 ;-)

以下的方法你就姑且試試,記得備份!

首先,先照原外掛的安裝指示安裝,裝完後再追加下面的修改:

一、擴充bbcode

1.把posting_body.tpl頁首的<script>到</script>這一整段javascript複製一份到profile_signature.tpl

2.把該段語法中的

post 全部改為 preview

message 全部改為 signature

3.把posting_body.tpl中bbcode的html語法(也就是input select這些標籤)複製過來

蓋掉原本在profile_signature.tpl中bbcode的html語法

同樣的,該段語法中的 message 也要改成 signature

(signature 就是 textarea 的 name 也就是 onclick 和 onchange 的目標)

4.在 usercp_signature.php 中加入所有bbcode需要用到的變數\r

這些變數可從posting.php複製過來,

就是在 "$template->assign_vars(array(" 後面像

'L_BBCODE_B_HELP' => $lang['bbcode_b_help'], 這樣的語法

原本的 usercp_signature.php 中已經有一些了,你可以把它蓋掉


二、加入表情符號(inline部份)

1.進到po文頁面按右鍵檢視原始檔,把表情符號那段複製到profile_signature.tpl裡即可\r

(就是\r

代碼: 選擇全部

<td><img src="images/smiles/m25.gif" border="0" onmouseover="this.style.cursor='hand';" onclick="emoticon('(m25)');" alt="" title="" /></a></td> 
這些插入圖片的html標籤語法)


三、加入「更多表情符號」連結 (window)

(一)打開function_post.php

找到\r

代碼: 選擇全部

//
// 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);
	}
}
將這一整段複製並就貼在該段的後面,

然後把其中的 function generate_smilies

改成 function generate_smilies2

其中的 posting_smilies.tpl

改成 posting_smilies2.tpl

其中的 posting.$phpEx?mode=smilies

改成 posting.$phpEx?mode=smilies2

(同理,以後若那個地方還需要整合表情符號就依樣畫葫蘆,

也就是再複製一份該段語法貼在後面,然後上述加上的數字 2 換成 3 就可以了)

(二)打開posting

找到\r

else if ( $mode == 'smilies' )
{
generate_smilies('window', PAGE_POSTING);
exit;
}

同樣的,將這一段語法複製一份並就貼在後面,

然後把 $mode == 'smilies'

改成 $mode == 'smilies2'

把 generate_smilies

改成 generate_smilies2

(同理,以後若那個地方還需要整合表情符號就依樣畫葫蘆,

也就是再複製一份該段語法貼在後面,然後把上述加上的數字 2 換成 3 就可以了)

(三)將posting_smilies.tpl這個檔案複製並取名為posting_smilies2.tpl放在原資料夾

接著,同樣的,把posting_smilies2.tpl裡前面那段javascript

中的 post 改為 preview

message 改為 signature

(同理,以後若那個地方還需要整合表情符號就依樣畫葫蘆,

也就是再複製一份posting_smilies.tpl,然後把檔名加上 3 就可以了)

(四)打開profile_signature.tpl

在那些inline表情符號的後面加上

<a href="{U_MORE_SMILIES}" onclick="window.open('{U_MORE_SMILIES}', '_phpbbsmilies', 'HEIGHT=250,resizable=yes,scrollbars=yes,WIDTH=300');return false;" target="_phpbbsmilies">{L_MORE_SMILIES}</a>

(五)打開usercp_signature.php

在裡面加入\r

'L_MORE_SMILIES' => $lang['More_emoticons'],
'U_MORE_SMILIES' => append_sid("posting.$phpEx?mode=smilies2"),


我的改法大概就是這樣,希望我沒漏掉什麼,因為我改了很多次才成功的(ro13)
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

ayaya 寫:二、加入表情符號(inline部份)
1.進到po文頁面按右鍵檢視原始檔,把表情符號那段複製到profile_signature.tpl裡即可\r
感謝您的分享! :-D \r

我也已經安裝成功, 如下圖:
圖檔

非常佩服您的功力!
尤其是上述"引言"的部分, 更是神奇! (:Y)

ps. 您的解說已經非常的詳細!
以下只是錦上添花:
usercp_signature.php
可以增加
'L_EMOTICONS' => $lang['Emoticons'],
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
~Why~
星球普通子民
星球普通子民
文章: 10
註冊時間: 2004-09-23 16:14

[討論]

文章 ~Why~ »

感謝ayaya的分享, 我也成功裝上了,只是覺得有些問題存在:
ayaya 寫:
二、加入表情符號(inline部份)

1.進到po文頁面按右鍵檢視原始檔,把表情符號那段複製到profile_signature.tpl裡即可\r

(就是\r

代碼: 選擇全部

<td><img src="images/smiles/m25.gif" border="0" onmouseover="this.style.cursor='hand';" onclick="emoticon('(m25)');" alt="" title="" /></a></td> 
這些插入圖片的html標籤語法)
用這種方式是能加入表情符號,但要是更改了表情符號,那這一部分就要重做了,有沒有辦法可以做到像po文頁那樣呢?

在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}是在哪裡定義的?應該如何定義?
請各位大大有空教教!

代碼: 選擇全部

<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>
ayaya
星球公民
星球公民
文章: 128
註冊時間: 2004-09-04 18:27

Re: [討論]

文章 ayaya »

~Why~ 寫: 用這種方式是能加入表情符號,但要是更改了表情符號,那這一部分就要重做了,有沒有辦法可以做到像po文頁那樣呢?
進到po文頁面按右鍵檢視原始檔,並複製該段程式碼很快就可完成不是嗎?
何況表情符號怎麼會常常變更呢? ;-)
~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}是在哪裡定義的?應該如何定義?
請各位大大有空教教!
我想可能是在function_post.php和posting.php控制的…\r

如果有興趣的話可能要去研究一下php了…\r

竹貓目前很缺乏會php、熱心、且表達能力又好的人…\r

以後就要靠你囉 :-P
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8547
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [討論]

文章 心靈捕手 »

ayaya 寫:進到po文頁面按右鍵檢視原始檔,並複製該段程式碼很快就可完成不是嗎?
何況表情符號怎麼會常常變更呢? ;-)
我非常贊同您的說法!

假使真的有變更表情符號,
只要在 images/smiles/ 底下的檔案沒有刪除的話,
還是可以正常顯示舊的表情符號,
如果要跟著變更的話,
那麼只要再次複製該段程式碼即可.

您的修改方法,
個人以為還有一個最大的"附加價值",
那就是您所謂的
同理,以後若那個地方還需要整合表情符號就依樣畫葫蘆,
也就是再複製一份該段語法貼在後面,然後上述加上的數字 2 換成 3 就可以了


原本我安裝的外掛 Nickpage_Mod_1.3c,
其中的"留言"編輯頁面,
本來也沒有表情符號,
後來就是依您的方法, 自行加上去的. 如下圖:
圖檔

感謝您教導我們釣魚的方法! :-D
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
竹貓忠實會員
竹貓忠實會員
文章: 1058
註冊時間: 2003-05-15 00:30
來自: Game.Hack-遊戲駭客
聯繫:

文章 »

現在很少有人會回答這類問題...(會的怕給自己找麻煩;而不會的...就不會瞜~)


表情符號的方向是對的...但做法是錯的...

第一...基本上MOD是USER開發出來的附加模組...若有需要動到相容性的整合...應以官方原碼為基準...(在開發時...也應以官方為基準)

第二...我覺得看不看的懂原碼到是其次(我很多也看不懂...要翻書才知道那是在幹啥的...)基本上大多我都是用猜的...再不然就是直接把它CODE截出來獨立執行...

第三...我覺得這支簽名編輯外掛寫的蠻亂的...我之前有裝過PCP...但是當我看到這支外掛時...我卻再次傻眼...-.-a 有興趣的自己研究看看吧...(這支減肥的空間有2~4kb吧~)

重點修改部分我講一下...其他小地方就給ayaya補充吧...


程式部分
==============
usercp_signature.php 風格輸出前+上

代碼: 選擇全部

//讀入表情
generate_smilies('inline', PAGE_POSTING);
風格部份
==============
在profile_signature.tpl 任意位置(後面補充)

代碼: 選擇全部

<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>
因為我個人習慣風格檔自己再重寫一遍...所以我這邊就不再多做說明!

重點我講出來了...其他就請各位自己活用吧~

ps:我第一條所說的...其實就是針對JS的事件目標...這邊就請ayaya補充吧...
有事問問題,沒事答問題。
廣告不是這樣打滴!遊戲駭客
主題已鎖定

回到「外掛問題討論」