jqueryui accordion auf block-views
Eingetragen von bolshii (148)
am 08.01.2015 - 12:21 Uhr in
am 08.01.2015 - 12:21 Uhr in
Hallo,
jqueryui.accordion tritt seinen Dienst nicht an.
Eingebundene JS-Klassen sind:
addaccordion.module
<?php
function add_jqueryui_accordion_ip_preprocess_page(&$variables, $hook)
{
$path = drupal_get_path( 'module', 'add_jqueryui_accordion_ip' );
$options = array(
'cache' => FALSE,
'preprocess' => TRUE,
'defer' => FALSE,
'type' => 'inline',
'scope' => 'header',
);
drupal_add_library('system','ui.accordion');
drupal_add_js('$(function() { $(".accordion").accordion({ collapsible: true }); });', $options );
}
Im Header steht u.a:
<script type="text/javascript">
<!--//--><![CDATA[//><!--
$(function()){ $(".accordion").accordion(); });
//--><!]]>
</script>
Alle Blöck haben die .accordion-Klasse.
Quelltext:
<div id="block-views-a92306721477f948433c886da868d874" class="accordion block block-views clearfix">
<h2>Monographien</h2>
<div class="content">
<div class="view view-lehrstuhl-monographien-2014-11-12 view-id-lehrstuhl_monographien_2014_11_12 view-display-id-block view-dom-id-4f6da724c01f954997e4e7586bacd3c3">
<div class="view-content">
<div class="views-row views-row-1 views-row-odd views-row-first">
<div class="views-field views-field-nothing">
<span class="field-content">
<div class="fdb_pubSection">
<div class="fdb_pubListLabel">Monographien</div>
<ul class="fdb_pubList" id="monographs">
<li class="fdb_pubItem">
<div class="fdb_monograph">
<span class="fdb_pubAuthor">Tim Buchen:</span>
</div>
</li>
</ul>
</div>
</span></div> </div> </div>
<div class="views-row views-row-2 views-row-even views-row-last">
<div class="views-field views-field-nothing">
<span class="field-content"><div class="fdb_pubSection">
<div class="fdb_pubListLabel">Monographien</div>
<ul class="fdb_pubList" id="monographs">
<li class="fdb_pubItem">
<div class="fdb_monograph">
<span class="fdb_pubAuthor">Dagmara Jajeśniak-Quast:</span>
</div>
</li>
</ul>
</div>
</span></div> </div> </div>
</div>
</div>
- Anmelden oder Registrieren um Kommentare zu schreiben
JS-Konsole
am 08.01.2015 - 14:18 Uhr
JS-Konsole sagt
ReferenceError: $jQuery is not defined
$jQuery(document).ready(function() { $(".accordion").accordion(); });
Nachdem zuvor beides via hook_preprocess_page geladen wurde, bin ich zu hook_init() gewechselt. Die Fehlermeldung wird auch mit hook_init() ausgegeben.
Du kannst deine template.php
am 08.01.2015 - 14:19 Uhr
Du kannst deine template.php Datei selber erweitern und Accordion manuell hinzufügen (mit Effekten etc.):
drupal_add_library('system', 'ui.core');
drupal_add_library('system', 'effects');
drupal_add_library('system', 'effects.core');
drupal_add_library('system', 'ui.accordion');
Die Library wird ja geladen.
am 08.01.2015 - 14:27 Uhr
Die Library wird ja geladen. Das Problem ist, dass jQuery zu spät geladen wird, wenn ich "ReferenceError: $jQuery is not defined" richtig interpretiere.
Macht es einen Unterschied, die Libraries via template.php hinzuzufügen?
Probiere es einfach aus.
am 08.01.2015 - 14:35 Uhr
Probiere es einfach aus.
Ok, ui.accordion
am 09.01.2015 - 05:51 Uhr
Ok, ui.accordion works:
function add_accordion_init()
{
drupal_add_library('system', 'jquery', TRUE);
drupal_add_library('system', 'ui.accordion', TRUE);
$path = drupal_get_path( 'module', 'add_accordion' );
$options = array(
'group' => JS_THEME,
'cache' => FALSE,
'preprocess' => FALSE,
'defer' => FALSE,
'type' => 'inline',
'scope' => 'header',
);
drupal_add_js( 'jQuery(document).ready(function() { jQuery(".accordion").accordion( { collapsible:true, active:false } ); });', $options );
}
Ganz hilfreich war der thread über Hooks