เรียกไฟล์ image, Javascript หรือ Css เข้าหน้าเว็บด้วย assets helper


เรียกไฟล์ image, Javascript หรือ Css เข้าหน้าเว็บด้วย assets helper


assets_helper.php
สำหรับคนที่เพิ่งเริ่มต้นทำเว็บใหม่ๆ อาจจะเกิดปัญหา การเรียกใช้ไฟล์ image , javascript กับ css เพราะเมื่อ url ของเว็บเปลี่ยนไป เราต้องไปตามแก้ path ของไฟล์ที่เรียกใช้เข้ามาอยู่ตลอด
หลายคนอาจจะเรียกใช้แบบนี้ เพื่อที่จะได้ไม่ต้องแก้ path ใหม่
<script type="text/javascript" src="<?php echo base_url(); ?>js/jquery.js">

แต่ถ้าหากเว็บของคุณให้ระบบ themeplate หรือ มีหน้า theme หลัก ถ้าจะให้โหลดไฟล์พวกนี้อยู่ตลอดทุกไฟล์ ก็เป็นการเพิ่มโหลดหน้าเว็บโดยไม่จำเป็น ไฟล์ javascript บางไฟล์ อาจจะใช้แค่หน้าสมัครสมาชิกหน้าเดียวเท่านั้น แต่ถ้าโหลดมาใช้ตลอด ก็ถือว่าไม่คุ้มค่ากันเลย ถ้าเราไปเลือกกำหนดที่ Controller มันดูยากและก็รกรุงรัง หากคุณใช้ assets helper คุณไปสร้าง folder ชื่อ assets แล้วสร้าง folder ข้างในอีก 3 ตัวคือ css, images, js คุณเพียงแค่คัดลอกไฟล์หรือสร้างไฟล์ที่ต้องการใช้งาน มาใส่ใน folder เช่น ต้องการใช้ jquery ก็สร้างไฟล์ jquery.js ใน folder assets/js คุณสามารถเรียกใช้งานได้ด้วยโค้ดนี้ ในส่วนของ View
assets/js
<?php echo js_asset('jquery.js'); ?>

assets/css
<?php echo css_asset('default.css'); ?>

หรือการเรียกรูปภาพใน assets/images
<?php echo image_asset('logo.png'); ?>

เรียกรูปภาพแบบระบุขนาด
<?php echo image_asset('logo.png',null,array('width'=>100,'height'=>100)); ?>

สามารถโหลด assets_helper.php ได้ที่นี่ครับ
http://codeigniter.in.th/downloads/codes/asset_helper.rar

สำหรับคนที่ต้องการดูตัวอย่างทั้งโปรเจคนะครับ อันนี้เป็น codeigniter 2.1.0 ติดตั้ง assets_helper ใว้แล้วใน system โหลดไปดูเป็นตัวอย่างได้เลยครับ
http://codeigniter.in.th/downloads/codes/test_assets_helper.rar

โพสเมื่อ : 2012-03-10 09:54:20 | 7 ปี , 1 เดือน, 1 สัปดาห์, 2 วัน , 5 ชั่วโมง ผ่านมา
แล้วเอาไฟล์ assets_helper.php ไปว่างไว้ที่ใหนเหรอครับ

ลำดับ : 1 | ตอบเมื่อ : 2012-03-10 10:37:43 | 7 ปี , 1 เดือน, 1 สัปดาห์, 2 วัน , 4 ชั่วโมง ผ่านมา

แล้วเอาไฟล์ assets_helper.php ไปว่างไว้ที่ใหนเหรอครับ

มีให้เลือก 2 ที่ครับ
ที่แรก system/helpers สำหรับเรียกใช้ได้ทั้งระบบ
อันที่2 application/helpers เรียกใช้ได้ในโปรแกรมนั้นๆ

วิธีใช้งานไปสั่งใน application/config/autoload.php บรรทัดที่ 67
$autoload['helper'] = array('asset');

ลำดับ : 2 | ตอบเมื่อ : 2012-03-10 10:44:51 | 7 ปี , 1 เดือน, 1 สัปดาห์, 2 วัน , 4 ชั่วโมง ผ่านมา

ขอบคุณมากครับ

ลำดับ : 3 | ตอบเมื่อ : 2012-03-10 11:38:52 | 7 ปี , 1 เดือน, 1 สัปดาห์, 2 วัน , 3 ชั่วโมง ผ่านมา

โฟลเดอร์ assets นี่สร้างใน โฟลเดอร์ helper ผมเข้าใจถูกมั้ยครับ...

ลำดับ : 4 | ตอบเมื่อ : 2012-03-12 07:17:25 | 7 ปี , 1 เดือน, 1 สัปดาห์, 7 ชั่วโมง ผ่านมา

โฟลเดอร์ assets นี่สร้างใน โฟลเดอร์ helper ผมเข้าใจถูกมั้ยครับ...

ไม่ใช่ครับ สร้างใว้บนสุดเลยครับ มันจะอยู่กับไฟล์ index.php, application, system เลยนะครับ

ลำดับ : 5 | ตอบเมื่อ : 2012-03-12 09:09:32 | 7 ปี , 1 เดือน, 1 สัปดาห์, 5 ชั่วโมง ผ่านมา

โฟลเดอร์ assets นี่สร้างใน โฟลเดอร์ helper ผมเข้าใจถูกมั้ยครับ...

ไม่ใช่ครับ สร้างใว้บนสุดเลยครับ มันจะอยู่กับไฟล์ index.php, application, system เลยนะครับ


อ่อ ขอบคุณครับ ต้องลองๆ

ลำดับ : 6 | ตอบเมื่อ : 2012-03-12 10:25:04 | 7 ปี , 1 เดือน, 1 สัปดาห์, 4 ชั่วโมง ผ่านมา

ในไฟล์ templates/footer.php

© 2011



$.backstretch("");




เขียนไว้อย่างนี้ แต่ว่ามันฟ้อง error ครับ

A PHP Error was encountered

Severity: Notice

Message: Use of undefined constant asset - assumed 'asset'

Filename: config/autoload.php

Line Number: 67

ผมทำอะไรผิดรึเปล่า ขอบคุณล่วงหน้าครับ

ลำดับ : 7 | ตอบเมื่อ : 2012-03-27 11:57:40 | 7 ปี , 2 สัปดาห์ , 6 วัน , 3 ชั่วโมง ผ่านมา

root นอกสุด
index.php
- assets
- css/default.ss
- js/jquery.js
- images/bg03.jpg

แล้วก็ system/helpers/assets_helper.php

ส่วนไฟล์

templates/footer.php

© 2011



$.backstretch("");




แล้วมันก็ error อย่างงี้

A PHP Error was encountered

Severity: Notice

Message: Use of undefined constant asset - assumed 'asset'

Filename: config/autoload.php

Line Number: 67

ผมทำอะไรผิดรึเปล่า ขอบคุณล่วงหน้าครับ

ลำดับ : 8 | ตอบเมื่อ : 2012-03-27 12:06:16 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

#© 2011
#
#
#
# $.backstretch("");
#
#
#

มันไม่ยอมให้วางครับ

ลำดับ : 9 | ตอบเมื่อ : 2012-03-27 12:10:01 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

ขอโทษทีครับ กะว่าจะก๊อปปี้ โค๊ดมาให้ดูแต่ว่าลองใส่ไปแล้วมันกลายเป็นอย่างที่เห็นนะครับ
ช่วยแก้ให้มันแสดงผลได้ไหมครับ จะได้เห็นภาพกันทุกคน เลยเสียไปหลายกระทู้เลยครับ

ลำดับ : 10 | ตอบเมื่อ : 2012-03-27 12:12:15 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา


© 2011



$.backstretch("");




ลำดับ : 11 | ตอบเมื่อ : 2012-03-27 12:14:57 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

ผมพิมพ์ผิดครับ มันขาด s ไปตัวหนึ่ง มันต้อง
$autoload['helper'] = array('assets');


ส่วน < และ > จะพิมพ์ตรงๆ ไม่ได้ครับ ต้องแทนที่ด้วย &lt; และ &gt;

ลำดับ : 12 | ตอบเมื่อ : 2012-03-27 12:22:14 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

ขอโทษอีกรอบครับ ลืมใส่คำว่า ('asset') ในบรรทัดที่ 67 นะครับ แต่ว่าตอนนี้ไม่ error แล้ว แต่ js มันไม่แสดงผลนะครับ

ลำดับ : 13 | ตอบเมื่อ : 2012-03-27 12:45:32 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

<strong>© 2011</strong>
<?php echo js_asset('jquery-1.6.2.min.js'); ?>
<?php echo js_asset('jquery.backstretch.min.js'); ?>
<script>
$.backstretch('<?php echo image_asset('bg03.jpg'); ?>');
</script>
</body>
</html>

อันนี้ครับตัวอย่าง footer.php แต่ว่ามันไม่แสดงผลนะครับ ส่วน ('asset') ที่บรรทัด 67 นั้นไม่ error นะครับ แต่ถ้าเป็น ('assets') error ทันทีเลย

ลำดับ : 14 | ตอบเมื่อ : 2012-03-27 12:55:52 | 7 ปี , 2 สัปดาห์ , 6 วัน , 2 ชั่วโมง ผ่านมา

น่าสนใจเดี๋ยวลองดูน่ะครับ ตอนนี้ใช้แบบ base_url อยู่เลย

ลำดับ : 15 | ตอบเมื่อ : 2012-03-27 14:51:42 | 7 ปี , 2 สัปดาห์ , 6 วัน ผ่านมา

ลองเปลี่ยนเป็น
<script>
$(function(){
    $.backstretch('');
});
</script>

ลำดับ : 16 | ตอบเมื่อ : 2012-03-27 19:17:37 | 7 ปี , 2 สัปดาห์ , 5 วัน , 19 ชั่วโมง ผ่านมา

มันก็ไม่ขึ้นอยู่ดีครับ

<script>
$(function(){
$.backstretch('<?php echo image_asset('bg03.jpg'); ?>');
});
</script>

ลำดับ : 17 | ตอบเมื่อ : 2012-03-28 10:43:53 | 7 ปี , 2 สัปดาห์ , 5 วัน , 4 ชั่วโมง ผ่านมา

ที่อยู่รูปภาพ เป็นไปตามนี้รึปล่าวครับ assets/images/bg03.jpg

ลำดับ : 18 | ตอบเมื่อ : 2012-03-29 10:28:05 | 7 ปี , 2 สัปดาห์ , 4 วัน , 4 ชั่วโมง ผ่านมา

ครับตามนั้น
-index.php
-application
-system
-assets
- - js
- -jquery-1.6.2.min.js
- -jquery.backstretch.min.js
- - images
- - bg03.jpg
- - css

แต่ผมเคยใช้แบบนี้ครับ ลิ้งค์ลงใน นั้นเลย src="../js/jquery.js" แบบนี้ตรง footer.php แล้วมันใช้ได้อะครับ

ลำดับ : 19 | ตอบเมื่อ : 2012-03-29 11:10:31 | 7 ปี , 2 สัปดาห์ , 4 วัน , 3 ชั่วโมง ผ่านมา

ลืมบอกไปครับ ผมทำตามแบบ tutorial static page ใน CI 2.1.0 นะครับ แต่ลองมาใส่ asset_helper ดู ตอนแรกผมก็ใส่แบบ src="../js/jquery.js" เอาโฟล์เดอร์ไว้ที่ root เหมือนทั่วไปนะครับ มันใช้ได้ แต่ลอง asset_helper แล้วมันกลับใช้ไม่ได้ครับ

ลำดับ : 20 | ตอบเมื่อ : 2012-03-29 11:19:00 | 7 ปี , 2 สัปดาห์ , 4 วัน , 3 ชั่วโมง ผ่านมา
เข้าสู่ระบบ
คงสถานะการเข้าระบบ