|
|
|
รบกวนช่วยหาวิธีตัดคำในไฟล์ php ที่คล้ายๆกับ google นี้ให้ด้วยครับ |
|
|
|
|
|
|
|
พอดีได้ตัวอย่างโปรแกรมที่เค้าแจกมาให้เพื่อพัฒนาเพิ่มเติม เป็นโปรแกรมประเภทห้องสมุดอีเลกโทรนิคไว้ให้ค้นหา มีทั้งแบบให้ Download หรือ Link ไปข้างนอกของเจ้าของบทความ แต่พอดีมีปัญหาว่าพอมันแสดงผล บทความ หรือ หนังสือ ที่ขื่อ หรือ รายละเอียดอื่นๆมันยาว มันก็จะตกมาบรรทัดใหม่ มันก็ดูไม่สวย อยากให้แสดงแค่บรรทัดเดียว แล้วตัดคำ แต่ด้วยผมก็ไม่ได้มีความรู้ขนาดนั้น จึงอยากรบกวนผู้รู้ช่วยดูให้ด้วยครับ ต้องทำยังไงตรงไหน โดยตั้งแต่บรรทัดที่ 90-109 นี่ล่ะครับ จะเป็นตัวกำหนดการแสดงผลในการค้นหา ซึ่งดึงมาจาก field ต่างๆของฐานข้อมูล แต่ผมก็ไม่รู้ว่าต้องเขียน css ยังไงเพื่อตัดคำ หรือ มีวิธีอื่นบ้างรบกวนด้วยครับ
ขอบคุณครับ
Code (PHP)
<?php
/**
* @filesource modules/dms/views/index.php
*
* @copyright 2016 Goragod.com
* @license http://www.kotchasan.com/license/
*
* @see http://www.kotchasan.com/
*/
namespace Dms\Index;
use Kotchasan\DataTable;
use Kotchasan\Date;
use Kotchasan\Http\Request;
use Kotchasan\Language;
/**
* module=dms
*
* @author Goragod Wiriya <[email protected]>
*
* @since 1.0
*/
class View extends \Gcms\View
{
/**
* @var object
*/
private $category;
/**
* แสดงรายการเอกสารส่ง.
*
* @param Request $request
* @param array $login
*
* @return string
*/
public function render(Request $request, $login)
{
// ค่าที่ส่งมา
$params = array(
'module' => 'borrow-search',
'from' => $request->request('from')->date(),
'to' => $request->request('to')->date(),
'search' => $request->request('search')->topic(),
);
foreach (Language::get('DMS_CATEGORIES') as $k => $label) {
$params[$k] = $request->request($k)->toInt();
}
// หมวดหมู่
$this->category = \Dms\Category\Model::init();
// URL สำหรับส่งให้ตาราง
$uri = $request->createUriWithGlobals(WEB_URL.'index.php');
// ตาราง
$table = new DataTable(array(
/* Uri */
'uri' => $uri,
/* Model */
'model' => \Dms\Index\Model::toDataTable($params, $login),
/* รายการต่อหน้า */
'perPage' => $request->cookie('dmsIndex_perPage', 30)->toInt(),
/* เรียงลำดับ */
'sort' => 'create_date DESC',
/* ฟังก์ชั่นจัดรูปแบบการแสดงผลแถวของตาราง */
'onRow' => array($this, 'onRow'),
/* คอลัมน์ที่ไม่ต้องแสดงผล */
'hideColumns' => array('id', 'dms_id', 'url','ext', 'file_name', 'create_date', 'document_no', 'downloads'),
/* ตัวเลือกการแสดงผลที่ส่วนหัว */
// 'filters' => array(
// array(
// 'name' => 'from',
// 'type' => 'date',
// 'text' => '{LNG_from}',
// 'value' => $params['from'],
// ),
// array(
// 'name' => 'to',
// 'type' => 'date',
// 'text' => '{LNG_to}',
// 'value' => $params['to'],
// ),
// ),
/* ตั้งค่าการกระทำของของตัวเลือกต่างๆ ด้านล่างตาราง ซึ่งจะใช้ร่วมกับการขีดถูกเลือกแถว */
'action' => 'index.php/dms/model/index/action',
'actionCallback' => 'dataTableActionCallback',
/* ส่วนหัวของตาราง และการเรียงลำดับ (thead) */
'headers' => array(
'create_date' => array(
'text' => '{LNG_Date}',
),
'document_no' => array(
'text' => '{LNG_Document No.}',
),
'topic' => array(
'text' => '{LNG_Document title}',
),
'detail' => array(
'text' => '{LNG_detail}',
),
'agency' => array(
'text' => '{LNG_agency}',
),
'author' => array(
'text' => '{LNG_author}',
),
'syear' => array(
'text' => '{LNG_syear}',
),
// 'file_name' => array(
// 'text' => '{LNG_File name}',
// ),
'ext' => array(
'text' => '',
),
'downloads' => array(
'text' => '',
),
),
/* รูปแบบการแสดงผลของคอลัมน์ (tbody) */
'cols' => array(
'ext' => array(
'class' => 'center',
),
'downloads' => array(
'class' => 'center',
),
),
/* ฟังก์ชั่นตรวจสอบการแสดงผลปุ่มในแถว */
'onCreateButton' => array($this, 'onCreateButton'),
/* ปุ่มแสดงในแต่ละแถว */
'buttons' => array(
'download' => array(
'class' => 'icon-download button purple',
'id' => ':dms_id_:id',
'text' => '{LNG_Download}',
),
'detail' => array(
'class' => 'icon-info button orange',
'id' => ':dms_id_:id',
'text' => '{LNG_Detail}',
),
),
));
foreach (Language::get('DMS_CATEGORIES') as $k => $label) {
if ($k != 'cabinet') {
$table->filters[] = array(
'name' => $k,
'text' => $label,
'options' => array(0 => '{LNG_all items}') + $this->category->toSelect($k),
'value' => $params[$k],
);
}
// $table->headers[$k] = array(
// 'text' => $label,
// 'class' => 'center',
// );
$table->cols[$k] = array(
'class' => 'center',
);
}
$table->filters['search'] = array(
'name' => 'search',
'type' => 'text',
'text' => '{LNG_Search}',
'value' => $params['search'],
);
// save cookie
setcookie('dmsIndex_perPage', $table->perPage, time() + 2592000, '/', HOST, HTTPS, true);
// คืนค่า HTML
return $table->render();
}
/**
* จัดรูปแบบการแสดงผลในแต่ละแถว
*
* @param array $item
*
* @return array
*/
public function onRow($item, $o, $prop)
{
$item['create_date'] = Date::format($item['create_date'], 'd M Y');
if ($item['url'] != '') {
$item['ext'] = '';
} else {
$item['ext'] = '<img src="'.(is_file(ROOT_PATH.'skin/ext/'.$item['ext'].'.png') ? WEB_URL.'skin/ext/'.$item['ext'].'.png' : WEB_URL.'skin/ext/file.png').'" alt="'.$item['ext'].'">';
}
$item['downloads'] = '<span id="downloads_'.$item['id'].'" class="icon-valid color-'.(empty($item['downloads']) ? 'silver' : 'green').' notext"></span>';
return $item;
}
/**
* ฟังกชั่นตรวจสอบว่าสามารถสร้างปุ่มได้หรือไม่
*
* @param array $item
*
* @return array
*/
public function onCreateButton($btn, $attributes, $item)
{
if ($btn == 'download') {
if ($item['url'] != '') {
$attributes['href'] = $item['url'];
$attributes['class'] = 'button blue icon-world';
$attributes['text'] = '{LNG_URL}';
$attributes['target'] = '_blank';
}
return $attributes;
} else {
return $attributes;
}
}
}
Tag : PHP, MySQL
|
ประวัติการแก้ไข 2021-05-11 00:48:34
|
|
|
|
|
Date :
2021-05-11 00:40:13 |
By :
npolkhet |
View :
611 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คำค้น
css overflow-x
|
|
|
|
|
Date :
2021-05-11 08:45:43 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็นั่นแหล่ะ ครับ ใช้ css คำที่เกินมันจะซ่อนไว้ไม่แสดง
แต่มันยังมีอยู่บน browser ถ้าไปตัดที่ php มันหายไปเลย
ปล. ต้องใช้ ร่วมกับ display: inline_block; ไม่ให้ตัดคำขึ้นบันทัดไหม่ แล้ว ซ่อนส่วนเกิน
ส่วนจะใช้คำสั่งยังไง ไปอ่าน document อ่าน การใช้ attribute เพื่อที่จะได้รู้หลากหลาย นำมาประยุกต์ใช้งานได้
|
ประวัติการแก้ไข 2021-05-11 12:44:10
|
|
|
|
Date :
2021-05-11 12:41:33 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องแยกทำความเข้าใจเยอะหน่อยแล้วนะ
ค้นหา -> ทำที่ server เป็น server side หรือฝั่งเซิร์ฟเวอร์ เน้นประมวลผลอะไรต่างๆ
การแสดงผล -> ทำที่ client เป็น client side เกี่ยวกับการแสดงผลหรือการมองเห็นเป็นส่วนใหญ่ ไม่ว่าจะตัดคำยาวเกิน, ซ่อนคำยาวเกิน, การขึ้นบรรทัดใหม่ อะไรพวกเนี้ย. เมื่อเป็น client side ก็ใช้อยู่ 2 อย่าง เลือกเอาตามความสามารถของมัน คือ CSS, JS.
ตัวอย่างการแสดงผลคำที่ยาวเกินในรูปแบบต่างๆด้วย CSS
https://www.w3schools.com/cssref/css3_pr_text-overflow.asp
|
|
|
|
|
Date :
2021-05-11 20:32:56 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ CSS overflow
Code (PHP)
<style media="screen">
.card-text {
display: block;
display: -webkit-box;
line-height: 2;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
|
|
|
|
|
Date :
2021-05-12 11:41:29 |
By :
Genesis™ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|