WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

WordPress Plugins

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
gt68
Δημοσιεύσεις: 15
Εγγραφή: 21 Ιουν 2011 06:40

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από gt68 » 24 Ιουν 2011 18:19

Έχω στήσει ένα ένα συναθροιστή ειδήσεων (γνωστά και ως news aggregators) βασισμένο στο WP. Μετά από αρκετό χεράκι φαίνεται να λειτουργεί ικανοποιητικά και τώρα θέλω να κάνω το εξής:

Θέλω να μπορώ να διαμορφώσω την αρχική σελίδα ορίζοντας:

ποιες κατηγορίες εμφανίζονται (έχω plugin που το κάνει ήδη), τη σειρά εμφάνισης των κατηγοριών και πόσα άρθρα από κάθε κατηγορία, δλδ:

Πρώτα να εμφανίζονται x άρθρα από την κατηγορία A
Μετά να εμφανίζονται y άρθρα από την κατηγορία B
Μετά να εμφανίζονται z άρθρα από την κατηγορία C

Γνωρίζετε αν υπάρχει κάποιο plugin που το κάνει;

:kaloe: :o :D

Άβαταρ μέλους
B_Dark
Δημοσιεύσεις: 321
Εγγραφή: 27 Ιαν 2006 04:45
Τοποθεσία: Center Of Athens

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από B_Dark » 19 Ιούλ 2011 22:25

gt68 έγραψε:Έχω στήσει ένα ένα συναθροιστή ειδήσεων (γνωστά και ως news aggregators) βασισμένο στο WP. Μετά από αρκετό χεράκι φαίνεται να λειτουργεί ικανοποιητικά και τώρα θέλω να κάνω το εξής:

Θέλω να μπορώ να διαμορφώσω την αρχική σελίδα ορίζοντας:

ποιες κατηγορίες εμφανίζονται (έχω plugin που το κάνει ήδη), τη σειρά εμφάνισης των κατηγοριών και πόσα άρθρα από κάθε κατηγορία, δλδ:

Πρώτα να εμφανίζονται x άρθρα από την κατηγορία A
Μετά να εμφανίζονται y άρθρα από την κατηγορία B
Μετά να εμφανίζονται z άρθρα από την κατηγορία C

Γνωρίζετε αν υπάρχει κάποιο plugin που το κάνει;

:kaloe: :o :D
.
βρήκες καμία λύση?
Music is the spirit of love, happiness and life...

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από Basilakis » 19 Ιούλ 2011 22:55

Βάλτε 3 διαφορετικές loops μέσα, για να το κάνετε εύκολα και απλά :-)

Άβαταρ μέλους
B_Dark
Δημοσιεύσεις: 321
Εγγραφή: 27 Ιαν 2006 04:45
Τοποθεσία: Center Of Athens

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από B_Dark » 20 Ιούλ 2011 00:51

Basilakis έγραψε:Βάλτε 3 διαφορετικές loops μέσα, για να το κάνετε εύκολα και απλά :-)
εγώ κάτι τέτοιο ψάχνω για κάτι τέτοιο δεν μιλάει και το παιδί πιο πάνω?
Συνημμένα
news.jpg
Music is the spirit of love, happiness and life...


Άβαταρ μέλους
B_Dark
Δημοσιεύσεις: 321
Εγγραφή: 27 Ιαν 2006 04:45
Τοποθεσία: Center Of Athens

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από B_Dark » 20 Ιούλ 2011 05:26

Basilakis έγραψε:ναι και εγώ για κάτι τέτοιο ομιλώ! :-)
για γίνε πιο αναλυτικός (ούτε που ξέρω τι είναι το loop), γιατί μου φαίνεται λίγο βουνό (3 μέρες το χρησιμοποιώ) το wordpress , σε σχέση με το joomla που ασχολούμαι από την εποχή mambo...
Music is the spirit of love, happiness and life...

Άβαταρ μέλους
viktoras
Δημοσιεύσεις: 963
Εγγραφή: 05 Απρ 2001 03:00
Τοποθεσία: Γαλάτσι, Αθήνα
Επικοινωνία:

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από viktoras » 20 Ιούλ 2011 16:14

