PHP frontpage probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen -

Jeroen -

28/01/2015 15:24:50
Quote Anchor link
Beste PHP'ers,

Na tegen veel drempels te zijn aangelopen en steeds zelf een oplossing te hebben gevonden, lukt het me nu helaas echt niet op mijn huidige probleem op te lossen. Ik heb geen opleiding op het gebied van websites maken gedaan dus ik ben eigenlijk nog maar een groentje. Daarom schakel ik graag de hulp in van jullie als experts.

Als hobbyist ben ik aan een eigen reis(wordpress)website begonnen: Goedkopevliegticketsmarokko.com. Zoals je hier kunt zien, begint het ergens op te lijken. Het blok met 'Oujda' staat echter niet op de juiste plek. Ik zou graag willen dat dit blok netjes onder het blok van 'Nador' komt te staan en dat daardoor de andere blokken ook netjes door schuiven. Uiteindelijk wil ik 3 rijen met 4 kolommen.

Ik denk het probleem te maken heeft met de template front-page.php uit wordpress. En dan wel met dit stukje code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    <?php

    if ( !defined('ABSPATH')) exit;



    get_header();

    ?>

    </div>

<div class="container">
    <?php if(is_front_page()): ?>
    <div class="row wpeden-bs-services">
    <?php for($i=1;$i<=12;$i++){ ?>
    <div class="span3">
    <?php $tpid = (int)sensitive_get_theme_opts('home_featured_page_'.$i); $intropage = get_page($tpid); $introcontent = strip_tags(strip_shortcodes($intropage->post_content),"p,br"); if (preg_match('/^.{1,80}\b/s', $introcontent, $match)) $introcontent = $match[0]; else $introcontent = substr($introcontent,0,80);  ?>
    <div class="about well">
      <a href="<?php echo get_permalink($intropage->ID); ?>"><?php sensitive_thumb($intropage,array(500,300), array('class'=>'img')); ?></a>
      <div class="entry-content">
      <h2><?php echo $intropage->post_title; ?></h2>
      <p><?php echo $introcontent; ?></p>
      </div>
      <a href="<?php echo get_permalink($intropage->ID); ?>" class="btn <?php echo sensitive_get_theme_opts('button_style','btn-info'); ?> btn-block">Koop vliegtickets!</a>
      </div>  
      </div>
      <?php } ?>

      <!-- /.span4 -->

      <?php get_template_part('homepage','category'); ?>      



      <div class="clear"></div>
      <div>
      </div>          

      </div><!-- /.span4 -->

      </div>
      <?php endif; ?>
      </div>


      <div class="clear"></div>
      <div>
      </div>          

      </div><!-- /.span4 -->

    </div>
 </div>
     </div>
     </div>


Zou iemand alsjeblieft een kijkje willen nemen? Als je meer informatie nodigt hebt, voel je vrij om het te vragen!

Alvast heel erg bedankt!

Met vriendelijke groet,

Jeroen
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt![/modedit]
Gewijzigd op 28/01/2015 15:43:40 door Jeroen -
 
PHP hulp

PHP hulp

25/04/2024 16:50:27
 
- Ariën  -
Beheerder

- Ariën -

28/01/2015 15:39:57
Quote Anchor link
Hij is niet helemaal valid.
Ik lees enkele dingen over afsluitende tags die mogelijk missen.
 
Jeroen -

Jeroen -

28/01/2015 15:44:07
Quote Anchor link
Mijn excuses. Ik heb nu de hele code geplakt!
 
- SanThe -

- SanThe -

28/01/2015 15:59:07
 
Thomas van den Heuvel

Thomas van den Heuvel

28/01/2015 17:40:58
Quote Anchor link
Wat ook enorm kan helpen is het correct "inspringen" in je HTML / PHP code. Hoe je dat doet is per persoon een beetje verschillend, maar in grote lijnen doe je hetzelfde: elke keer als je een HTML-tag of PHP-blok (die ik zelf altijd zou begrenzen door middel van { accolades }) opent introduceer je een vast aantal extra spaties (sommige mensen vinden tabs fijner) aan het begin van je code, en elke keer als je een HTML-tag of PHP-blok sluit dan spring je weer een vast aantal spaties minder in.

Als je HTML en PHP-code op de juiste manier opstelt dan vormen openings-en sluitings-tags "matching" pairs op dezelde "diepte" in je code. Als dit niet het geval is dan is de "nesting" van je code incorrect.

Als ik dit recept snel toepas op bovenstaande code komt er zoiets uit (let op, dit is geen oplossing maar slechts een illustratie):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
if ( !defined('ABSPATH')) exit;
get_header();
?>
</div> <!-- ??? -->

<div class="container"><?php
    if(is_front_page()):
        ?>
<div class="row wpeden-bs-services"><?php
        for ($i=1; $i<=12; $i++) {
            ?>
<div class="span3"><?php
                $tpid
= (int)sensitive_get_theme_opts('home_featured_page_'.$i);
                $intropage = get_page($tpid);
                $introcontent = strip_tags(strip_shortcodes($intropage->post_content),"p,br");
                if (preg_match('/^.{1,80}\b/s', $introcontent, $match)) $introcontent = $match[0];
                else $introcontent = substr($introcontent,0,80);
                ?>
<div class="about well">
                    <a href="<?php echo get_permalink($intropage->ID); ?>"><?php
                        sensitive_thumb($intropage,array(500,300), array('class'=>'img'));
                    ?>
</a>
                    <div class="entry-content">
                        <h2><?php echo $intropage->post_title; ?></h2>
                        <p><?php echo $introcontent; ?></p>
                    </div>
                    <a href="<?php echo get_permalink($intropage->ID); ?>" class="btn <?php echo sensitive_get_theme_opts('button_style','btn-info'); ?> btn-block">Koop vliegtickets!</a>
                </div>  
            </div><?php
        }
        ?>
<!-- /.span4 -->
        <?php get_template_part('homepage','category'); ?>      
        <div class="clear"></div>
        <div>
        </div>          
    </div><!-- ??? -->
<!-- /.span4 -->
</div><?php // ???
endif;
?>
</div><!-- ??? -->


De locaties gemarkeerd met "???" geven aan waar het potentieel misgaat.

Door middel van het inspringen van je code zorg je dat je de structuur automatisch controleert terwijl je deze schrijft. Hiermee kun je dus dit soort "nesting" problemen voorkomen. Dit is een zelfcorrigerende manier van werken.
 
Jeroen -

Jeroen -

29/01/2015 14:51:42
Quote Anchor link
Dank voor jullie reacties.

Met de validator kon ik helaas niet de oplossing voor het probleem vinden.
Maar door het advies van Thomas bleven er wel veel minder errors over.

De code ziet er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

if ( !defined('ABSPATH')) exit;

 

get_header();

?>



<div class="container">
<?php if(is_front_page()): ?>
    <div class="row wpeden-bs-services">
      <?php for($i=1;$i<=12;$i++){ ?>
        <div class="span3">
        <?php $tpid = (int)sensitive_get_theme_opts('home_featured_page_'.$i); $intropage = get_page($tpid); $introcontent = strip_tags(strip_shortcodes($intropage->post_content),"p,br"); if (preg_match('/^.{1,80}\b/s', $introcontent, $match)) $introcontent = $match[0]; else $introcontent = substr($introcontent,0,80);  ?>
        <div class="about well">
          <a href="<?php echo get_permalink($intropage->ID); ?>"><?php sensitive_thumb($intropage,array(500,300), array('class'=>'img')); ?></a>
          <div class="entry-content">
          <h2><?php echo $intropage->post_title; ?></h2>
          <p><?php echo $introcontent; ?></p>
          </div>
          <a href="<?php echo get_permalink($intropage->ID); ?>" class="btn <?php echo sensitive_get_theme_opts('button_style','btn-info'); ?> btn-block">Koop vliegtickets!</a>
        </div>  
        </div>
        <?php } ?>
      
        <!-- /.span4 -->
      
        <?php get_template_part('homepage','category'); ?>      
          
 
 
<div class="clear"></div>
<div>
</div>          

</div><!-- /.span4 -->
        
    </div>
<?php endif; ?>
 
 

        
<?php get_footer(); ?>


Helaas heb ik dus nog steeds geen oplossing voor mijn probleem kunnen vinden. Echter als ik de code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$intropage = get_page($tpid);
verwijder dan komen de blokken wel netjes onder elkaar te staan. Het vervelende is dat de tekst en de images dan niet meer opgehaald worden. Alleen de buttons met 'Koop vliegtickets'.

Iemand nog ideeën?



Toevoeging op 29/01/2015 15:04:31:

En misschien nog iets wat niet geheel onbelangrijk is. Oorspronkelijk had deze template 4 featured pages. Ik heb in de engine 8 extra featured pages aangemaakt. Deze kan ik in de back-end toewijzen aan oa de pagina Casablanca.

De 12 in de volgende code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php for($i=1;$i<=12;$i++){ ?>
was ooit dan ook 4.

Misschien helpt dit om een oplossing te vinden?
Gewijzigd op 29/01/2015 14:53:00 door Jeroen -
 
Thomas van den Heuvel

Thomas van den Heuvel

29/01/2015 15:17:48
Quote Anchor link
Voortbordurend op de voorgaande oefening pas je dit zelfde principe toe op alle snippets, templates en bestanden die je in dit bestand invoegt. Op deze manier zorg je ervoor dat het complete eindbestand "in de haak" is.

EDIT: en wat hierbij weer enorm helpt is dat elke HTML-tag en elk PHP-blok dat in bestand X wordt geopend, ook in bestand X wordt gesloten, zodat er geen overlap is met andere bestanden en elk bestand voor zich "klopt".

Als je dat hebt gedaan (en je bestand dus syntactisch klopt) kun je je CSS-opmaak controleren om te zien of je hier iets moet / kunt repareren. Dit kan tot gevolg hebben dat je misschien extra HTML-elementen (hulpstukken) moet introduceren om het gewenste visuele resultaat te verkrijgen. Denk bijvoorbeeld aan een clear-div of een extra container om elementen op zijn plaats te houden et cetera.

Zolang je HTML-document syntactisch niet klopt, is er sowieso geen garantie dat een browser je pagina correct weergeeft.
Gewijzigd op 29/01/2015 15:19:30 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.