Autor Zpráva
moom
Profil
Lidi zlatí, jsem trošku PHP začátečník, ale rád bych se zeptal jestli následující zápis lze napsat nějak jednodušeji. Jestli je to blbá otázka, tak mně to klidně napiště. Případně jestli bych to neměl nějak jinak formátovat. Ve výsledku to funguje, ale mě spíš zajímá vizuální čistota a rád bych se něco přiučil. Moc moc děkuji a zdravím všechny.

<?php if ( is_page_template('page-projekty.php') ) { ?>

    <a href="<?php echo get_page_link(122); ?>" class="projekty-filter" >
        <?php 
            if ( is_main_site() ) {
                echo '<span class="active">Projekty</span></a>';
            } else {
                echo '<span class="active">Projects</span></a>';    
            }
        ?>
<?php } else { ?>

    <a href="<?php echo get_page_link(122); ?>">
        <?php 
            if ( is_main_site() ) {
                echo '<span>Projekty</span></a>';
            } else {
                echo '<span>Projects</span></a>';    
            }
        ?>
        
<?php } ?>
mimochodec
Profil
Uvozovky vnořuji opačně, tzn ne
echo '<span class="active">Projekty</span></a>';
ale
echo "<span class='active'>Projekty</span></a>";
Důvodem je chování při potřebě vkládat další úrovně uvozovek. A taky chování zvýrazňovačů.

Hlavně ale neotvírám a neuzavírám php na každém druhém řádku. Konkrétně tento kód bych měl v jednom bloku <?php ... ?>
jefitto44
Profil
Ja to zas robím tak ako má on... je pre mňa jednoduchšie napísať " ako '... takže ' sa snažím používať čo najmenej... ale tiež je pravda, že som divný a kódim na SK klávesnici
Tomáš123
Profil
moom:
Podľa mňa stačí toto:
echo "<a href=\"" . get_page_link(122) . "\"" . (is_page_template('page-projekty.php') ? "class=\"projekty-filter\"" : "") . "><span>" . (is_main_site() ? "Projekty" : "Projects") . "</span></a>";
Je to skrátená forma tohoto zápisu:
echo "<a href=\"" . get_page_link(122) . "\"";
if (is_page_template('page-projekty.php')) {
  echo "class=\"projekty-filter\"";
}
echo "><span>";
if(is_main_site()) {
  echo "Projekty";
}
else {
  echo "Projects";
}
echo "</span></a>";

Zámerne som vynechal triedu active. Myslím, že CSS ide aplikovať na základe nadradenej triedy nejako takto:
.projekty-filter span {
  /* Zvýraznenie */
}
Ak by to nebolo takto použiteľné, možnosťou skrátenia stále ostáva neopakovanie nemenných častí (rozvetviť až pri výpise konkrétneho rozdielu).

Vo svojom kóde používam iba úvodzovky. Robím to preto, aby bol v celom výslednom HTML kóde jednotný štýl.
Kubo2
Profil
jefitto44:
som divný a kódim na SK klávesnici
Nie si náhodou o nič divnejší než ja. Slovenskú QWERTZ klávesnicu používam pri programovaní tiež a apostrofy (') mám osobne oveľa radšej ako úvodzovky ("). Naviac sa to v mojom kóde líši aj podľa kontextu použitia; v PHP sa totiž jednoduché úvodzovky/apostrofy a dvojité úvodzovky používajú na dve odlišné veci.
Jan Tvrdík
Profil
moom:
Použij nějaký šablonovací systém, třeba Latte nebo Twig. Psát šablony v PHP je skoro vždy nesmysl.
moom
Profil
Lidi zlatí moc děkuji. Vůbec jsem netušil, že se to dá zapsat zkráceně.

Tomáš123:
Teď jsem si díky Vám našel, že existují ternární operátory, neboli zkrácené podmínky. Moc díky!

mimochodec
Máte pravdu asi to bude lepší, neb to je podobné jako v typografii


Jan Tvrdík:
Prosím, jsem knedla, nemáte prosím lepší popokopnutí :)

Ten kód je ze šablony Wordpressu, kterou právě dělam. Má úroveň php je zatím v tom, že zvládám udělat šablonu pro wp, případně statické stránky, html, css, js, Rád se přiučím, přece jenom je spousta situací, kde by se to asi hodilo.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: