Ik heb een content tafel in de database et de volgende velden:

CREATE TABLE IF NOT EXISTS `site_content` (
  `content_id` tinyint(4) NOT NULL AUTO_INCREMENT,
  `body_id` varchar(64) NOT NULL,
  // andere rijen
  `page_content` text,
  `page_content2` text,
  PRIMARY KEY (`content_id`),
  KEY `pageId` (`page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Er staan 16 rijen in deze tafel. Van deze rijen zijn er 12 rijen die page_content gebruiken. Van deze 12 zijn er ook nog een 4 die page_content2 gebruiken. In de CMS gebruik ik momenteel de volgende if statements om te bepalen of page_content en/of page_content2 zichtbaar zijn:

<?php if($body_id == 'edit_page_contact' || $body_class == 'edit_safety_rules' || $body_class != 'edit_page_non_flyers' || + nog 11 tatements): ?>
<div class="form-group">
	<label>Page content</label>
    <textarea name="page_content" class="form-control summernote" placeholder="Page content">
		<?= $details['page_content']; ?>
    </textarea>
</div>
<?php endif; ?>


Dit is echter nogal lang. Zou dit korter kunnen. Ik gebruikte eerst de isEmpty functie maar die gebruik ik om verschillende reden niet
Ja, maar je zou natuurlijk ook kunnen kijken hoe dit anders kan (en wellicht ook hoe dit ooit zo had kunnen groeien), en/of misschien aparte instanties voor deze pagina's maken? Dus e.e.a. opsplitsen in plaats van hier op één hoop gooien. Maar als dit maar 16 records zijn zou ik hier niet teveel moeite aan besteden. Optimaal lijkt het i.i.g. niet.

Misschien kun je ook wat snoeien in de condities, dit:
$body_class == 'edit_safety_rules' || $body_class != 'edit_page_non_flyers'


Is logisch gezien equivalent aan:
$body_class != 'edit_page_non_flyers'


Immers, als $body_class gelijk is aan 'edit_safety_rules' dan verschilt $body_class ook van 'edit_page_non_flyers'. Het een impliceert al het ander.
@Thomas van den Heuvel. Hartelijk bedank voor je reactie. Ik weet dat dit niet een ideale benadering is maar ik zit al de hele dag te piekeren hoe ik dit anders zou kunnen doen. Hoe zou jij dit aanpakken dan?

Alvast bedankt
Welke waardes kan $body_class hebben?
@Ozzie PHP 12 dus. Er zijn namelijk 12 pagina's die page_content gebruiken en daarvan ook nog eens 4 die ook page_content2 gebruiken:

edit_contact_page
edit_non_flyers_page
edit_accomodation_page
edit_tranfers_page

etc
Komt het erop neer dat je page_content en page_content2 alleen wilt laten zien als ze niet leeg zijn? Want dan kun je dat beter controleren:
<?php if($details['page_content']): ?>
<div class="form-group">
    <label>Page content</label>
    <textarea name="page_content" class="form-control summernote" placeholder="Page content">
        <?= $details['page_content']; ?>
    </textarea>
</div>
<?php endif; ?>
Als dat een beetje te kort door de bocht is (mag leeg zijn, moet toch getoond worden) heb je nog wat andere mogelijkheden:
- In je site_content tabel via een extra veld ook opslaan welke velden getoond moeten worden (0 = geen, 1 = alleen page_content, 2 = alleen page_content2, 3 = beiden)
- Een "magic" waarde opslaan in page_content en page_content2 voor als ze niet getoond moeten worden (er vanuit gaande dat als ze niet getoond moeten worden, de inhoud er ook niet zo toe doet). In plaats van dat je controleert of ie niet leeg is, controleer je of ie ongelijk is aan de "magic" waarde (zo ja: tonen).
Rob Doemaarwat op 01/05/2018 22:41:05

Komt het erop neer dat je page_content en page_content2 alleen wilt laten zien als ze niet leeg zijn? Want dan kun je dat beter controleren:
<?php if($details['page_content']): ?>
<div class="form-group">
    <label>Page content</label>
    <textarea name="page_content" class="form-control summernote" placeholder="Page content">
        <?= $details['page_content']; ?>
    </textarea>
</div>
<?php endif; ?>
Als dat een beetje te kort door de bocht is (mag leeg zijn, moet toch getoond worden) heb je nog wat andere mogelijkheden:
- In je site_content tabel via een extra veld ook opslaan welke velden getoond moeten worden (0 = geen, 1 = alleen page_content, 2 = alleen page_content2, 3 = beiden)
- Een "magic" waarde opslaan in page_content en page_content2 voor als ze niet getoond moeten worden (er vanuit gaande dat als ze niet getoond moeten worden, de inhoud er ook niet zo toe doet). In plaats van dat je controleert of ie niet leeg is, controleer je of ie ongelijk is aan de "magic" waarde (zo ja: tonen).

@ Rob Doemaarwat. Dat laatste, met die magic waarde, vindt ik een hele interessante benadering. Dat biedt namelijk de admin namelijk de mogelijkheid om indien gewenst, voor een bepaalde pagina een content blok aan of uit te zetten. Ik ga nog even de mogelijkheden op een rijtje zetten maar ik vind dit echt een verheldering



[size=xsmall]Toevoeging op 02/05/2018 00:02:14:[/size]

Donald Boers op 02/05/2018 00:01:00

[quote="Rob Doemaarwat op 01/05/2018 22:41:05"]
Komt het erop neer dat je page_content en page_content2 alleen wilt laten zien als ze niet leeg zijn? Want dan kun je dat beter controleren:
<?php if($details['page_content']): ?>
<div class="form-group">
    <label>Page content</label>
    <textarea name="page_content" class="form-control summernote" placeholder="Page content">
        <?= $details['page_content']; ?>
    </textarea>
</div>
<?php endif; ?>
Als dat een beetje te kort door de bocht is (mag leeg zijn, moet toch getoond worden) heb je nog wat andere mogelijkheden:
- In je site_content tabel via een extra veld ook opslaan welke velden getoond moeten worden (0 = geen, 1 = alleen page_content, 2 = alleen page_content2, 3 = beiden)
- Een "magic" waarde opslaan in page_content en page_content2 voor als ze niet getoond moeten worden (er vanuit gaande dat als ze niet getoond moeten worden, de inhoud er ook niet zo toe doet). In plaats van dat je controleert of ie niet leeg is, controleer je of ie ongelijk is aan de "magic" waarde (zo ja: tonen).

[/quote]
@ Rob Doemaarwat. Dat laatste, met die magic waarde, vindt ik een hele interessante benadering. Dat biedt de site admin namelijk de mogelijkheid om, indien gewenst, voor een bepaalde pagina een content blok aan of uit te zetten. Ik ga nog even de mogelijkheden op een rijtje zetten maar ik vind dit echt een verheldering

Reageren