Yeniden yazılan bir alana göre bir görünümü nasıl sıralayabilirim?


10

İki farklı tarih alanı (biri tarih yinelemeleri ve bir çok değerli tek tarihleri) içeren bir içerik türü bir görünüm var. Herhangi bir zamanda yalnızca bir tarih alanı doldurulur. Görünümün ekranında, ilk tarih alanını gizleyerek ve ikinciyi yeniden yazarak ve birinci ve ikinci yedek jetonu dahil ederek iki alanı birleştirdim. Artık bu birleşik tarih alanına göre görünümü artan sırada sıralamak için yeniden yazılmış alanı kullanmanın bir yolu var mı? Görünüşe göre, tarih alanının orijinal değerine göre sıralar.

Araştırmamı yaptım ve sadece çıkmaz uçları olan eski, biraz ilgili konular buldum.

yeniden yazılan alana göre görüntüleme sayısı?

Tablo yeniden yazılan alana göre değil, orijinal alana göre sıralanıyor

Görünümler: sıralama ölçütleri için özel alan

Global olarak sırala: özel metin. Mümkün mü?

Bunu yapmanın yeni veya sinsi bir yolu olduğunu umuyordum.


Merlinofchaos'un cevabını kullanamamanızın bir nedeni var mı? drupal.org/node/1260160#comment-4907526
Kari Kääriäinen

Bilgisayarlı alanın nasıl kullanılacağı konusunda aslında bir cevap vermez. Sadece kullanmanızı önerir. Denemeye aldırmıyorum ama modülle ne yapacağımı bilmiyorum. Ayrıca, 2 yıl önce ve Drupal 6 için denenecek yeni bir şey olabileceğini umdum.
Nigel Waters

Evet, bu kısa bir cevaptı. Prensip yine de aynıdır. Cevabımı gör.
Kari Kääriäinen

Bu tarih alanlarıyla ne yapmak istiyorsunuz? Bir sonraki tarih seçilsin mi?
Kari Kääriäinen

Olay içerik türünü artan tarihte iki tarih alanına göre sıralamak istiyorum.
Nigel Waters

Yanıtlar:


4

Modül yoluna gitmek istemiyorsanız, bu bir alternatiftir:

1) Hesaplanan Alan modülünü yükleyin
2) içerik türünüze hesaplanan bir alan ekleyin
3) alan ayarlarında, Hesaplanan kod (PHP) metin alanında alan verilerine erişebilirsiniz.

Geçerli alanınızdaki tarih alanlarınızı bir değişkene alın.

$repeating_dates = field_get_items($entity_type, $entity, 'field_repeating_date_example');
$multidates = field_get_items($entity_type, $entity, 'field_multidate_example');

Tarih değerleriniz artık

$repeating_dates[0]['value'],
$repeating_dates[1]['value'],
$repeating_dates[2]['value'], etc.

$multidates[0]['value'],
$multidates[1]['value'],
$multidates[2]['value'], etc.

Tarih alanlarınızla ihtiyacınız olan mantığı yapın ve sonucu

$entity_field[0]['value']

Artık görünümlerde kullanabileceğiniz sıralanabilir bir alanınız var, ancak önce hesaplanan alan yalnızca hesaplanacak ve düğüm kaydetme sırasında veritabanına kaydedileceği için tüm düğümleri güncellemelisiniz. Bunu yapmanın birçok yolu vardır, bunlardan biri Toplu Görüntüleme İşlemlerini kullanmaktır, size yönetici / içerikte düğümleri yeniden kaydetme seçeneği sunar.


Bunun yinelenen tarihlerle bir tarih alanı ve tek bir tarihle (sınırsız ayarıyla) başka bir alanla çalışacağından emin değilim. Bu, her iki alanın da yalnızca tek bir değer olması durumunda işe yarayabilir.
Nigel Waters

Bu vakaları kapsayan cevabımı düzenledim. Dpm ($ entity) kullanarak tarih alanlarınızın yapısının ne olduğunu görebilirsiniz. dpm, Devel modülüyle birlikte gelir.
Kari Kääriäinen

Lütfen [und]sözdizimini önermeyin . Bunun yerine field_get_items kullanın.
Letharion


0

Bunu yapmanın tek gizli yolu, sayfalandırma kullanmıyorsanız, veritabanına bağlı olmayan özel bir sorgu geçersiz kılmasında PHP sıralama kullanabilirsiniz.

Stevector'a göre ,

Sayfalandırma, hesaplanan alanlara göre sıralanmamızı gerçekten engelleyen şeydir, çünkü normalde "Veritabanı! Nid sütununa göre sıralama yaparken bana 21-30 sonuç al" demeniz gerekir.

Eğer db 21-30'un nasıl tanımlanacağını bilmiyorsa (bilgisayarlı bir alandaki gibi), böylece güvenilir bir şekilde db'den 21-30 sonuç alamazsınız.

Bu nedenle en pratik ve güvenilir çözüm, Kari Kääriäinen tarafından belirtildiği gibi Hesaplamalı Alan kullanmaktır.


Sürüm numarasını belirledikten ve bir kopyala yapıştırma hatasını düzelttikten sonra birisi beni düşürdü. Bu cevapta bir sorun mu var?
Beth

Modül yaklaşımı için daha önce reddedildim, ancak daha sonra reddedildi, çünkü bu, benimki gibi, benimki gibi, kullanılabilir bir cevap değil, çünkü sorunun kendisi en azından benim için hala belirsiz.
Kari Kääriäinen

Soru bana çok açık geliyor. Cevabıma biraz açıklama ekleyeceğim.
Beth

Boş ver, Views'un tam da benim yaptığım gibi davranmadığını fark ettim.
Beth

0

Bu, bunu yapmanın biraz zor bir yoludur, ancak çalışır ve herhangi bir ek modüle ihtiyacınız yoktur.

Sıralamak istediğiniz alan için bir etiket oluşturun ve bunu ekranın dışında BIRAKMAYIN. Bunun yerine, yeniden <!---->yazma değeri olarak boş bir html yorumu ekleyerek ekranı "boş" olarak yeniden yazın. Ardından diğer php / rewritten alanınızı bu sütunun alt öğesi olarak ekleyin.

Bu sıralama için doğru sütun için tablo başlığını görüntüler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.