หมวดไฟฟ้า/อิเล็กทรอนิกส์/คอมพิวเตอร์ => ห้อง SMF 2.0.X => Programming => ห้องคอมพิวเตอร์ => นานาสาระ SMF => ข้อความที่เริ่มโดย: Auto Man ที่ 20 กรกฎาคม 2562, 14:06:21
-
เพื่อให้กระทู้ดีๆ จะไม่พลาดสำหรับเพื่อนสมาชิกครับ ติดตามไปอ่านกัน
ที่นี่... http://nevikup.blogspot.com/2012/06/smf.html
ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
มาดูการนำไปใช้งานเลยดีกว่านะครับ
ไฟล์ที่เกี่ยวข้องมี 3 ไฟล์ และ 1 ใน 3 ไฟล์นั้นต้องสร้างขึ้นมาใหม่
1. Display.template.php // เพิ่มปุ่มโหวต หรือปุ่มเลือกกระทู้ในไฟล์นี้
2. BoardIndex.template.php // สำหรับแสดงกระทู้โหวต และ
3. voterec.php // สำหรับโหวตหรือเลือกกระทู้
ไฟล์ Display.template.php ค้นหาคำว่า
if (!$message['approved'] && $message['member']['id'] != 0 && $message['member']['id'] == $context['user']['id'])
echo '
<div class="approve_post">
', $txt['post_awaiting_approval'], '
</div>';
พบแล้ววางคำสั่งด้านล่างนี้ต่อท้ายไป
if(empty($message['counter']))
echo '
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"></script>
<script type="text/javascript">
function voterec(id, ele){
$(ele).unbind("click")
$(".whs-rec-desc").html("โปรดรอ...")
$.get("',$settings['theme_url'],'/voterec?act=vote&id="+id, {}, function(d){
if(d!="OK")
$(".whs-rec-desc").html(d)
else
$(".whs-rec-desc").html("โหวตเรียบร้อยแล้วครับ :)")
})
}
</script>
<div class="whs-rec" style="float: right; text-align: center; font-size: 9pt;">
<a href="javascript:ubuntuclub();" onclick="voterec(',$context['current_topic'],', this); return false;">
<img src="',$settings['default_theme_url'],'/images/recommend.png" />
</a>
<div class="whs-rec-desc" style="margin-top: -20px;">
โหวตกระทู้นี้ ห้เป็นกระทู้แนะนำ
</div>
</div>';
- ไฟล์ BoardIndex.template.php ให้ค้นหาคำว่า
/* Each category in categories is made up of:
id, href, link, name, is_collapsed (is it collapsed?), can_collapse (is it okay if it is?),
new (is it new?), collapse_href (href to collapse/expand), collapse_image (up/down image),
and boards. (see below.) */
พบแล้วให้วางโค๊ดด้านล่างนี้ด้านบน ..
// WHS's Mod -> Recommend Topic
print <<<WHSDOC
<div class="tborder marginbottom categoryframe">
<h3 class="catbg headerpadding">กระทู้แนะนำ</h3>
<table cellspacing="1" class="bordercolor boardsframe">
<tr>
<td class="windowbg icon"><img src="{$settings['default_theme_url']}/images/recommend.png" alt="กระทู้แนะนำ" border="0" /><div style="margin-top: -20px;">กระทู้แนะนำ</div></td>
<td class="windowbg"><iframe src="/voterec?act=view" style="width:100%; border: none;"></iframe></td>
</tr>
</table>
</div>
WHSDOC;
และสุดท้ายสร้างสร้างไฟล์ voterec.php และวางชุดคำสั่งนี้ลงไป
<?php
include "smf/SSI.php";
// no trespasser!
if($context['user']['is_guest']){
die('ต้องสมัครสมาชิกก่อนทำการโหวตครับ');
}
function boardName($bid){
global $smcFunc;
$req = $smcFunc['db_query']('', "
SELECT name
FROM {db_prefix}boards
WHERE id_board = {int:bid}
LIMIT 1
", array(
'bid' => $bid,
));
$row = $smcFunc['db_fetch_row']($req);
return $row[0];
}
// yeah, I cheat.
// this using the [t=..] by the DtTvB :) ported to SMF 2's
// Get topic title from Zone-IT, with member color link!
function ubuntuclub_topic($message){
global $smcFunc, $memberContext, $txt, $scripturl;
$req = $smcFunc['db_query']('', "
SELECT subject, id_member, id_board, id_topic
FROM {db_prefix}messages
WHERE id_topic = {int:idt}
ORDER BY id_msg ASC LIMIT 1
", array(
'idt' => $message,
));
$row = $smcFunc['db_fetch_row']($req);
if($row[1] != 0){
// I don't reinvent the wheel, I'm lazy. I know this is slow but since we use iframe that doesn't matter.
loadMemberData($row[1], false, 'minimal');
@loadMemberContext($row[1]); // SHUT UP!
$member = $memberContext[$row[1]]['link'];
}else{
$member = $txt['guest_title']; //I'm Fedora's l10n team after all.
}
// get the board's name!
$bn = boardName($row[2]);
return array($row[0], $member, "<a href='{$scripturl}/board,{$row[2]}.0.html'>$bn</a>");
}
if($_GET['act'] == "vote"){
$topic = $_GET['id'];
// is that thing really, exists?
if (!ubuntuclub_topic($topic)){
$smcFunc['db_free_result']($request);
die("ไม่พบกระทู้ที่เรียก");
}
$smcFunc['db_free_result']($request);
// well, so now it's exists. Just inject that into the table
// but we need to know how much vote does it having?
$request = $smcFunc['db_query']('', '
SELECT * FROM {db_prefix}recommend WHERE ID_TOPIC = {int:idt}
', array(
'idt' => $topic
));
// hmm, PHP's DBAPI is clearly a mess, python's DBAPI is really simple
$recommend = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
if(!$recommend){
$request = $smcFunc['db_query']('', '
INSERT INTO {db_prefix}recommend VALUES ({int:idt}, 1, "'.$context['user']['id'].'")
', array(
'idt' => $topic
));
die("OK");
}else{
// PHP showing it's suckness again, I think context.user.id in recommend[2].split(",") is more readable
if(in_array($context['user']['id'], split(",", $recommend[2]))){
die("คุณโหวตไปแล้ว");
}
$recommend[2] .= ",".$context['user']['id'];
$recommend[1] += 1;
// commit!
$request = $smcFunc['db_query']('', '
UPDATE {db_prefix}recommend SET count = {int:count}, voters = "'.$recommend[2].'"
WHERE ID_TOPIC = {int:idt}
', array(
'idt' => $topic,
'count' => $recommend[1]
));
die("OK");
}
}else if($_GET['act'] == "view"){
$req = $smcFunc['db_query']('', "
SELECT ID_TOPIC FROM {db_prefix}recommend
ORDER BY count DESC LIMIT 5
", array());
while($row = $smcFunc['db_fetch_row']($req)){
$tt = ubuntuclub_topic($row[0]);
// hard coding to prevent beggars to use this
print "<div><a href='$scripturl/topic,{$row[0]}.0.html' target='_parent'>{$tt[0]}</a> {$txt['started_by']} {$tt[1]} {$txt['in']} {$tt[2]}</div>";
}
}
เซฟไว้ในโฟล์เดอร์ธีมของเรา
สุดท้ายต้องไปสร้างตารางไว้ในฐานข้อมูลด้วยครัับ
CREATE TABLE `smf_recommend` (
`ID_TOPIC` int(11) NOT NULL,
`count` int(11) NOT NULL default '0',
`voters` longtext NOT NULL,
PRIMARY KEY (`ID_TOPIC`),
KEY `count` (`count`)
)
ทั้งหมดนี้ผมเอาโค๊ดจากลิงค์ที่อ้างอิงด้านบนมา โดยไม่ได้ปรับแต่งหรือแก้ไขแต่อย่างใด ทั้งนี้เพื่อให้เครดิตแก่ผู้เขียนครับ
แต่ถ้าจะเอาไปใช้งานจริงก็ลองปรับดูให้เข้ากับบอร์ดของเรา จะให้สมาชิกสามารถโหวตได้ด้วย หรือให้เฉพาะแอดมินเท่านั้นโหวตก็ไปลองปรับกันใช้ดูครับ
-
- Footer Menu
http://custom.simplemachines.org/mods/index.php?mod=2966
ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
(http://upic.me/show/62462036)
-
จัดเรียงกระทู้ตามวัน (ไม่ใช่โพสล่าสุด) (https://vir9.com/smf/smf%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%87%E0%B8%81%E0%B8%A3%E0%B8%B0%E0%B8%97%E0%B8%B9%E0%B9%89%E0%B8%95%E0%B8%B2%E0%B8%A1%E0%B8%A7%E0%B8%B1%E0%B8%99/)
สำหรับ SMF ปกติจะโชว์กระทู้จัดเรียงตาม การโพสล่าสุด ซึ่งทำให้ง่ายต่อการติดตามการเคลื่อนไหว
แต่ก็อาจจะไม่ตรงความต้องการ กับบางคน ที่ต้องการ จัดเรียงกระทู้ตามการตั้งหัวข้อกระทู้
[SMF]
แก้ที่ ไฟล์ /Sources/MessageIndex.php
หา
// They didn’t pick one, default to by last post descending.
if (!isset($_REQUEST[‘sort’]) || !isset($sort_methods[$_REQUEST[‘sort’]]))
{
$context[‘sort_by’] = ‘last_post’;
$_REQUEST[‘sort’] = ‘ID_LAST_MSG‘;
$ascending = isset($_REQUEST[‘asc’]);
}]
แก้ไขเป็น
// They didn’t pick one, default to by last post descending.
if (!isset($_REQUEST[‘sort’]) || !isset($sort_methods[$_REQUEST[‘sort’]]))
{
$context[‘sort_by’] = ‘last_post’;
$_REQUEST[‘sort’] = ‘ID_TOPIC‘;
$ascending = isset($_REQUEST[‘asc’]);
}
มาจากที่นี่... https://vir9.com/category/smf/
-
แก้ไขบริเวณ footer smf เมื่อลง simple portal
« กระทู้ล่าสุด โดย คนไกล เมื่อ กันยายน 04, 2013, 11:23:43 PM »
หลายๆคนอาจจะรำคาญ หรืออยากจะแก้ไขบริเวณ ด้านล่างของ smf ในส่วนที่เป็นการแจ้ง ลิขสิทธิ์ต่างๆน่ะครับ
ไม่แนะนำให้เอาออกน่ะครับ ใช้ของเขาก็ควรให้เครดิตเขาปกติ
แต่เผื่อบางคนอยากปรับแต่ง ให้อยู่ในร่องในรอยของความคิดตัวเองน่ะครับ
แก้ไขกันที่ไฟล์
Subs-Portal.php
function sp_query_string($tourniquet)
{
global $sportal_version, $context, $modSettings;
$fix = str_replace('{version}', $sportal_version, '<a href="http://www.simpleportal.net/" target="_blank" class="new_win">SimplePortal {version} © 2008-2012, SimplePortal</a>');
if ((SMF == 'SSI' && empty($context['standalone'])) || empty($context['template_layers']) || WIRELESS || empty($modSettings['sp_portal_mode']) || strpos($tourniquet, $fix) !== false)
return $tourniquet;
$finds = array(
', Simple Machines LLC</a>',
', <a href="http://www.simplemachines.org" title="Simple Machines" target="_blank" class="new_win">Simple Machines</a>',
'class="copywrite"',
'class="copyright"',
);
$replaces = array(
', Simple Machines LLC</a><br />' . $fix,
', <a href="http://www.simplemachines.org" title="Simple Machines" target="_blank" class="new_win">Simple Machines</a><br />' . $fix,
'class="copywrite" style="line-height: 1em;"',
'class="copyright" style="line-height: 1.5em;"',
);
แหล่งที่มา... http://computech.co.th/webboard/index.php?action=recent;start=50
-
- Disable Right Click
http://custom.simplemachines.org/mods/index.php?mod=1175
ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
(http://upic.me/show/62462037)
-
คุณต้องมีสิ่งต่อไปนี้เพื่อดูเนื้อหาโพสต์นี้:
- คุณต้องเป็นสมาชิกของกลุ่มใดกลุ่มหนึ่งต่อไปนี้: VIP ปีที่ 3, VIP ปีที่ 1, VIP ปีที่ 2, Super VIP, ศิษย์เก่า วท.นพ, สมาชิก VIP, สมาชิกกิตติมศักดิ์, VIP ปีที่ 5, VIP ปีที่ 4, VIP ปีที่ 6, VIP ปีที่ 7, VIP ปีที่ 8, VIP ปีที่ 9, VIP ปีที่10.
-
- เพิ่ม Thumbnail ในหน้ากระทู้รวม
http://nevikup.blogspot.com/2012/08/smf-thumbnail.html
ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
ดูภาพประกอบคำอธิบายนะครับ
ผมดึงภาพเป็น thumbnail จากกระทู้โดยการสุ่ม ดึงมาแค่ 4 กระทู้และดึงสุ่มมาทุกครั้งที่แสดงพร้อมกับหัวข้อกระทู้ เพื่อเพิ่มความน่าสนใจกับบอร์ดมากขึ้น
ถัดลงมาจากนั้น จะเป็นกรอบและมีชื่อหมวดหมู่เว็บบอร์ด ภาพประจำหมวดหมู่ และคำอธิบายเว็บบอร์ดที่เพิ่มในหน้าแอดมิน ทั้งนี้เพื่อให้คนเข้าเว็บบอร์ดเมื่อคลิกมายังหน้ารวมแล้ว ไม่หลงทาง รู้ว่าตัวเองอยู่ห้องไหนอยู่
เป็นทิปสั้นๆนะครับ ลองเข้าไปปรับดูที่ไฟล์ MessageIndex.template.php ส่วนรายละเอียดว่าปรับยังไง ตรงจุดไหนบ้าง เดี๋ยวค่อยว่ากันต่อในบทความถัดไป
อันนี้แค่เกริ่นนำพอเป็นไอเดียก่อน
-
คำสั่งสร้างตารางลงในฐานข้อมูล มาจากที่นี่.. https://hosxp.net/smf2/index.php?topic=211.0
การสร้างตารางในฐานข้อมูล
CREATE TABLE `test`
(`id` int(11) NOT NULL default '0',`name` varchar(250) default NULL,PRIMARY KEY (`id`),UNIQUE KEY `id`(`id`))
อธิบาย สร้างตารางชื่อ refer_cause โดยมี field `id` เก็บข้อมูลชนิด integer ขนาด 11 ไม่มีค่าว่าง และมีค่า default=0
field 'name' เก็บข้อมูลชนิด varchar ขนาด 250 default = NULL โดยมี id เป็น PRIMARY KEY และ UNIQUE KEY
-
ระบบฐานข้อมูล ... (https://sites.google.com/site/thaidatabase2/%E0%B8%9A%E0%B8%97%E0%B8%97%E0%B8%B5%E0%B9%883sql4)