it-swarm-eu.dev

Používání vestavěného uživatelského rozhraní jQuery v mém tématu

Každá stránka mého tématu bude muset použít uživatelské rozhraní jquery. Vím, že je zahrnuta v Drupal 7, ale nemůžu opravdu dešifrovat Drupalovu příliš technickou dokumentaci. Vypadá to, že je to jediný způsob, jak to udělat se souborem template.php. Ale protože tomu nerozumím, snažím se tomu zabránit.

Existuje jiný způsob, nebo bych měl vyzkoušet pouze soubor template.php?

25
Ben

Přidání JS na stránku opravdu není tak těžké, i když musíte použít php.

Pro normální soubory JS byste mohli něco takového udělat

drupal_add_js($path_to_js)

Drupal však zaregistroval uživatelské rozhraní jQuery do knihoven, což usnadňuje přidávání souborů JS a CSS pro určité pluginy uživatelského rozhraní jQuery. To lze provést pomocí

drupal_add_library($module, $library);

Všechny pluginy uživatelského rozhraní jQuery existují v systémovém modulu, takže byste to mohli udělat

drupal_add_library('system', 'ui');

nebo

drupal_add_library('system', 'ui.accordion');

Některé z těchto pluginů mají závislosti, protože používají jiné pluginy. Drupal to zvládne velmi chytře a zahrne potřebné komponenty.

Můžete vidět úplný seznam jQuery pluginů zde . Toto je naformátováno jako pole PHP), ale obecně je pojmenovací konvence ui.PLUGIN-NAME.

Pokud potřebujete přidat JS na každou stránku, můžete jednoduše přidat předzpracovaný háček stránky a přidat je tam. To by vypadalo něco podobného v souboru template.php.

function NAME_OF_THEME_preprocess_page(&$variables) {
  drupal_add_library('system', 'ui');
  drupal_add_library('system', 'ui.accordion');
  drupal_add_library('system', 'effects.highlight');
}
36
googletorp

vyzkoušeli jste modul date_popup ? funguje dobře s formulářem API

4
LSU_JBob
  1. Refaktorujte pevně kódovaný formulář v souboru TPL do implementace Form API. Jak řekl @LSU_JBob, není důvod, proč byste měli vytvářet formulář bez použití FAPI. Doporučuji, abyste si přečetli Form API Quickstart Guide , a záložku Form API reference stránku.
  2. Jakmile je váš formulář vytvořen a můžete do něj odeslat hodnoty, zpracovat jej atd., Stáhněte si a přečtěte kód v modulu Date Contrib. Datum se používá k poskytnutí typu vyskakovacího okna, které chcete vytvořit, ale pro CCK v D6 a Core Fields v D7. Ačkoli nechcete pracovat s poli, modul Date používá k vytvoření toho, co se snažíte, uživatelské rozhraní JQuery. Tento modul by vám měl poskytnout dobrý příklad.
4
amateur barista

Děkuji googletorp za odpověď na tuto otázku.

Jen dodat, pokud věci stále ještě nejsou příliš jasné ohledně povolení pluginy uživatelského rozhraní.

Vezměte prosím na vědomí, že když uvedete: drupal_add_library('system', 'ui');
Tím NENÍ povoleno automaticky všechny pluginy ui.

Seznam dostupných pluginů jquery najdete v drupal 7 zde: /misc/ui/

Chcete-li povolit perikulární plugin, například: jquery.ui.slider.min.js, musíte přidat tento řádek:

drupal_add_library('system', 'ui.slider');

Doufám, že je to užitečné.

3
Sumoanand

Tento problém jsem měl nedávno. Někdo mi dal svůj vlastní modul, který nutí JQuery UI načíst na každou stránku. Můžete to jednoduše znovu vytvořit. Nejprve nainstalujte jquery_update a ujistěte se, že funguje. Poté vytvořte a povolte tento modul:

Vytvořte složku v cestě/do/modulech s názvem 'jquery_force'.

Uvnitř přidejte dva soubory:

jquery_force.info :

name = JQuery UI Force
description = Forces JQuery UI to always load
dependencies[] = jquery_update
package = User Interface
core = 7.x
files[] = jquery_force.module

jquery_force.module :

<?php
/**
 * @file jquery_force.module
 * TODO: Enter file description here.
 */

/**
 * Implements hook_init().
 */
function jquery_force_init() {
    drupal_add_library('system', 'ui');
}
2
mtro

Přidání předzpracovaného háku do souboru template.php Pro mě nefungovalo.

Jednoduše vložím drupal_add_library('system', 'ui'); do souboru template.php Sám, funguje.

2
user17418