Η σελίδα που πρέπει να μελετήσεις είναι το The Loop ( το link είναι με anchor στο Multiple Loops section ). Εναλλακτικά ένα άρθρο σε στυλ tutorial για multiple loops ίσως σε βοηθήσει.

Υπάρχουν αρκετοί τρόποι να χρησιμοποιήσεις πολλαπλά loops σε μία template όπως θα δεις και παραπάνω. Ο πιο "ξεκάθαρος" τρόπος για μένα - και αυτόν χρησιμοποιώ - είναι η δημιουργία νέων Wordpress Queries για κάθε κομμάτι. Τα καλύπτει όλα η σελίδα του documentation. Αν έχεις και posts που είναι σε 2 κατηγορίες ( απ' αυτές που θες να χρησιμοποιήσεις ) μπορείς να παίξεις και με ένα array ώστε να σημειώνεις τα ID των posts που περάσανε απ' τις προηγούμενες loops ώστε να μην ξαναεμφανιστούν.

Μπορείς να πάρεις ιδέα κώδικα και από κάποια magazine themes που κάνουν αυτό ακριβώς. Το διαφορετικό είναι ότι συνήθως έχουν ένα options panel που μπορείς να ορίσεις από ποια κατηγορία θα τραβάει posts για το κάθε section. ( + posts limit )
<?="Hello Freestuff";?>
Quality hosting by Cityhost

gt68
Δημοσιεύσεις: 15
Εγγραφή: 21 Ιουν 2011 06:40

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από gt68 » 15 Αύγ 2011 04:12

Τελικά κατέληξα να το κάνω στο χέρι όπως περιγράφει ο viktoras παραπάνω.

Tο site έχει πολύ δουλειά ακόμη αλλά μπορείτε να δείτε την ομαδοποίηση των άρθρων ανά κατηγορία στο homepage εδώ: http://news360.gr

Παραθέτω και τον κώδικα με την προειδοποίηση ότι μαθαίνω php καθώς προγραμματίζω, επομένως ο κώδικας μάλλον δεν είναι και πολύ καλά γραμμένος. Πάντως δουλεύει.

Επόμενο task να βρω κάποιο τρόπο να ομαδοποιώ άρθρα από διαφορετικές πηγές που περιγράφουν την ίδια είδηση όπως κάνει το google news (clustering). Ιδέες κανείς???

Κώδικας: Επιλογή όλων

<?php
	//get posts
	$args = Array&#40;&#41;;
	$args&#91;'showposts'&#93; = 20;
	$args&#91;'orderby'&#93; = 'date';
	$args&#91;'order'&#93; = 'DESC';
	$args&#91;'cat'&#93; = '&#40;3,-15&#41;';				
	query_posts&#40;$args&#41;;
	$i = 1;
	while &#40;have_posts&#40;&#41;&#41; &#58; the_post&#40;&#41;;
		
		//get post content & check if contains image
		global $wpdb;
		$post_ID = $post->ID;
		$usethispost = 1;
		$hasimage = 1;
		// get the post content
		$usethispost = 1;
		$result = mysql_query&#40;"SELECT * FROM wp_posts WHERE ID='$post_ID'"&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
		$row = mysql_fetch_array&#40; $result &#41;;
		$the_content = $row&#91;'post_content'&#93;;
		$the_title = $row&#91;'post_title'&#93;;
		$the_link = $row&#91;'guid'&#93;;
		$the_date = $row&#91;'post_date'&#93;;
		
		if&#40;strlen&#40;$the_content&#41;&#41; &#123;
			// use regex to find the src of the first image
			preg_match&#40;'/<img src=\"&#40;.*?&#41;\" width=\"&#40;.*?&#41;\" height=\"&#40;.*?&#41;\"/i', $the_content, $matches&#41;;
			if&#40;!$matches&#41; &#123;
				$hasimage = 0;
			&#125;else&#123;
				$the_image = $matches&#91;1&#93;;
				$imgw = $matches&#91;2&#93;;
				$imgh = $matches&#91;3&#93;;
			&#125;
		&#125;else&#123;
			$usethispost = 0;
		&#125;
					
		if &#40;$usethispost > 0&#41; &#123;
			if &#40;$i == 1&#41; &#123; //if is first post
				if &#40;$hasimage > 0 && &#40;$imgw > $imgh || $imgw == $imgh&#41;&#41; &#123;
					//scale-crop to 300x190
					if &#40;&#40;$imgw / $imgh&#41; > &#40;300 / 190&#41;&#41; &#123; //scale to height
						$nimgh = 190;
						$nimgw = intval&#40;$nimgh * &#40;$imgw / $imgh&#41;&#41;;
						$posy = 0;
						$posx = &#40;0 - intval&#40;&#40;$nimgw - 300&#41; / 2&#41;&#41;;
					&#125;else&#123; //scale to width
						$nimgw = 300;
						$nimgh = intval&#40;$nimgw * &#40;$imgh / $imgw&#41;&#41;;
						$posx = 0;
						$posy = intval&#40;&#40;$nimgh - 190&#41; / 2&#41;;
					&#125;
				&#125;else&#123;
					$usethispost = 0;
				&#125;
			&#125;
		&#125;
		
		if &#40;$usethispost > 0 && $i == 1&#41; &#123;
			echo '<div class="fc_cover">';
			echo '<a href="' . $the_link . '" title="' . $the_title . '">';
			echo '<img src="' . $the_image . '" alt="' . $the_title . '" width="' . $nimgw . '" height="' . $nimgh . '" style="left&#58;' . $posx . 'px; bottom&#58;' . $posy . 'px; position&#58; relative;" /></a></div>';
				//Limit title to 80 characters
				if &#40;mb_strlen&#40;$the_title&#41; > 80&#41; &#123;
					$texcerpt = mb_wordwrap&#40;$the_title, 80, "\n"&#41;; //custom function for utf8 text
					$texcerpt = explode&#40;"\n", $texcerpt&#41;;
					$texcerpt = $texcerpt&#91;0&#93; . '...';
				&#125;else&#123;
					$texcerpt = $the_title;
				&#125;
			echo '<div class="fc_title"><h2><a href="' . $the_link . '" title="' . $the_title . '">' . $texcerpt . '</a></h2></div>';
				//cleanup content
				$the_content = strip_tags&#40;html_entity_decode&#40;$the_content&#41;&#41;;
				$the_content = preg_replace&#40;'/\xC2\xA0/',' ',$the_content&#41;; //remove &nbsp; in utf8
				$the_content = trim&#40;$the_content&#41;;
				//	Limit number of characters to 140
				//$excerpt = wordwrap&#40;$the_content, 140&#41;;  //does nor work with utf8 text
				$excerpt = mb_wordwrap&#40;$the_content, 140, "\n"&#41;; //custom function for utf8 text
				$excerpt = explode&#40;"\n", $excerpt&#41;;
				$excerpt = $excerpt&#91;0&#93; . '...';
			echo '<div class="fc_txt">' . $excerpt . '<a href="' . $the_link . '"><span class="fc_txt_span"><span></a></div>';
			echo '<div class="fc_more"><a href="' . $the_link . '" title="' . $the_title . '">περισσότερα &raquo;</a></div>';
			echo '<div class="fc_sep"></div>';
			echo '<div class="fc_header"><img src="http&#58;//news360.gr/img/icon_rss.png" width="16" height="16" alt="" /><a href="http&#58;//news360.gr/politics/">ΠΕΡΙΣΣΟΤΕΡΑ ΑΠΟ ΠΟΛΙΤΙΚΗ</a></div>';
			echo '<div class="fc_newslist">';
		&#125;
		if &#40;$usethispost > 0 && $i > 1 && $i < 7&#41; &#123;		
			//Limit title to 50 characters
			if &#40;mb_strlen&#40;$the_title&#41; > 50&#41; &#123;
				$texcerpt = mb_wordwrap&#40;$the_title, 50, "\n"&#41;; //custom function for utf8 text
				$texcerpt = explode&#40;"\n", $texcerpt&#41;;
				$texcerpt = $texcerpt&#91;0&#93; . '...';
			&#125;else&#123;
				$texcerpt = $the_title;
			&#125;
			echo '<div class="fc_newsitem"><a href="' . $the_link . '" title="' . $the_title . '">' . $texcerpt . '<span class="fc_newsitem_span"></span></a></div>';
			$i++;
			if &#40;$i > 6&#41;&#123;
				break;
			&#125;
		&#125;
		if &#40;$usethispost > 0 && $i == 1&#41; &#123;
			$i = 2;
		&#125;

	endwhile;
	echo '</div>';

?>

Άβαταρ μέλους
B_Dark
Δημοσιεύσεις: 321
Εγγραφή: 27 Ιαν 2006 04:45
Τοποθεσία: Center Of Athens

WP Plugin για πόσα άρθρα & από ποιες κατηγορίες εμφανίζονται στην αρχική σελίδα????

Δημοσίευση από B_Dark » 15 Αύγ 2011 17:35

gt68 έγραψε:Τελικά κατέληξα να το κάνω στο χέρι όπως περιγράφει ο viktoras παραπάνω.

Tο site έχει πολύ δουλειά ακόμη αλλά μπορείτε να δείτε την ομαδοποίηση των άρθρων ανά κατηγορία στο homepage εδώ: http://news360.gr

Παραθέτω και τον κώδικα με την προειδοποίηση ότι μαθαίνω php καθώς προγραμματίζω, επομένως ο κώδικας μάλλον δεν είναι και πολύ καλά γραμμένος. Πάντως δουλεύει.

Επόμενο task να βρω κάποιο τρόπο να ομαδοποιώ άρθρα από διαφορετικές πηγές που περιγράφουν την ίδια είδηση όπως κάνει το google news (clustering). Ιδέες κανείς???

Κώδικας: Επιλογή όλων

<?php
	//get posts
	$args = Array&#40;&#41;;
	$args&#91;'showposts'&#93; = 20;
	$args&#91;'orderby'&#93; = 'date';
	$args&#91;'order'&#93; = 'DESC';
	$args&#91;'cat'&#93; = '&#40;3,-15&#41;';				
	query_posts&#40;$args&#41;;
	$i = 1;
	while &#40;have_posts&#40;&#41;&#41; &#58; the_post&#40;&#41;;
		
		//get post content & check if contains image
		global $wpdb;
		$post_ID = $post->ID;
		$usethispost = 1;
		$hasimage = 1;
		// get the post content
		$usethispost = 1;
		$result = mysql_query&#40;"SELECT * FROM wp_posts WHERE ID='$post_ID'"&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
		$row = mysql_fetch_array&#40; $result &#41;;
		$the_content = $row&#91;'post_content'&#93;;
		$the_title = $row&#91;'post_title'&#93;;
		$the_link = $row&#91;'guid'&#93;;
		$the_date = $row&#91;'post_date'&#93;;
		
		if&#40;strlen&#40;$the_content&#41;&#41; &#123;
			// use regex to find the src of the first image
			preg_match&#40;'/<img src="&#40;.*?&#41;" width="&#40;.*?&#41;" height="&#40;.*?&#41;"/i', $the_content, $matches&#41;;
			if&#40;!$matches&#41; &#123;
				$hasimage = 0;
			&#125;else&#123;
				$the_image = $matches&#91;1&#93;;
				$imgw = $matches&#91;2&#93;;
				$imgh = $matches&#91;3&#93;;
			&#125;
		&#125;else&#123;
			$usethispost = 0;
		&#125;
					
		if &#40;$usethispost > 0&#41; &#123;
			if &#40;$i == 1&#41; &#123; //if is first post
				if &#40;$hasimage > 0 && &#40;$imgw > $imgh || $imgw == $imgh&#41;&#41; &#123;
					//scale-crop to 300x190
					if &#40;&#40;$imgw / $imgh&#41; > &#40;300 / 190&#41;&#41; &#123; //scale to height
						$nimgh = 190;
						$nimgw = intval&#40;$nimgh * &#40;$imgw / $imgh&#41;&#41;;
						$posy = 0;
						$posx = &#40;0 - intval&#40;&#40;$nimgw - 300&#41; / 2&#41;&#41;;
					&#125;else&#123; //scale to width
						$nimgw = 300;
						$nimgh = intval&#40;$nimgw * &#40;$imgh / $imgw&#41;&#41;;
						$posx = 0;
						$posy = intval&#40;&#40;$nimgh - 190&#41; / 2&#41;;
					&#125;
				&#125;else&#123;
					$usethispost = 0;
				&#125;
			&#125;
		&#125;
		
		if &#40;$usethispost > 0 && $i == 1&#41; &#123;
			echo '<div class="fc_cover">';
			echo '<a href="' . $the_link . '" title="' . $the_title . '">';
			echo '<img src="' . $the_image . '" alt="' . $the_title . '" width="' . $nimgw . '" height="' . $nimgh . '" style="left&#58;' . $posx . 'px; bottom&#58;' . $posy . 'px; position&#58; relative;" /></a></div>';
				//Limit title to 80 characters
				if &#40;mb_strlen&#40;$the_title&#41; > 80&#41; &#123;
					$texcerpt = mb_wordwrap&#40;$the_title, 80, "\n"&#41;; //custom function for utf8 text
					$texcerpt = explode&#40;"\n", $texcerpt&#41;;
					$texcerpt = $texcerpt&#91;0&#93; . '...';
				&#125;else&#123;
					$texcerpt = $the_title;
				&#125;
			echo '<div class="fc_title"><h2><a href="' . $the_link . '" title="' . $the_title . '">' . $texcerpt . '</a></h2></div>';
				//cleanup content
				$the_content = strip_tags&#40;html_entity_decode&#40;$the_content&#41;&#41;;
				$the_content = preg_replace&#40;'/\xC2\xA0/',' ',$the_content&#41;; //remove &nbsp; in utf8
				$the_content = trim&#40;$the_content&#41;;
				//	Limit number of characters to 140
				//$excerpt = wordwrap&#40;$the_content, 140&#41;;  //does nor work with utf8 text
				$excerpt = mb_wordwrap&#40;$the_content, 140, "\n"&#41;; //custom function for utf8 text
				$excerpt = explode&#40;"\n", $excerpt&#41;;
				$excerpt = $excerpt&#91;0&#93; . '...';
			echo '<div class="fc_txt">' . $excerpt . '<a href="' . $the_link . '"><span class="fc_txt_span"><span></a></div>';
			echo '<div class="fc_more"><a href="' . $the_link . '" title="' . $the_title . '">περισσότερα &raquo;</a></div>';
			echo '<div class="fc_sep"></div>';
			echo '<div class="fc_header"><img src="http&#58;//news360.gr/img/icon_rss.png" width="16" height="16" alt="" /><a href="http&#58;//news360.gr/politics/">ΠΕΡΙΣΣΟΤΕΡΑ ΑΠΟ ΠΟΛΙΤΙΚΗ</a></div>';
			echo '<div class="fc_newslist">';
		&#125;
		if &#40;$usethispost > 0 && $i > 1 && $i < 7&#41; &#123;		
			//Limit title to 50 characters
			if &#40;mb_strlen&#40;$the_title&#41; > 50&#41; &#123;
				$texcerpt = mb_wordwrap&#40;$the_title, 50, "\n"&#41;; //custom function for utf8 text
				$texcerpt = explode&#40;"\n", $texcerpt&#41;;
				$texcerpt = $texcerpt&#91;0&#93; . '...';
			&#125;else&#123;
				$texcerpt = $the_title;
			&#125;
			echo '<div class="fc_newsitem"><a href="' . $the_link . '" title="' . $the_title . '">' . $texcerpt . '<span class="fc_newsitem_span"></span></a></div>';
			$i++;
			if &#40;$i > 6&#41;&#123;
				break;
			&#125;
		&#125;
		if &#40;$usethispost > 0 && $i == 1&#41; &#123;
			$i = 2;
		&#125;

	endwhile;
	echo '</div>';

?>
πολύ ωραία δουλειά!!! :) Mιa λεπτομέρεια ίσως που σου ξέφυγε είναι η ημερομηνία στα νέα
Music is the spirit of love, happiness and life...

Απάντηση

Επιστροφή στο “WordPress Plugins”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες