2012-10-22 14 views
5

Ho creato un canale chiamato carte di credito. Così ho creato un gruppo di template chiamato carte di credito con un indice che scorre su tutte le carte di credito e le emette. Questo aspetto funziona bene, ecco il mio codice per il file index.html all'interno della cartella credit-cards.group:ExpressionEngine: Modello a partita singola

  {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} 

Quindi la mia domanda è questa. Supponiamo che abbia una carta di credito denominata visa credit card, l'url che viene generato per esso è/credit-cards/visa-credit-card. Quando faccio clic su questo collegamento, ho appena ricevuto nuovamente la mia pagina di indice. Ho creato un altro file modello all'interno del mio gruppo chiamato single.html che ha il codice per generare una singola carta di credito. È così:

<h1>Credit Card Page</h1> 
{exp:channel:entries channel="credit_cards" limit="1"} 
{if no_results} 
{redirect="404"} 
{/if} 

Quindi, come faccio a utilizzare questo file modello per una singola voce?

risposta

0

Grazie per tutte le grandi suggestioni. Ho usato i moduli di pagine alla fine che ti permettono di specificare quale modello usare.

10

Questo è in realtà un problema abbastanza facile da puntellare. Quello che stai facendo è che la riga 5 del tuo codice non ha modo di dire se dovrebbe limitare le informazioni sulla voce. Con dynamic='no', hai detto "EE, non è necessario utilizzare l'URL qui per capire cosa voci di limitare tale da"

Il mio suggerimento sarebbe il seguente codice:

{if segment_2 == ""} 
    {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" disable="category_fields|member_data|pagination|trackbacks"} 
        <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} 
{/if} 
{if segment_2} 
    {exp:channel:entries channel="credit_cards" limit="1" disable="category_fields|member_data|pagination|trackbacks"} 
     <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} 
{/if} 

Mente tu, questo non è accurato al 100%, come ho tolto il tuo tag exp:channel:categories, ma questo dovrebbe ottenere un risultato che limita in base a un URL abbreviato come hai specificato.

+0

Ciao Grazie per il tuo aiuto. Non ho dubbi che funzionerà comunque significa che tutto il codice è nello stesso file. Non è una soluzione molto pulita, non c'è modo di separarli in modo che guardi index.html per la pagina indice e single.html per una singola voce? – geoffs3310

+1

Hey Geoffs, se vuoi conservare la struttura dell'URL "carte di credito/visa-carte di credito" invece di "carte di credito/carta di credito/visa-credito", la risposta di Chris è la strada da percorrere. Chris controlla basicamente se l'url contiene un valore dopo "credit-cards /" nell'URL, quindi passa a mostrare una singola voce. Puoi usare uno snippet o embed per dividere il tuo codice in un file diverso per mantenerlo pulito. –

+1

Se si desidera rendere il modello più pulito, è possibile utilizzare gli snippet per rimuovere i blocchi del contenuto principale in file separati (sebbene sia necessario un componente aggiuntivo come Mountee o SnippetSync per salvarli come file). E piuttosto che fare se segment_2/segment_2 == "", sicuramente check out Switchee. Fare condizioni separate (semplici) per if/if not non è così male come fare condizionali complessi come if: else (perché entrambe le condizioni vengono analizzate anche se viene visualizzata solo una), ma una volta che inizi a usare Switchee scoprirai di avere da usare se le dichiarazioni molto meno. – Tyssen

2

Probabilmente si vorrà qualcosa di simile nel modello dell'indice:

{if segment_2 != ""} 
    {exp:channel:entries channel="credit_cards"} 
    [single entry code...] 
    {/exp:channel:entries} 
{if:else} 
    {exp:channel:categories category_group="1" style="linear" dynamic="no"} 
    [your code for all credit cards] 
    {/exp:channel:entries}  
{/if} 

Cosa sta succedendo è l'URL /credit-cards/visa-credit-card sta caricando il modello di indice del gruppo di modelli credit-cards, ma il titolo visa-credit-card URL alla fine dice ExpressionEngine per trattare il modello come singola pagina di immissione.

Ma il dynamic="no" nel tag exp:channel:entries è il motivo per cui EE mostra ancora tutte le carte di credito su quella pagina. This free video about dynamic="off" potrebbe spiegarlo meglio.

5

Esistono due modi principali per utilizzare il modello "carte di credito/singolo" per la voce della categoria di carte di credito VISA. modello

Prima Opzione

'credit-cards/index' avrebbe:

{if segment_2 != ""} 
    {embed="credit-cards/single" entry_id="{entry_id}"} 
{/if} 

'credit-cards/singolo' modello potrebbe avere:

<h1>Credit Card Page</h1> 
{exp:channel:entries channel="credit_cards" limit="1" entry_id="{embed:entry_id}"} 
{if no_results} 
    {redirect="404"} 
{/if} 
... your code ... 
{/exp:channel:entries} 

 

Seconda opzione

Rinomina "carte di credito/singole" a "carte di credito/società" (o qualcosa di più pertinente SEO) e utilizzalo come modalità EE predefinita.

il modello 'carte di credito/indice' rimarrebbe lo stesso.modello

'credit-cards/azienda' avrebbe:

<h1>Credit Card Page</h1> 
{exp:channel:entries channel="credit_cards" limit="1" entry_id="{entry_id}"} 
{if no_results} 
    {redirect="404"} 
{/if} 
... your code ... 
{/exp:channel:entries} 

In questa seconda opzione l'url sarebbe site.com/credit-cards/company/visa-credit-card

I Spero possa aiutare. Fammi sapere se ho frainteso qualcosa.

6

Quindi, come faccio a utilizzare questo file modello per una singola voce ?

Invece di:

{url_title_path='credit-cards'} 

Usa

{title_permalink="credit-cards/single"} 
Problemi correlati