Nasıl yok Ben Drupal Düğüm Linkler (w / o OtoYol) için Özel Yollar Programlı Çıktı?

3 Cevap php

I programmatically change the outputted path to a Drupal node without using the PathAuto module edebilmek istiyorum. Şu anda arka uç ekledi olsun içeriğinin büyük bir hacmi (günde binlerce makale) işlemek. Yol adlar oluşturmak için OtoYol kullanmak yerine, ben Drupal çıktılarının varsayılan bağlantı var ama daha iyi SEO için kısmi bir başlık eklemek istiyorum.

An example of this would be:

/ Node/123

would be changed to

/ Node/123/This-is-the-article-title (this path currently will work for the existing node)

Ben tema / görünümü şablonlarını değiştirerek, bir tema olarak bunu nasıl anlamak, ancak düğüme bağlantı görüntülenen her yerde olduğu zaman ben bunu yapmak istiyorum, bu başlık fişi ekler.

Buna ek olarak, belirli bir içerik türü (örneğin, 'yazı') ile sınırlamak istiyorum.

I Drupal 5.x kullanıyorum ve ben prefer not to use PathAuto (ben yüzlerce gerekli yol adların binlerce değilse saklamak istemiyorum) olur

I am looking for a solution that does not use PathAuto

3 Cevap

Drupal "/ node/1234 /" için "/ bloglar / look-at-ne-zaman-cat-sadece-did" adlı haritalama için bir iç mekanizması vardır. Bu çekirdek sistem parçası ve hatta sormak zorunda kalmadan, her istek üzerine, hemen hemen her yerde kullanılır. Eğer bu oluyor fark neredeyse asla yeterince hızlı - diğer şeyler bol drupal içinde var olduğunu vardır-uzak-yavaş.

Eğer başka bir yol gidiyor look-up işlemek için) (işlevini url kullanarak (ve düğüm içerik ile aynı şeyi filtreler) olmalıdır - URL'leri ön ucunda görüntülenir ediliyor nasıl endişe ediyorsanız.

OtoYol geliyor oluşturmak veya içeriğini düzenlemek, bu (oluşturduğunuz ne OtoYol'un kurallara dayalı) Drupal url_alias tablosundaki girişlerin bir sayı üretecektir, nerede olduğunu. Bu, tek seferlik maliyetidir. Eğer astronomik bir oranda içerik üreten sürece - bu iş ile ilgili bir ihmal maliyet var.

Zaten sadece Drupal kullanarak URL takma ararken maliyetini ödüyoruz. Çekirdek hack olmadan, gerçekten bunu önlemek olamaz. Veritabanında "yüzlerce yol adların binlerce" saklama bir anlaşma büyük değil - gerçek depolama gereksinimleri içine yıkmak eğer, sadece megabayt bir avuç bakıyoruz. Tablonun endeksli, bak-up neredeyse anlık olacağından. Bu çekirdek işlevsellik ve bir ne olursa OtoYol bile sisteme olma olur.

Eğer URL türleri için bazı çok garip şartları yoksa, sen ne bir şey, sadece OtoYol mevcut işlevselliği bir alt kümesini yeniden (ve büyük olasılıkla yeni hataların bir demet tanıtan) olacaktır için düğümleri harita istiyorum.

OtoYol muhtemelen en iyi seçenek olsa da, bir yöntem için bir URL bağlamaya hook_menu işlevini kullanabilirsiniz. Bu yöntem, programlı URL tabanlı istediğiniz düğümü bulabiliriz.

Bu iki işlevi kullanarak deneyebilirsiniz:

http://api.drupal.org/api/function/custom_url_rewrite_outbound http://api.drupal.org/api/function/custom_url_rewrite_inbound

Ama gerçekten, bu OtoYol yapmak için "doğru" yoludur.