Próbuję użyć, l()
aby uzyskać coś takiego <a href='#' ...>
, do celów wywoływania ajax. /programming/1698453/drupal-creating-anchor-only-link-with-l jest bardzo blisko do właściwej rzeczy - użyj opcji w l()
jak 'fragment' => 'foo'
produkować link podobnego <a href='#foo'...>
- ale jestem próbuje uzyskać czyste „#”. Czy jest jakiś sposób, aby to zrobić, czy powinienem po prostu włożyć coś w ramach fragmentu i nie martwić się o to?
navigation
Jim Miller
źródło
źródło
javascript:void(0)
javascript:
ijavascript:void(0)
są takie same. Jedyną różnicą jest „void (0)” :)Czas na quiz pop typecasting PHP! (Pełne ujawnienie: nie wygrałem w naszym biurze).
Jak już wspomniano, jest to kod
l()
, który dotyczy:Oto pytanie: jaka wartość jest rzutowana na pusty ciąg, ale przekazuje następujące?
Odpowiedź brzmi
FALSE
:!Więc możemy spróbować tego:
Co daje nam:
Na szczęście możemy usunąć to wiodące cięcie, przekazując
external => TRUE
:Co daje nam:
Bum. Rzeczy, które robimy, aby uniknąć łączenia łańcuchów HTML ręcznie, co?
Postscriptum:
Nie jestem pewien, czy poleciłbym wydrukowanie takiego linku z php w normalnych okolicznościach. Bez twojego javascript, cały ten link spowoduje, że przeskoczysz użytkownika na górę strony ( co, ku mojemu zaskoczeniu, jest sprecyzowanym zachowaniem ). Prawdopodobnie powinien wskazywać gdzieś, co działa bez javascript.
Jeśli link naprawdę ma sens tylko w javascript (jak formanty pokazu slajdów w js lub coś takiego), myślę, że lepiej jest dodać link do strony za pomocą javascript. Alternatywnie, jeśli naprawdę chcesz umieścić go w swoim źródle, upewnij się, że jest to
display:none
domyślnie. Drupal ma.js
klasę w html do pokazania go, gdy jest w pobliżu javascript.źródło
Niestety
url()
funkcja (któral()
wywołuje wewnętrznie) praktycznie nie ma szans na pusty fragment z następującymi liniami:Sprawdza, czy fragment nie jest pustym ciągiem, który należy przekazać, aby uzyskać czysty
#
. Myślę, że najłatwiejszym rozwiązaniem byłoby wybranie identyfikatora odpowiedniego elementu gdzieś na stronie i użycie go zamiast tego dla fragmentu (lubjavascript:void
jak wspomniał Sithu).Jednak ... najbardziej dostępnym sposobem (a następnie, w wielu krajach, legalnym sposobem; pomyśl sekcja 508 w Stanach Zjednoczonych, DDA w Wielkiej Brytanii itp.) Byłoby dostarczenie treści, która jest ładowana / dostosowywana przez twój link na oddzielną stronę i zamiast tego użyj adresu URL tej strony jako odnośnika do linku. Następnie użyłbyś javascript, aby powstrzymać zdarzenie w linku od przekierowania strony dla tych przeglądarek, które mają go włączone.
W ten sposób masz wycofaną zawartość dla użytkowników bez javascript, pozostajesz legalny i sprawiasz, że wszyscy i ich pies są szczęśliwi :)
źródło
print drupal_json_output($output)
na mojej stronie wywołującej ajax.Nie można użyć czystego
#
.Ale można dodać
space symbol
po#
:źródło
Właśnie miałem ten sam problem, ale żadne z rozwiązań nie było satysfakcjonujące, więc wpadłem na swój własny:
To daje czyste
#
źródło
<a href="# ">link</a>
dla mnie produkuje .Zamiast tego użyłbym typu renderowania html_tag, ponieważ uważam, że link renderowania zasługuje na szczególną uwagę ze strony Drupala. Minusem jest to, że nie ma dla niego funkcji skrótu, więc będziemy musieli użyć tablicy renderowania:
źródło
Jest to w zasadzie ta sama odpowiedź Zamieściłem tutaj ... Ustawienie
fragment
do jednego miejsca będą przekształcać się w#
, i$current_path
jest wliczone w cenę, ponieważ w przeciwnym razie połączenie zostanie tylko ustawionywww.example.com/#
zamiastwww.example.com/current-page#
:źródło