Stworzyłem kanał o nazwie karty kredytowe. Dlatego utworzyłem grupę szablonów zwaną kartami kredytowymi z indeksem, który przechwytuje wszystkie karty kredytowe i wyprowadza je. Aspekt ten działa dobrze, tutaj jest mój kod do pliku index.html wewnątrz folderu credit-cards.group:ExpressionEngine: Pojedynczy szablon wpisu
{exp:channel:categories category_group="1" style="linear" dynamic="no"}
<div class="card-list tab" id="{category_url_title}">
<h2 class="category-title">{category_name} Credit Cards</h2>
<div class="cards">
{exp:channel:entries channel="credit_cards" category="{category_id}" dynamic="no"}
<article>
<h4><a href="{url_title_path='credit-cards'}">{title}</a><span class="web-exclusive">MBNA Website Exclusive</span></h4>
<ul>
<li class="col-img">
<a href="{url_title_path='credit-cards'}"><img width="116" height="84" alt="MBNA Platinum Credit Card" src="../lib-ui/img/cards/core/core_116x84/mbna_platinum_card_116x84.png"></a>
</li>
<li class="col-bt">{balance_transfer_rate}</li>
<li class="col-purchases">{purchases_rate}</li>
<li class="col-features">{key_features}</li>
<li class="col-apply">
<a rel="blank" class="btn btn-success" href="{apply_url}">
Apply Now<span class="hide"> for the {title}</span>
</a>
<a class="cta" href="{url_title_path='credit-cards'}">
Learn more<span class="hide"> about the {title}</span>
</a>
<label class="mbna-credit-card checkbox" for="compare_1">
<span tabindex="0">
<input type="checkbox" value="mbna-credit-card" id="compare_1">
</span>
<span class="hide"> Add the {title} to </span>Compare
</label>
</li>
</ul>
<p class="rep-ex">{representative_example}</p>
</article>
{/exp:channel:entries}
</div>
</div>
{/exp:channel:categories}
Więc moje pytanie jest takie. Załóżmy, że mam kartę kredytową zwaną kartą kredytową wizową, adres URL generowany dla niej to/karty kredytowe/karta-wizy. Kiedy klikam ten link, otrzymuję ponownie moją stronę indeksu. W mojej grupie utworzyłem inny plik szablonu o nazwie single.html, który ma kod wyprowadzający pojedynczą kartę kredytową. Wygląda to tak:
<h1>Credit Card Page</h1>
{exp:channel:entries channel="credit_cards" limit="1"}
{if no_results}
{redirect="404"}
{/if}
Jak mogę go użyć do tego pliku szablonu zamiast pojedynczego wpisu?
Witam Dziękuję za pomoc. Nie mam wątpliwości, że to zadziała, ale nadal oznacza, że cały kod znajduje się w tym samym pliku. To nie jest bardzo czyste rozwiązanie, czy nie ma sposobu, aby je oddzielić, tak aby spojrzeć na index.html dla strony indeksu i single.html dla pojedynczego wpisu? – geoffs3310
Hej Geoffs, jeśli chcesz zachować strukturę adresów URL "karty kredytowe/wizy-karta kredytowa" zamiast "karty kredytowe/pojedyncze/karty kredytowe" odpowiedź Chrisa jest drogą do zrobienia. Chris sprawdza przede wszystkim, czy URL zawiera wartość po "kartach kredytowych /" w adresie URL, a następnie przełącza się na wyświetlanie pojedynczego wpisu. Możesz użyć fragmentu kodu lub osadzić, aby podzielić kod na inny, aby wyglądał na czysty. –
Jeśli chcesz dokonać czyszczenia szablonu, możesz użyć fragmentów do usunięcia głównych bloków treści w celu oddzielenia plików (chociaż potrzebujesz dodatkowego narzędzia, np. Mountee lub SnippetSync, aby zapisać je jako pliki). I zamiast zrobić jeśli segment_2/segment_2 == "", zdecydowanie sprawdź Switchee. Wykonywanie oddzielnych (prostych) warunków dla tego, czy/jeśli nie jest, nie jest tak złe, jak wykonywanie złożonych warunków, takich jak: else (ponieważ oba warunki są przetwarzane, mimo że wyświetlany jest tylko jeden), ale gdy zaczniesz używać Switchee, zobaczysz, że masz używać, gdy instrukcje są o wiele mniej. – Tyssen