จะสร้างให้หน้าแรกแยกเป็น category block ยังไงครับ

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

ปกติแล้วหน้าแรกจะเป็นเร่ืองที่เรา publish ไปแต่ถ้าผมต้องการปรับแต่งให้หน้าแรกของผมแยกเป็นส่วนๆ (ลักษณะคล้ายๆ block) ถ้าเราเขียนเรื่องประเภทอะไรก็จะมาแสดงในส่วนที่เราทำเป็น block เอาไว้ ไม่มาแสดงเหมือนเขียนบล็อกนี่ต้องทำอย่างไรบ้างครับ จะปรับแต่งอย่างไร อาจจะงงๆ นะครับขอโทษด้วยผมไม่รู้ว่าจะเรียกว่าอะไรน่ะครับ

ตัวอย่างเว็บลักษณะที่ผมว่านะครับ
http://multiply.com/info/tour/1

sugree's picture

ใช้โมดูล front page แล้วใส่ php เข้าไปตามสะดวก อาจจะแสดง block ที่ต้องการได้ เช่น

<?php
$block = module_invoke('user', 'block', 'view', 2);
print $block['content'];
?>

ขอบคุณมากครับ จะเอาไปลองทำดูนะครับ

ผมลองเอา code ที่คุณ sugree ให้ไว้มาวางใน front page for anonymous user แล้วติ๊กตรง allow embeded PHP code แล้วน่ะครับ แต่ก็ยังไม่เห็นมีอะไรเปลี่ยนแปลงที่หน้าแรกเลยครับ แล้ว code ที่ให้มาตรง

$block = module_invoke('user', 'block', 'view', 2);

สามารถใส่ parameter อะไรได้บ้างครับ

ปล. ผมยังมือใหม่มากๆ เลยครับและเขียน PHP ไม่เป็นด้วยเลยงงเป็นพิเศษขอโทษด้วยครับ - -"

sugree's picture

ต้องเปลี่ยนหน้าแรกด้วยครับ ปกติหน้าแรกจะเป็น `node` ถ้าใช้ front page ก็ควรจะเปลี่ยนเป็น `front_page` ช่วงทดลองลองเข้าหน้า `front_page` ก่อนก็ได้

ถ้าต้องการให้หน้าแรกของผมแบ่งเป็น 3 ส่วนในหน้าเดียวกันอย่างเช่น ข่าวประกาศ รีวิวส์ และบทความ โดยที่ผมอยากให้มี 3 block ที่หน้าแรก และผู้ใช้ทุกคนเห็นเหมือนกันหมดน่ะครับ โดยที่เวลาผมเขียนเรื่องอะไรเข้ามามันก็จะไปอยู่ 5 เรื่องล่าสุดใน block ของมันเอง โดยที่ไม่ขึ้นมาปนกันเหมือนปกติที่เขียนเรื่องอะไรพอ publish แล้วจะมาอยู่ในหน้าแรกปนกันหมดเลย

จากตัวอย่าง ผมได้สร้าง block ของข่าวประกาศ รีวิวส์ และ บทความไว้ แล้วทีนี้ผมเขียนข่าวประกาศไป มันก็จะไปโผล่ที่ block ของข่าวประกาศ ส่วน block อื่นๆ ที่ยังไม่ได้เขียนก็ไม่มีอะไรอัพเดต

module front page เท่าที่ผมลองอ่าน document ดูแล้วเหมือนกับว่ามันจะสร้างหน้าที่ผู้ใช้แต่ละกลุ่มจะเห็นไม่เหมือนกันอ่ะครับ แล้วก็ทำพวกหน้า ปิดเว็บไซต์ หรือแสดง splash น่ะครับ ไม่รู้ว่าทำแบบที่ผมอธิบายได้รึเปล่า รบกวนช่วยตอบทีครับ

ขอบคุณครับ

sugree's picture

ถ้าอยากให้ทุกคนเห็นเหมือนกัน ก็ใส่โค้ดเหมือนกันให้กับทุกกลุ่ม

ลองโมดูล View สร้างเป็น block

เวลาใช้ก็

<?php
    $block = module_invoke('views', 'block', 'view', 'ชื่อของวิว');
            print $block['content'];       
?>

ขอบคุณครับ ขอไปลองเล่นก่อนแล้วจะกลับมารายงานผลครับ ^^

ทำได้แล้วครับ จากโค้ดที่ให้มา

print $block['content'] ตรง content ผมเปลี่ยนเป็นอย่างอื่นได้มั้ยครับ เช่น ผมสร้างประเภทไว้เป็น Annoucement กับ Reviews ผมสามารถเปลี่ยน content เป็น Annoucement ได้เลยป่าวครับ?

sugree's picture

เปลี่ยนที่ ชื่อของวิว ครับ

สงสัยเมื่อคืนเบลออ่านแล้วไม่รู้เรื่องว่าถ้าจะเปิดการทำงานของ front_page ให้ใส่ลิ้งค์เป็น front_page :P

ผมลองใช้ทั้ง front_page กับ views แล้วครับ ที่จริงใช้ views แล้วให้สร้าง block ก็ใช้ได้นะครับแต่ว่าพอผมวางไว้ที่ content ทีนี้ไปหน้าไหนมันก็มาอยู่ข้างล่างตลอด ทำให้หน้าเว็บยาว

ผมเลยใช้วิธีสร้าง view ไว้แล้วให้ front_page ไปเรียกมาแต่ก็มีปัญหาคือผมจะทำให้มี Title ตัวใหญ่ๆ ยังไงครับ - -"
-----------------------------------------------------------------
เพิ่มเติมครับ ในโค้ด php block นี่ถ้าจะให้แสดงตาม category นี่เขียนแบบไหนหรอครับ

ขอบคุณล่วงหน้าครับ

jrp13th's picture

block สามารถกำหนดให้แสดงเฉพาะหน้าใดๆ ตามเงื่อนไขได้ครับ
เข้า admin/build/block เหลือ configure block ที่ต้องการ
แล้วไปกำหนดที่ี่ Page specific visibility settings เอาครับ

ถ้าผมใส่ php snippet นี้ผมจะทำให้แสดงชื่อ Title ตัวใหญ่ๆ แบบที่เซ็ตในโมดูล block ได้มั้ยครับ
<?php
$block = module_invoke('views', 'block', 'view', 'ชื่อของวิว');
print $block['content'];
?>

แล้วถ้าต่อๆ กันหลายๆ อันแบบนี้จะแสดงหลายๆ block ป่าวครับ

<?php
$block = module_invoke('views', 'block', 'view', 'ชื่อของวิว');
print $block['content'];
?>
<?php
$block = module_invoke('views', 'block', 'view', 'ชื่อของวิว2');
print $block['content2'];
?>

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

sugree's picture

มันคือ php น่ะแหละครับ เขียนแบบนั้นก็ได้ ถ้าอยากได้ title ใหญ่ๆ ก็ใช้ <h2></h2> หรืออะไรก็ได้ตามสะดวก

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น