web-gelistirme-sc.com

Düğüm başlığından önce bir alan nasıl görüntülenir?

D7 bir teaser görüntülerken düğüm başlığı önce belirli bir alanı oluşturmak için arıyorum.

Etkili bir şekilde this - this gitmek istiyorum.

Node.tpl.php dosyasını güncellemeye baktım, ancak $title _ $content yani buna nasıl yaklaşacağımdan emin değilim. Bazı aramalardan sonra insanların Drupal-6'da bu sorunu çözmek için CCK ve ConTemplate modülleri kullanmanızı önerdiğini gördüm ama ben Daha fazla Drupal-7 çözümü olup olmadığını merak ediyorum.

Herhangi bir öneri?

39
irishbuzz

Drupal 7 ile bu gerçekten oldukça basit.

render ve hide ile, $content içindeki tek bir öğenin yerleşimini Drupal 6.

Basitleştirilmiş bir düğüm şablonu şöyle görünür:

<div>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

Küçük bir değişiklik ihtiyaçlarınızı karşılayacaktır:

<div>
  <?php print render($content['field_name_of_image']); ?>
  <h2><?php print $title; ?></h2>
  <div class="content">
    <?php print render($content); ?>
  </div>
</div>

render kullanarak bir eleman çıktısı alabilirsiniz. Drupal, aynı şeyin iki kez yazdırılmasını önlemek için, işlenen şeyleri takip edeceğinden, bu yalnızca basit bir şey basmaktan daha zekidir. Başlığın üstündeki alanı oluştururken, $content oluşturulduğunda oluşturulanlar için de kaldırıyorsunuz.

51
googletorp

Display Suite da oldukça havalı.

Display Suite, sürükle ve bırak arayüzü kullanarak içeriğinizin nasıl görüntülendiğini tam olarak kontrol etmenizi sağlar. Düzinelerce şablon dosyasında yolunuza devam etmek zorunda kalmadan düğümlerinizi, görünümlerinizi, yorumlarınızı, kullanıcı verilerinizi vb. İstediğiniz şekilde düzenleyin. Daha fazla sürükle ve bırak eğlencesi için önceden tanımlanmış düzen listesi (yalnızca D7) mevcuttur!

8
stevepurkiss

Başlık modülüne bir göz atın - http://drupal.org/project/title . Senaryonuz için yararlı olabilir. Muhtemelen sizinkine benzer şekilde bir nedenden dolayı kurdum/etkinleştirdim ve başlık alanını nasıl yerleştireceğiniz konusunda esneklik sağladığı görülüyordu.

O zamandan beri devre dışı bıraktım (ve Display Suite kullanıyorum), bu yüzden hatırlama biraz kabataslak olabilir.

7
Greta

Bu hackish bir çözüm ve eminim birisi daha zarif bir şey bulur, ancak sıkışıp kalırsanız ve kimse yapmaz ...

page.tpl.php 'Nin yazdırılmasını tamamen kaldırmak için $title Kullanabilir ve $ new_title makine adı veya buna benzer bir adla Title adlı yeni bir özel alan ekleyebilirsiniz. Daha sonra düğüm düzenlemesinde, orijinal Başlık kutusunu gizleyin ve düğümde $new_title Öğesini $title İçine kopyalamak için Computed Field veya bazı özel php'yi kullanın.

Tüm bunlardan sonra, $ new_title'ın sayfa başlığının daha önce yaptığı gibi görünmesini sağlamak için biraz css yazın ve sadece alanları yönet ekranına sürükleyip bırakarak istediğiniz alanları istediğiniz sırayla yerleştirebilmeniz gerekir. $new_title Üzerinden $title Klasörüne kopyaladığınız için, tarayıcı çubuğundaki sayfa başlığı hala çalışmalı ve eksik düğüm başlıkları hakkında hiçbir şey şikayet etmemelidir.

Dediğim gibi, bu bir hack - ama işe yarayacaktı. Daha fazla bilgiye ihtiyacınız varsa bana bildirin

4
Frederik

page.tpl.php (çelenk)

...
      <div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
          <?php print $breadcrumb; ?>
          <?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>

          /*
           * Print custom block or var
           */
          <?php if ($custom_block): print '<div id="custom-block" class="clear-block">'. $custom_block .'</div>'; endif; ?>

          <?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block">'; endif; ?>
          <?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
          <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
          <?php if ($tabs2): print '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
          <?php if ($show_messages && $messages): print $messages; endif; ?>
          <?php print $help; ?>
          <div class="clear-block">
            <?php print $content ?>
          </div>
          <?php print $feed_icons ?>
          <div id="footer"><?php print $footer_message . $footer ?></div>
      </div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
...

template.php

/**
 * Override or insert variables into the page template.
 */
function phptemplate_preprocess_page(&$variables) {
  $node = $variables['node'];
  if($node->type == MY_NODE_TYPE) {
    $variables['custom_block'] = 'bla bla bla';
  }
}
3
dobeerman

Bu, orijinal yayındaki Teaser sorusu için geçerli değildir, ancak bununla karşılaşan ve sadece tam görünümde olmasını isteyen kişiler için kodsuz bir seçenek: alanı bir blokta görüntüleme (görünümleri, örneğin) ve bu bloğu içerik bloğunuzun üzerine ancak aynı bölgeye yerleştirin.

3
brad

Şablonunuzda önişleme işlevlerini kullanmanız gerektiğini düşünüyorum. Php

/**
 * Override or insert variables into the page template.
 */
function THEMENAME_process_page(&$variables) {
  // look for $variables['page_title'] if i remember
}

Ve ek olarak

/**
 * Override or insert variables into the node template.
 */
function THEMENAME_preprocess_node(&$variables) {
  //
}

değişkenler dökümü ve ne istersen yap. ekleme/kaldırma/güncelleme.

2
dobeerman

Ben Display Suite ve onun "Bölge Engellemek" ekstralar özelliğini kullanarak kodsuz bir çözüm ile çözüldü. Bu çözümü en çok esnekliği için seviyorum.

Temel olarak, "Bölge Engellenecek" ekstralar bölümünü etkinleştirin, Display Suite'te "Tam Metin İçeriği" görüntüsünü etkinleştirin. (içeriği tam düğümlü ekranda başlığın yukarısında görüntülemek istediğinizi varsayarsak, benzer şekilde diğer görüntüleme modlarında da kullanabilirsiniz hariç Varsayılan). Şimdi, ekranın altında "Tam Metin İçeriği" nin "Görüntüyü yönet" bölümünde "Bölgeleri Engelle" sekmesi görünmelidir. Buraya yeni blok adı girin, istediğiniz alanları kaydedip bu bloğa sürükleyip bırakın. Son olarak, Bloklar ekranında yeni oluşturulan bloğu yukarıda düğüm başlığının bir yerine taşıyın.

Aynı yaklaşımın videosunu burada görebilirsiniz: http://www.youtube.com/watch?v=y4wyjxyhbNA , elbette bloğu başlığın üzerine yerleştirmeniz gerekiyor (sol kenar çubuğuna değil) sonunda.

2
Mirsoft

Aşağıdaki zen şablonları için kod benim için çalışıyor.

<?php
// this goes in template.php
// check if node type page and then add to $vars array
// declaring $vars['foo'] gives you a $foo variable to use in page.tpl.php

function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
    if (isset($vars['node'])) :
        if($vars['node']->type == 'page'):       
            $node = node_load($vars['node']->nid);
            $output = field_view_field('node', $node, 'field_image', array('label' => 'hidden'));       
            $vars['my_image_field'] = $output;               
        endif;
    endif;
}
?>

Son olarak, alanınızı kolayca page.tpl.php içinde yazdırabilirsiniz;

<?php
if ($my_image_field):
   print render($my_image_field);
endif;
?>
1
user991554

Yapmak için zaten bir tema kullanacağınızı biliyorum ve şimdi başlığın üstündeki alanları eklemeye çalışıyorsunuz.

Drupal 7 üzerine tema oluşturan tüm geliştiricilere önerilerim: Omega teması + Bağlam ve Delta modülleri. Bu, düzeniniz için çok güçlü bir temel sağlar.

Ve Bölgeler, Bloklar ve Alanlar düzenleme esnekliği.

1
AnAnD

Panel modülü ile ist yapabilirsiniz

0
houmem