Related node?

Events happening in the community are now at Drupal community events on www.drupal.org.
rokape's picture

Mình muốn dưới mỗi bài viết(articles)(chứ ko phải ở block nhé) sẽ có related node:1 cái là nội dung tương tự(dựa vào title,keyword),cái khác là những bài viết cùng term đó xếp theo ngày post(như danh sách related news (title thôi) ở dưới node page (tin tức page) như là mấy trang vnexpress,dân trí,vietnamnet) vậy nhỉ?
Thanks all!

Comments

Dungf views tao dc

rokape's picture

Dungf views tao dc block...:http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-create-a-related-pages-block?page=1
Giờ phải dùng panels để đưa block đó vào pages nhỉ?

uh, đúng rồi bạn. Không thì

trunghaiy's picture

uh, đúng rồi bạn. Không thì trong admin/building/block bạn đặt nó dưới region content và chỉ cho nó hiển thị dưới những node thuộc tin tức đó.
Bạn xem thêm ở đây nè:http://groups.drupal.org/node/5992

Thanks ban.Giờ mình muốn hỏi

rokape's picture

Thanks ban.Giờ mình muốn hỏi vài câu,mong các bạn giúp đỡ:
1.Làm thế nào để insert 1 views vào trực tiếp content như 1 table or html list?bên phải or dưới?điển hình như của dantri.com trong khi theme ko có phần region content bottom cho block?
2.mình muốn fitler và display các tin mới hơn,cũ hơn trong cùng term với node đang xem với views thì dùng hàm php nào nhỉ?giống như dantri.com ấy
Giống như hình dưới nhé:
http://groups.drupal.org/files/new-old-dantri_4.jpg
Thanks all!

Hi ban + Trong theme bạn chưa

itqn2004's picture

Hi ban
+ Trong theme bạn chưa có content bottom thì bạn thêm vào thôi.
+Nếu bạn rành views thì bạn có thể dùng modules views hoặc custom một module nhỏ để làm.
khi bạn views node bạn sẽ có được term id.


Tel: 0905 403 723


Thanks bạn 1.Thêm vào 1

rokape's picture

Thanks bạn
1.Thêm vào 1 region trong theme hả bạn,sau phần content,trước comment form?
2.fitler thế nào bạn chỉ cụ thể mình dc ko?mình chỉ có thể fitler ra tất cả tin thuộc term đó thôi,ko fitler ra dựa vào node ID bài đang xem dc(để định dạng bài mới hơn,bài đã đăng)?
Only local images are allowed.
3.Cho mình hỏi sau khi đã cache,thông thường 1 site DP query tầm khoảng bn queries nhỉ?mình view debug của authcache thấy bảo tầm 14x queries...có nhiều quá ko?
P/S:DP hay thế sao ko có community ở VN nhỉ?Càng tìm hiểu càng thấy DP hay,quá tùy biến...

1.Làm thế nào để insert 1

trunghaiy's picture

1.Làm thế nào để insert 1 views vào trực tiếp content như 1 table or html list?bên phải or dưới?điển hình như của dantri.com trong khi theme ko có phần region content bottom cho block?
2.mình muốn fitler và display các tin mới hơn,cũ hơn trong cùng term với node đang xem với views thì dùng hàm php nào nhỉ?giống như dantri.com ấy

Cái thứ nhất bạn dùng:http://drupal.org/project/insert_view. Còn cách nhúng code thì mình chưa biết @@

Cái thứ 2 mình có cách giải quyết không biết có được hay không với drupal đó là bạn không lấy đc node id của nó vì bạn dùng pathauto thì bạn lấy theo title thôi :D. Do trong bài viết ít khi có title trùng nên có thể áp dụng đc. Bạn lấy đc title, từ title bạn xem nó có nid là nhiêu. Rồi từ nid này bạn query lấy 4 node từ nid này trở lên và 4 node từ nid này trở xuống. Không biết một view có thể lấy được title này không?

hehe mình nhầm, đó là url do pathauto, còn arg do bạn get được thì là id của node. Bạn có thể select theo id của node rồi đó

Cái thứ 3: nhờ anh th thôi :-)

Cái thứ 3 thì cài thử module

luongtd's picture

Cái thứ 3 thì cài thử module develop ra.

Cái thứ 2 có thể dùng đoạn truy vấn mysql:

<?php
//Các bài viet moi và gan day
             //các bài viet da dua
             
$type=$node->type;
             
$node_baiviet=$node->nid;
              
$sql = "SELECT * FROM node WHERE node.created > (SELECT created FROM node WHERE node.nid =".$node_baiviet.") AND TYPE = '".$type."'
                      ORDER BY <code>node</code>.<code>created</code> DESC"
;
             
              
$result = db_query($sql);
             
//echo db_affected_rows($result);
       
       
$output = '<span class="baikhac">'.t('Các bài mới').'</span><div class="arrowlistmenu"><ul>';
             if(
db_affected_rows($result)==0){                  
                  
$sql.="";
         
$output = '<div class="arrowlistmenu"><ul>';
        }
               if(
db_affected_rows($result)==1)     
                
$sql .= " limit 1";
              if(
db_affected_rows($result)>=2
                 
$sql .= " limit ". (db_affected_rows($result)-2) .",2";
               
$result = db_query($sql);              
               while (
$anode = db_fetch_object($result)) {
                   
$output .= "<li>".l($anode->title, "node/$anode->nid")."</li>";
                }
             
$output .= "</ul></div>";
                if(
db_affected_rows($result)!=0){
                  print
$output;
             }
             
$output="";
             
//in cac bai gan day
              
$sql = "SELECT * FROM node WHERE node.created <= (SELECT created FROM node WHERE node.nid =".$node_baiviet.") AND TYPE = '".$type."'
                     ORDER BY <code>node</code>.<code>created</code> DESC LIMIT 1 , 5"
;
             
              
$result = db_query($sql);
       
            
$output .= '<span class="baikhac">'.t('Các bài đã đăng').'</span><div class="arrowlistmenu"><ul>';
               while (
$anode = db_fetch_object($result)) {
                   
$output .= "<li>".l($anode->title, "node/$anode->nid")."</li>";
                }
             
$output .= "</ul></div>";
                if(
db_affected_rows($result)!=0){
                  print
$output;
             }      
?>

Mình copy nguyên trong code của mình nên chưa định dang lại, cậu thông cảm

Cần cù bù thông minh.
http://k49c.net/forum

Mình cũng đang thắc mắc về

ngocleanh's picture

Mình cũng đang thắc mắc về vấn đề này, mình cũng đang muốn làm một cái relate node nhưng ở đây là mình dùng argument trong views để lọc node, và bây giờ mình muốn lọc ra các tin khác nằm trong cùng 1 term của current node, vì mình sử dụng argument nên mình ko thể lựa chọn một term cố định được mà mình muốn nó tự động lấy từ current node để biết được term của nó và lọc ra các tin relate node. Bạn nào có thể giúp mình có cách nào làm ko.

Bạn đã làm được rồi giúp mình

newusers's picture

Bạn đã làm được rồi giúp mình với, mình dùng view nhưng nó hiện tất cả các mục trong term kể cả current node, làm thế nào để xác định current node để loại bỏ nó vậy bạn?

Mình nhớ là mình có làm cái

motgioinfo's picture

Mình nhớ là mình có làm cái block giống của bạn luongtd nhưng bằng views với display type là Block. Bạn có thể lấy id của node hiện tại từ biến arg(?) , rồi lấy được term ID của nó.. và làm tương tự như bạn luongtd... thay vì trong file node của theme thì bỏ vào trong footer của view.
VD ứng với node là 12, bạn tìm đc term id là 1(tin tức hay gì đó) rồi từ term id này bạn lấy hết những node nằm trong nó. Cái này phải chỉnh biến mặc định cho Block nha bạn.

@leanhngoc: Vấn đề này dễ thôi bạn ơi. Module Views có thể làm được hết. Nếu bạn cần thì có thể liên hệ với mình qua yahoo: leanhngoclt mình sẽ giúp bạn.
Nên share trên group thay vì share qua yahoo bạn ơi @@...

Chia sẻ để chia sẻ và làm phong phú tài nguyên...

ok mình đã làm được, hic tại

ngocleanh's picture

ok mình đã làm được, hic tại vì mình chỉ loay hoay trong cái Views muốn chỉ sử dụng Views mà có thể làm được mà không cần phải code. Bây giờ thì mình sử dụng block thì ok rồi. Cảm ơn bạn nhiều nhé. Mình sẽ rút kinh nghiệm có gì mình sẽ share trực tiếp lên group.

Mình cũng nghĩ chỉ cần Views

drvdt's picture

Mình cũng nghĩ chỉ cẩn Views là có thể giải quyết được. Bạn nên đọc kĩ về Views trước khi làm tạo views, không thì sau này mỗi khi phát hiện cái mới lại phải edit từng cái một,.... Nản