Avatar billede drinkit Praktikant
26. august 2009 - 16:39 Der er 18 kommentarer og
1 løsning

While løkke i wordpress?

<h4>EVENTS OVERSIGT</h4><br />
<ul>
<?php
$num = 1;
query_posts('showposts=10000');
while (have_posts()) : the_post();
?>
<li><a href="<?php the_permalink(); ?>" title="d. <?php the_time('d/m-Y')?>"><?php the_title(); ?></a></li>
<?php
$num++;
endwhile;
?>
</ul>

Den virker som den skal løkken ovenfor.
Men jeg vil gerne have en class="selected" på det link der er aktivt - altså, når p=200 og den posts der har p 200 er aktiv, så skal class="selected" sættes på linket

Jeg har prøvet med if request p == the_permalink(); men det virker ikke.

se siden på www.xup.dk hvis det gør forståelsen nemmere. :)
Avatar billede coderdk Praktikant
27. august 2009 - 01:31 #1
Jeg gætter, men prøv:

<h4>EVENTS OVERSIGT</h4><br />
<ul>
<?php
$num = 1;
$currentPostId = $post->ID
query_posts('showposts=10000');
while (have_posts()) : the_post();
?>
<li><a <?php echo $post->ID == $currentPostId ? 'class="selected" ' : '' ) ?>href="<?php the_permalink(); ?>" title="d. <?php the_time('d/m-Y')?>"><?php the_title(); ?></a></li>
<?php
$num++;
endwhile;
?>
</ul>
Avatar billede drinkit Praktikant
27. august 2009 - 08:03 #2
Hmm.. Den giver parse error, men mit webhotel har slået fra, så jeg ikke kan se hvilken fejl!
Avatar billede coderdk Praktikant
27. august 2009 - 08:22 #3
$currentPostId = $post->ID

skal bare være

$currentPostId = $post->ID;
Avatar billede drinkit Praktikant
27. august 2009 - 09:36 #4
Ok, har rettet det nu. Stadig fejl!
- Siden er bare helt hvid, hvilket plejer at betyde parse error.
Jeg ændre det lige tilbage til det gamle igen, men har du nogen idé om hvad fejlen er?
Avatar billede coderdk Praktikant
27. august 2009 - 09:41 #5
Sorry, denne burde ikke give parse error:


<h4>EVENTS OVERSIGT</h4><br />
<ul>
<?php
$num = 1;
$currentPostId = $post->ID;
query_posts('showposts=10000');
while (have_posts()) : the_post();
?>
<li><a <?php echo ( $post->ID == $currentPostId ? 'class="selected" ' : '' ); ?>href="<?php the_permalink(); ?>" title="d. <?php the_time('d/m-Y')?>"><?php the_title(); ?></a></li>
<?php
$num++;
endwhile;
?>
</ul>
Avatar billede drinkit Praktikant
27. august 2009 - 09:54 #6
PERFEKT! Jeg har virkelig siddet og tænkt længe over hvordan det kunne gøres :)
Smid et svar - og hvis muligt, så forklar hvordan du gjorde. Jeg forstår ikke helt koden.

VH -God dag
Avatar billede drinkit Praktikant
27. august 2009 - 09:56 #7
hov, bortset fra EN mærkelig fejl.
Når man trykker "Vis alle posts" øvert på www.xup.dk
så er der class="selected" på den nederste post - hvis du kan se det? Hvordan kan det være!?
Avatar billede drinkit Praktikant
27. august 2009 - 10:07 #8
Altså, når p ikke = en post, men en side jeg selv har lavet - så er nederste post ude i højre side "Events oversigt" markeret med class="selected".
Jeg har en side der hedder ?kontakt og en der hedder ?oversigt
Avatar billede coderdk Praktikant
27. august 2009 - 20:16 #9
Hmm ok prøv at lave en var_dump på $post (eller $post->ID) i toppen for at se hvad den er sat til...

Forklaring på det jeg lavede:

$currentPostId = $post->ID;

Gemmer den aktuelle posts ID til sammenligning inde i loopet...

echo ( $post->ID == $currentPostId ? 'class="selected" ' : '' );

kan også skrives som:

