Ge grupper av objekt olika färg med ajax i WP

Tråden skapades och har fått 16 svar. Det senaste inlägget skrevs .
1

Hej!
Sitter med mitt ex-projekt och har fastnat på en detalj, en ganska avgörande...

Det är så att vi trycker ut en hel del items i wordpress med ajax och de raddas upp med infinite scroll. Vi vill att de ska få olika toner av grönt. Det ska börja på en nyans och efter säg 10 inlägg ska det bli ljusare och efter ytterliggare 10 ännu ljusare. Sidan ska inte laddas om, varje nytt item som skapas ska kunna få färgen utan att ladda om. När man bläddrar neråt bland items så ska färgerna kunna fortsätta med..

Det tipset vi har fått är att göra nästlade arrayer (med nyans och antal för vardera, som kan vara random) och ha en kontroller som matar uppåt så snart en färg har matats ut. Men vi tvekar kring om det är bäst att göra med javascript/jquery eller php? Vi skulle verkligen uppskatta ett kod-exempel för vi vet inte riktigt var vi ska börja.

Förr eller senare måste de ut i ajax och vi sliter oss tunnhåriga...

Skulle verkligen verkligen uppskatta hjälp!

Ursprungligen av klarabara:

Hej!
Sitter med mitt ex-projekt och har fastnat på en detalj, en ganska avgörande...

Det är så att vi trycker ut en hel del items i wordpress med ajax och de raddas upp med infinite scroll. Vi vill att de ska få olika toner av grönt. Det ska börja på en nyans och efter säg 10 inlägg ska det bli ljusare och efter ytterliggare 10 ännu ljusare. Sidan ska inte laddas om, varje nytt item som skapas ska kunna få färgen utan att ladda om. När man bläddrar neråt bland items så ska färgerna kunna fortsätta med..

Det tipset vi har fått är att göra nästlade arrayer (med nyans och antal för vardera, som kan vara random) och ha en kontroller som matar uppåt så snart en färg har matats ut. Men vi tvekar kring om det är bäst att göra med javascript/jquery eller php? Vi skulle verkligen uppskatta ett kod-exempel för vi vet inte riktigt var vi ska börja.

Förr eller senare måste de ut i ajax och vi sliter oss tunnhåriga...

Skulle verkligen verkligen uppskatta hjälp!

Eftersom att ni redan är beroende av Javascript för att det här ska fungera så är det antagligen flexiblare att hantera detta i klientlagret, men det beror förstås helt på vilka andra krav ni har på interfacets beteende och hur er arkitektur ser ut i övrigt. Behöver ni inte röra elementen efter att de har presenterats så spelar det antagligen ingen roll. Var bygger ni layouten nu?

Oavsett vilket så är en lätt lösning att ha ett objekt som ansvarar för att generera nästa färgkod, då behöver ni bara fråga det om den när ett nytt listelement skapas och sedan kan det skickas vidare till dokumentet. Ska ni generera det på servern behöver ni bara inkludera en parameter med ordningen när ni skapar en ny request. På så sätt isolerar ni problemet till en separat komponent som är lätt att konfigurera och ersätta, andra delar av programmet behöver bara arbeta mot dess interface utan att känna något om hur det fungerar internt (slå gärna upp S.O.L.I.D.).

För att generera gradvis ljusare nyanser bör ni låta generatorn arbeta med HSL/HSV internt, då behöver ni bara öka intensitet i rätt intervall och sedan konvera till det format ni behöver i layoutsteget.

Det här var till stora delar grekiska för mig måste jag erkänna...

VI bygger den med wordpress och nu har vi börjat med ett förslag vi fick på StackOverflow:

$colors = array
  (
  array("blue", 2),
  array("yellow", 5),
  array("green",4)
  );

foreach($colors as $item){

    $colorClass = $item[0];
    $colorCount = $item[1];
    for($i=0; $i<$colorCount; $i++) {
      echo $colorClass;
    }

}

Men eftersom det hela även ska in i en foreach-loop så blir det som en evighetsloop i det här, funderar på ifall vi ska byta for-loopen till något annat, förslag?

Ursprungligen av klarabara:

Det här var till stora delar grekiska för mig måste jag erkänna...

VI bygger den med wordpress och nu har vi börjat med ett förslag vi fick på StackOverflow:

$colors = array
  (
  array("blue", 2),
  array("yellow", 5),
  array("green",4)
  );

foreach($colors as $item){

    $colorClass = $item[0];
    $colorCount = $item[1];
    for($i=0; $i<$colorCount; $i++) {
      echo $colorClass;
    }

}

Men eftersom det hela även ska in i en foreach-loop så blir det som en evighetsloop i det här, funderar på ifall vi ska byta for-loopen till något annat, förslag?

Det ser ut som om ni arbetar över många nivåer av problemet samtidigt. Det blir lättare att hantera ifall ni bryter upp det i mindre uppgifter som kan lösas fristående. Förutom att det brukar bli lättare att bilda sig en uppfattning om vad man behöver göra, och därmed att lösa det ursprungliga problemet, så leder det oftast till att man skriver mer strukturerat.

Tror att det blir lättare att hjälpa er om ni förklarar vad ni har för konkreta problem med kodsnutten ovan. Det är ju bara ett utkast på hur ni skulle kunna mata in en lista med färger som ska repeteras ett visst antal gånger?

Med jQuery är det inte särskilt svårt, även om just den här lösningen kanske inte är lika tekniskt elegant som att räkna ut färgerna dynamiskt:

// post-load är ett event som triggas utav Infinite Scroll-pluginen i WordPress Jetpack när det laddas inlägg, se http://jetpack.me/support/infinite-scroll/
$(document.body).bind('load post-load', function() {
	var colors = [
		'#000',
		'#111',
		'#222',
		'#333',
		'#444',
		'#555',
		'#666'
	]

	$('.post').each(function(index) {
		var colorIndex = Math.floor(index / 10) // Math.floor() avrundar neråt
		var currentColor = colors[colorIndex]
		$(this).css('background-color', currentColor)
	})
})

(det är helt oprövat, men principen borde funka)

Skulle rekommendera att ni delar upp just problemet med färgerna i två delar. Först interfacet resten av er kod behöver för att anropa det, och sedan en implementation som returnerar de färger ni behöver i rätt ordning. Ponera att ni gör det här i Javascript, och inte behöver bekymra er om att behålla state på servern eller vilken ordning requests startas och avslutas i, så skulle det i princip räcka med en metod för att returnera nästa färg:

interface IColorGenerator
{
    public function getNextColor();
}
class ListGenerator implements IColorGenerator
{
    // Returnera nästa färg i listan
    public function getNextColor() { throw new NotImplementedException(); }
}

class HSVGenerator implements IColorGenerator
{
    // Räkna fram nästa nyans i serien
    public function getNextColor() { throw new NotImplementedException(); }
}

class StaticGenerator implements IColorGenerator
{
    // Returnera alltid samma färg, t.ex. "#ff0000".
    public function getNextColor() { throw new NotImplementedException(); }
}

När ni skapar ett nytt element till er lista räcker det då att göra något i den här stilen:

listElement.backgroundColor = colorGenerator.getNextColor();

Listelementet behöver inte veta något om hur den aktuella generatorn fungerar så den är lätt att ersätta utan att påverka andra delar av er kod, om ni t.ex. vill ändra på hur färgerna tas fram. Det finns två metoder för det tidigare i tråden, den första är att ha en förprogrammerad lista med egna färger samt i vilka intervall de ska gälla, den andra är att skapa en ljusare nyans automatiskt med t.ex. HSV. Båda metoder har sina egna för- och nackdelar, men båda fungerar. Det viktiga är att ni har isolerat hanteringen av färger till en separat komponent. Som ni ser i exemplet ovan så kan ni t.o.m. göra en variant som alltid returnerar samma färg för att skjuta upp det här problemet tills det att ni har löst var och hur ni ska sätta färgerna på layoutelementen.

// Exempel på en generator som returnerar samma färg ett visst antal gånger

class ListGenerator implements IColorGenerator
{
    private
        $colors = [
            "blue",
            "blue",
            "yellow",
            "yellow",
            "yellow",
            "yellow",
            "yellow",
            "green",
            "green",
            "green",
            "green"
        ];
    
    public function getNextColor()
    {
        if(($color = array_shift($this->colors)) !== null)
        {
            return $color;
        }
        else
        {
            throw new Exception("Slut på färger");
        }
    }
}
// Exempel på en generator som skapar en ljusare nyans automatiskt
// Körbart demo:
// http://codepad.viper-7.com/LMU5I3

class HSVGenerator implements IColorGenerator
{
    //
    // Lite startvärden
    //
    private
        $h = 85,
        $s = 0.5,
        $v = 0.5;
    
    public function getNextColor()
    {
        list($r, $g, $b) = self::HSV2RGB($this->h, $this->s, $this->v);
        
        // Le fulhack. Demonstrerar bara hur man gör nyansen ljusare.
        // Fungerar naturligtvis inte när ni vill göra det på riktigt.
        // Ni måste själva bestämma hur nyansen ska ändras.
        
        $this->v += 0.1;
        
        return sprintf("#%'02x%'02x%'02x", $r, $g, $b);
    }
    
    //
    // Från http://en.wikipedia.org/wiki/HSL_and_HSV#From...
    // Snabbt omskrivet till PHP, inte testat ordentligt
    //
    private static function HSV2RGB($h, $s, $v)
    {
        $chroma = $s * $v;
        $sector = $h / 60;
        $x      = $chroma * (1 - abs(fmod($sector, 2) - 1));
        
        $r = 0;
        $g = 0;
        $b = 0;
        
        if($sector >= 0 && $sector < 1)
        {
            $r = $chroma;
            $g = $x;
            $b = 0;
        }
        else if($sector >= 1 && $sector < 2)
        {
            $r = $x;
            $g = $chroma;
            $b = 0;
        }
        else if($sector >= 2 && $sector < 3)
        {
            $r = 0;
            $g = $chroma;
            $b = $x;
        }
        else if($sector >= 3 && $sector < 4)
        {
            $r = 0;
            $g = $x;
            $b = $chroma;
        }
        else if($sector >= 4 && $sector < 5)
        {
            $r = $x;
            $g = 0;
            $b = $chroma;
        }
        else if($sector >= 5 && $sector < 6)
        {
            $r = $chroma;
            $g = 0;
            $b = $x;
        }
        
        $m = $v - $chroma;
        
        $r += $m;
        $g += $m;
        $b += $m;
        
        return [
            ceil($r * 255),
            ceil($g * 255),
            ceil($b * 255)
        ];
    }
}

Nu är exemplen skrivna i PHP för tydlighetens skull, men antagligen närmare hur ni vill att de ska fungera om ni löser det med Javascript direkt i webbläsaren. Syntaxen är ju i sig inga problem att översätta mellan språken. Ska ni generera färgen på servern så måste ni även hantera requests som skapas och returneras i olika ordning samt att kunna återuppta genereringen vid en viss position i listan, och bifoga denna som parameter från webbläsaren när listan måste fyllas på.

Hoppas att det hjälper lite.

Senast redigerat 2013-04-02 12:41

WOW! Jag känner mig helt rörd av så många svar!
Det här kan tydligen göras precis hur komplicerat och hur svårt som helst...

Vi är ute efter enklast möjliga sätt att sätta ut klasser på items i ordning så det blir 10 items av varje färg, i följd. Färgkoderna är bestämda med kund, 5st, inget mer som ska räknas ut där.

Såhär ser koden ut som ska ha färg:

foreach($comments as $comment){
				
		?>
		<article id="comment-<?php comment_ID(); ?>" class="comment element comment-color-<?php echo $loop_color ?>">
					<div class="comment-content"><?php comment_text(); ?></div>
					<span class="comment-date"><?php comment_time('j/n Y'); ?></span>
					<span class="comment-id">#
						<?php 
							if ( $page == 1 ) {
								echo $comments_count; 
							} else if ($page > 1 ) {
								echo ($comments_count - $limit * ($page - 1));
							};
							$comments_count--;
						?>
					</span>
				</article>				
		<?php
		
					$color = null;
					$color = $loop_color;
				}

Vilket skapar något sådant här:

http://postimg.org/image/sh2lbc1a9/
$loop_color är den variabel vi vill ha ut en färg i, så enkelt som det bara går.

jQuery känns frestande, men förstår nog inte hur den gör flera av samma färg?

Jag har fått rådet att använda den här nu men att göra om den till php:

var colors = [["blue",2],["yellow",5],["green",4]];
		var colorClass = [];
		for (var i = 0; i < colors.length; i++) {
		    for (var g = 0; g < colors[i][1]; g++) {
		        colorClass.push(colors[i][0]);
				colorClass
		    }
		}
		output -> ["blue", "blue", "yellow", "yellow", "yellow", "yellow", "yellow", "green", "green", "green", "green"]

Mitt försök till översättning:

$colors = array
  (
  array("blue", 2),
  array("yellow", 5),
  array("green",4)
  );
$colorClass = [];
for ($i = 0; $i< count($colors); $i++) {
    for ($g = 0; $g < $colors[$i],[1]; $g++) {
		array_push($colorClass[$i][0]);
		
                print_r($colorClass[$i][0]);
		
    }
}

Vilket inte alls fungerar, det snällaste felet är: Warning: array_push() expects at least 2 parameters, 1 given in /Users.... on line 27

I brist på bättre förstånd har vi testat:

//foreach($comments
	$color_array = array ("green-1", "green-2", "green-3","green-4","green-5","green-4", "green-3","green-2");
				$color_count = 0;
				$color_item = 0;	

				/* PRINTING THEM OUT */
				foreach($comments as $comment) {

					if($color_count < 9) {
						$color = $color_array[$color_item];
						$color_count++;
					} else {
						if($color_item < 2) {
							$color_item++;
						} else {
							$color_item = 0;
						}
						$color_count = 0;
					}
				

Vilket gav oss tre färger, sen började den om. Nu skulle jag vara lycklig om den bara ville skriva ut alla nyanserna, att få dit den med ajax tror jag vi kan lösa med ett hidden-field inne i det formulär där vi trycker ut nya kommentarer.

Den här color-generatorn verkar ju vara helt fantastisk, men hur gör man för att få in den på varje kommentar? Den känns lite overkill..

@klarabara:

Citat:

Det här kan tydligen göras precis hur komplicerat och hur svårt som helst...

Välkommen till programmering...

Citat:

Vi är ute efter enklast möjliga sätt att sätta ut klasser på items i ordning så det blir 10 items av varje färg, i följd. Färgkoderna är bestämda med kund, 5st, inget mer som ska räknas ut där.

Observera att jag inte vill komplicera det i onödan, jag försöker bara hjälpa till med att dela upp problemet så att ni kan tackla dess olika delar separat.

Citat:

http://postimg.org/image/sh2lbc1a9/
$loop_color är den variabel vi vill ha ut en färg i, så enkelt som det bara går.

Om ni har ett objekt som kan skapa färgkoden åt er i samma scope så behöver ni bara ersätta $loopColor med ett anrop till det, typ så här:

<?= $obj->getNextColor(); ?>

Jag förstår dock inte om ni vill att färgen ska bli gradvis ljusare för hela listan eller om nyanserna ska repeteras inom varje block som laddas. Har antagit det förra.

Citat:

jQuery känns frestande, men förstår nog inte hur den gör flera av samma färg?

@irrelogical's exempel väntar på en event som indikerar att nya listelement har laddats in, sedan loopar den över alla element med klassen .post och sätter en ny bakgrundsfärg. Det första argumentet till callbacken för each() innehåller indexet, genom att dela det med 10 och avrunda till ett heltal och använda det som position i listan kan samma färg repeteras lika många gånger.

Citat:

Jag har fått rådet att använda den här nu men att göra om den till php:
...
Vilket inte alls fungerar, det snällaste felet är: Warning: array_push() expects at least 2 parameters, 1 given in /Users.... on line 27

Felmeddelandet beror på att den första parametern till array_push() ska vara arrayen du vill lägga till elementet i. Det ser ut som om ni vill lägga till ett element från $colors[$i][0] till $colorClass. Koden ni har där kommer dock även köra i all evighet eftersom att det har smugit sig in ett "," i "$g < $colors[$i],[1]".

// Justerad version

foreach($colors as $kvp)
{
    for($n = 0; $n < $kvp[1]; ++$n)
    {
        array_push($colorClass, $kvp[0]);
    }
}

var_dump($colorClass);

Citat:

Den här color-generatorn verkar ju vara helt fantastisk, men hur gör man för att få in den på varje kommentar? Den känns lite overkill..

Overkill är den verkligen inte, men den illustrerar ett annat sätt att tänka vad gäller sammansättningen av erat program. I styckena ovan har ni blandat olika uppgifter med varandra och det gör det mycket svårare att arbeta med i längden. Om ni hade haft färgkoden i en variabel, som ovan, hur hade ni då fått in den i layoutelementet? Svaret är detsamma oavsett var färgkoden kommer ifrån: bara gör den tillgänglig för den komponent som bygger layouten. Hur den skapas eller varifrån den kommer spelar ingen roll för den uppgiften.

En av anledningarna till att jag sitter här

Du anar ändå inte just hur mycket jag uppskattar din hjälp, sjukt mycket!
Har bara börjat bli stressad för det här, presentation idag, och då får man lite panik över kod som är mer än fem rader

Jag har i alla fall kommit en bit på vägen nu. Inatt insåg jag att anledningen till att den inte tar alla färger är att pagineringen nollställer värdet! Så ökar man antalet items per sida så får man fler färger. Got it!

/* COUNTING COMMENTS SO WE CAN PRINT THEM IN REVERSE ORDER */
			$comments_count = wp_count_comments()->approved;
			
			/* LOOPING OUT ALL COMMENTS */
			define('DEFAULT_COMMENTS_PER_PAGE',30);
			$page = (int) (!isset($_REQUEST["page"]) ? 1 : $_REQUEST["page"]);
			$limit = DEFAULT_COMMENTS_PER_PAGE;
			$offset = ($page * $limit) - $limit;
			$param = array(
				'status'=>'approve',
				'offset'=>$offset,
				'number'=>$limit,
			);
			
			$total_comments = get_comments(array('status'=>'approve'));
			$pages = ceil(count($total_comments)/DEFAULT_COMMENTS_PER_PAGE);
			$comments = get_comments($param);
                        $color_array = array (1, 2, 3, 4, 5, 4, 3, 2);  // list of color index values
			$colors = 7; 

			$count = 0;
			$color_index = 0;

			$comment_span = 9; // 0 through 9 is 10 comments

				/* PRINTING THEM OUT */
				foreach($comments as $comment) {
					$current_color = $color_array[$color_index];
		
		?>
				<article id="comment-<?php comment_ID(); ?>" class="comment element comment-color-<?php echo $color_array[$color_index]; ?>">
					<div class="comment-content"><?php comment_text(); ?></div>
					<span class="comment-date"><?php comment_time('j/n Y'); ?></span>
					<span class="comment-id">#
						<?php 
							if ( $page == 1 ) {
								echo $comments_count; 
							} else if ($page > 1 ) {
								echo ($comments_count - $limit * ($page - 1));
							}
							$comments_count--;
						?>
					</span>
				</article>				
		<?php
			$count++;
					if ($count >= $comment_span) {
						$color_index++;
						$count = 0;
					}
					if ($color_index >= $colors) {
						$color_index = 0;
					}
				}
			/* PAGENATION ARGUMENTS */ 
			$args = array(
				'base'         => '?page=%#%',
				'format'       => '?page=%#%',
				'total'        => $pages,
				'current'      => $page,
				'show_all'     => False,
				'end_size'     => 1,
				'mid_size'     => 2,
				'prev_next'    => True,
				'prev_text'    => __('« Previous'),
				'next_text'    => __('Next »'),
				'type'         => 'plain'
			);	
			
		?>
	</div>
	
	
	<div class="navigation">
		<?php echo paginate_links( $args, $current_color ); ?>
	</div>

Så nu håller jag på med en eventuell callback i javascriptet som tar med sig värdet av färgen till nästa sida. Kan det fungera?

},
        // call Isotope as a callback
        function( newElements ) {
          $container.isotope( 'appended', $(newElements) ); 
		  $(newElements).addClass()
        }//kan stoppa in värdet här nånstans?
      );
});
Ursprungligen av klarabara:

Så nu håller jag på med en eventuell callback i javascriptet som tar med sig värdet av färgen till nästa sida. Kan det fungera?

},
        // call Isotope as a callback
        function( newElements ) {
          $container.isotope( 'appended', $(newElements) ); 
		  $(newElements).addClass()
        }//kan stoppa in värdet här nånstans?
      );
});

Den där koden ser ut att ansvara för att ta elementen du precis har hämtat upp från servern och sedan placera dem i din lista. Den verkar inte göra något för att förbereda nästa anrop till servern, vilken komponent har du som sköter det åt dig? (Isotopes dokumentation.)

Färgerna finns ju dock färdiga i elementen, du kan hämta ut bakgrunden ur stylen för det sista elementet i antingen listan eller den mindre gruppen, de är samma. Med vad ska du göra med den? Du måste fortfarande skicka vidare den till servern med nästa request någonstans. Du bör även använda ett ordningsnummer istället för färgkoden, det kommer troligen bli lättare att slå upp det för att fortsätta med nyansen efter den förra gruppen avslutades.

Jo, jag insåg det när jag började pilla på riktigt.

Efter loopen:

/* PAGENATION ARGUMENTS */ 
			$args = array(
				'base'         => '?page=%#%',
				'format'       => '?page=%#%',
				'total'        => $pages,
				'current'      => $page,
				'show_all'     => False,
				'end_size'     => 1,
				'mid_size'     => 2,
				'prev_next'    => True,
				'prev_text'    => __('« Previous'),
				'next_text'    => __('Next »'),
				'type'         => 'plain',
				'add_fragment' => '&currentColor='.$current_color,
			);	
			
		?>
	</div>

	
	<div class="navigation">
		<?php echo paginate_links( $args); ?> 
	</div>

Vilket gör att jag får ut värdet i en länk så som ....page-title&currentColor=4
Som jag försöker hämta in här:

//CURRENT COLOR
function getURLParameter(currentColor) {//hämtar in currentColor?
    return decodeURI(
        (RegExp(currentColor + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
    );
}
// INFINITE SCROLL - global variables
$(document).ready(function(decodeURI) {//värdet från getURIParameter...
	// request.open("GET", "VADÄRDET.php?currentColor=" + contentValue, true);
	
	var commentContent = jQuery('#comment').val();
	var commentDate = $.datepicker.formatDate('d/m yy', new Date());
	var commentId = jQuery('#comment-id').val();
	var currentColor = decodeURI; //försöker hämta in värdet.
	var newItems = $('<article class="element comment-color-'+currentColor+'"><div class="comment- content">'+commentContent+'</div><span class="comment-date">'+commentDate+'</span> <span class="comment-id">#'+commentId+'</span></article>');//stoppar in värdet.
	return newItems;
});

	
// ADDING ITEMS TO INFINITE SCROLL
$(document).ready(function(newItems) {
      var $container = $('#container');
      $container.isotope({
        itemSelector : '.element'
      });

      $container.infinitescroll({
        navSelector  : '.navigation',    // selector for the paged navigation 
        nextSelector : '.navigation .next',  // selector for the NEXT link (to page 2)
        itemSelector : '#container .comment',
        loading: {
            finishedMsg: ' ',
            img: 'http://kmvdesign.se/klara_elias/wp-content/th...'
          }
        },
        // call Isotope as a callback
        function( newElements ) {
          $container.isotope( 'appended', $(newElements) );//Värdet skickas med till nya items här!
	}
      );
});

Är jag något på spåret?

@klarabara:

Ursprungligen av klarabara:

Jo, jag insåg det när jag började pilla på riktigt.

Efter loopen:

/* PAGENATION ARGUMENTS */ 
			$args = array(
				'base'         => '?page=%#%',
				'format'       => '?page=%#%',
				'total'        => $pages,
				'current'      => $page,
				'show_all'     => False,
				'end_size'     => 1,
				'mid_size'     => 2,
				'prev_next'    => True,
				'prev_text'    => __('« Previous'),
				'next_text'    => __('Next »'),
				'type'         => 'plain',
				'add_fragment' => '&currentColor='.$current_color,
			);	
			
		?>
	</div>

	 PAGINATION LINKS 
	<div class="navigation">
		<?php echo paginate_links( $args); ?> 
	</div>

Vilket gör att jag får ut värdet i en länk så som ....page-title&currentColor=4

Sidan som ska hämta upp fler listelement bör själv hålla reda på listans position och alla väntande serveranrop. Att skriva ut en komplett sida, istället för att endast returnera nästa grupp kommentarer, bara för se vilket sidnummer man är på är ganska baklänges. Förutom att det är konstigt rent arkitekturellt så kräver det extra resurser för både server och besökare, och kan orsaka oväntade bieffekter i framtiden.

Citat:
$(document).ready(function(decodeURI) { // värdet från getURIParameter... });
$(document).ready(function(newItems) { // ... });

Det första argumentet till ready() är alltid samma: en referens till jQuery självt för att ge er möjligheten att använda ett annat alias inuti callbacken. decodeURI och newItems är alltså inte vad ni antar i de här funktionerna. Prova att sätta brytpunkter inuti funktionerna innan de körs för att se vad som faktiskt händer. Det skadar aldrig att läsa manualen, i.a.f. grunderna, för de ramverk man väljer att använda heller.

Vet inte vad det är ni studerar, men om ni inte betygsätts på programmet så kanske ni skulle överväga att anlita en webbutvecklare?

Aj?

Det kanske vore på sin plats att fråga innan man ger sådana svar?

Programmering är en kurs på 9 veckor (av två års studier) och jag har aldrig utgett mig för att vara webbutvecklare. Det känns mer effektivt (om man vill vara till hjälp) att möta den andra personen på den nivå den befinner sig, anser i alla fall jag.

Vidare har du sett korta utsnitt av vår kod, korta nog för att illustrera vad jag frågar om. Att döma de avsnitten som irrelevanta bara för att de alla inte är avgörande för det jag frågar om känns ju också..konstruktivt?

Ursprungligen av klarabara:

Aj?

Det kanske vore på sin plats att fråga innan man ger sådana svar?

Programmering är en kurs på 9 veckor (av två års studier) och jag har aldrig utgett mig för att vara webbutvecklare. Det känns mer effektivt (om man vill vara till hjälp) att möta den andra personen på den nivå den befinner sig, anser i alla fall jag.

Vidare har du sett korta utsnitt av vår kod, korta nog för att illustrera vad jag frågar om. Att döma de avsnitten som irrelevanta bara för att de alla inte är avgörande för det jag frågar om känns ju också..konstruktivt?

Ber om ursäkt. Antog att programmeringen var sekundär eftersom att ni tilläts fråga om hjälp kring hur ni utförde en så viktig del av ex-projektet. Det är svårt att veta vilken nivå andra befinner sig på, men jag har bara avsett att försöka hjälpa er. Lämnar den här tråden till andra nu.

Har ni kollat på den koden jag postade? Om man byter ut ".post" mot ".comment" (och såklart färgerna) så borde den ge önskat resultat.

Vi löste det hela med den här koden:

$color_array = array (1, 2, 3, 4, 5, 4, 3, 2);  // list of color index values
			$colors = 7; 

			$count = 0;
			$color_index = 0;

			$comment_span = 9; // 0 through 9 is 10 comments

				/* PRINTING THEM OUT */
				foreach($comments as $comment) {
					$current_color = $color_array[$color_index];
			
		?>
				<article id="comment-<?php comment_ID(); ?>" class="comment element comment-color-<?php echo $color_array[$color_index]; ?>">
					<div class="comment-content"><?php comment_text(); ?></div>
					<span class="comment-date"><?php comment_time('j/n Y'); ?></span>
					<span class="comment-id">#
						<?php 
							if ( $page == 1 ) {
								echo $comments_count; 
							} else if ($page > 1 ) {
								echo ($comments_count - $limit * ($page - 1));
							}
							$comments_count--;
						?>
					</span>
				</article>				
		<?php
					$count++;
					if ($count >= $comment_span) {
						$color_index++;
						$count = 0;
					}
					if ($color_index >= $colors) {
						$color_index = 0;
					}
				}

Sen löste den jag jobbar ihop med den ajax-delen, med något jag tror är snarlikt, så vi är klara!!

Jag vill gärna fortsätta med projektet på något vis senare så jag kommer nog återkomma till det här igen, var så säker!

Vi har nu presenterat både för kund och för skolan, alla supernöjda! Vi ska installera wp hos kund imorrn och det ska fanfaras och drickas lite bubbel minsann!

TACK något ofantligt för hjälpen bägge två!

1
Bevaka tråden