if ( $post->ID == $currentPostId )
{
  echo 'class="selected" ';
}
else
{
  echo '';
}

Altså: Sammenlign, posten i loopet, med hvad du har gemt i $currentPostId, skriv noget hvis det er den samme, ellers skriv en tom streng ud...
Avatar billede coderdk Praktikant
27. august 2009 - 20:20 #10
Prøv at ændre:

echo ( $post->ID == $currentPostId ? 'class="selected" ' : '' );

til:

echo ( !is_page() && $post->ID == $currentPostId ? 'class="selected" ' : '' );
Avatar billede drinkit Praktikant
28. august 2009 - 08:10 #11
Mærkeligt. Nu skifter den lidt, nogen gange er det den øverste der har class="selected", andre gange er det den nederste.
Se selv på www.xup.dk

Tryk "Se alle posts" øverst eller "kontakt" nede i bunden!

Nogle ideer?

Tak for forklaringen :L)
Avatar billede coderdk Praktikant
28. august 2009 - 10:19 #12
Hmm. Det ser underligt ud - hvis du bruger den sidste med is_page() så burde det virke - med mindre oversigten ikke er en side...

Prøv lige:

<h4>EVENTS OVERSIGT</h4><br />
<ul>
<?php
$num = 1;
$currentPostId = $post->ID;
$is_page = is_page();
query_posts('showposts=10000');
while (have_posts()) : the_post();
?>
<li><a <?php echo ( !$is_page && $post->ID == $currentPostId ? 'class="selected" ' : '' ); ?>href="<?php the_permalink(); ?>" title="d. <?php the_time('d/m-Y')?>"><?php the_title(); ?></a></li>
<?php
$num++;
endwhile;
?>
</ul>
Avatar billede drinkit Praktikant
28. august 2009 - 11:50 #13
det er en side jeg selv har lavet.. altså med en if ?side=kontakt includer den kontakt.php og if ?side= oversigt includer den siden oversigt.php.
Så det er ikke wordpress sider. Hvis du forstår?
Men jeg prøver lige det du har skrevet ovenover.

:)

Mikael
Avatar billede drinkit Praktikant
28. august 2009 - 11:51 #14
www.xup.dk - stadig samme fejl.
kan man ikke bare gøre så når side=et eller andet, så er der ingen af linksne der er class="selected" ?
Avatar billede drinkit Praktikant
28. august 2009 - 12:14 #15
oversigt.php ser sådan her ud:

&#65279;<a href="http://www.xup.dk"><b>« Forside</b></a>
<?php
$num = 1;
query_posts('showposts=10000');
while (have_posts()) : the_post(); ?>
<hr />
<h1><?php the_title(); ?></h1>
<br /><br />
<h3><?php the_time('d/m-Y'); ?>, kl. <?php the_time() ?> <?php edit_post_link(__('Redigér')); ?></h3>
<?php the_content(); ?>
<?php
$num++;
endwhile;
?>
Avatar billede coderdk Praktikant
28. august 2009 - 12:17 #16
Har du ikke oprettet en side til det i wordpress? Ellers er det jo det du bør gøre... Hvis du har brug for noget speciel kode, kan du bare lave en template til det, jo.
Avatar billede drinkit Praktikant
29. august 2009 - 11:19 #17
Jeg ved ik hvordan man kan bruge php i pages. Når jeg opretter en page virker phpen ik. Hvordan laver man templates pages?
Avatar billede coderdk Praktikant
31. august 2009 - 09:07 #18
hvis du bruger en template der hedder "drinkit", så kan du oprette en sejside.php i /wp-content/themes/drinkit/ - i toppen af sejside.php skriver du:

<?php
/*
Template Name: En sej side
*/

get_header();

?>
dit indhold her
<?php

get_footer();

?>


denne template kan du så vælge for en side, ude i højre side :)

se evt. http://www.wpdesigner.com/2007/02/19/so-you-want-to-create-wordpress-themes-huh/
eller en af de mange andre tuts omkr wordpress themes :)
Avatar billede drinkit Praktikant
31. august 2009 - 16:20 #19
Det er også sådan jeg har gjort. Tak for hjælpen med det hele.
:) God dag
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester