[gelöst]JavaScript richtig einbinden
am 22.08.2013 - 10:02 Uhr in
Guten Morgen DrupalCenter,
ich habe folgendes Problem. Für einen bestimmten Node habe ich die node.tpl.php angepasst. Über das Nodetemplate wird eine HTML-Tabelle generiert, diese will ich durch Sortierfunktionen funktional aufbessern. Zu diesem Zweck habe ich mich entschieden DataTables zu verwenden, jedoch ohne das Modul(wobei ich jenes installiert habe).
Also habe ich mir gedacht dementsprechenden Code füge ich die DataTables-Library zu und einen entsprechenden javaScript Aufruf. Nur leider wird die Tabelle nicht entsprechend angezeigt, sprich sie wird angezeigt, aber eben nicht mit den gewünschten Funktionalitäten.
Die Bibliotheken werden anscheinend richtig geladen, denn ein entsprechender Alert wird mir angezeigt. Führe ich den entsprechenden Code nachträglich über Firebug aus, so wird die Tabelle dementsprechend angezeigt.
Hier einmal der JavaScript-Code:
(function ($)
{
alert("DataTables");
$("#htabelle").dataTable(
{
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": true,
"bInfo": true,
"bAutoWidth": true,
"aoColumns": [
null,
null,
null,
null,
null,
null//put as many null values as your columns
]
});
})(jQuery);und hier die Einbindung im node--tabelle.tpl.php
<article<?php print $attributes; ?>>
<?php print $user_picture; ?>
<?php print render($title_prefix); ?>
<?php if (!$page && $title): ?>
<header>
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title; echo "Marmelade" ?></a></h2>
</header>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($display_submitted): ?>
<footer class="submitted"><?php print $date; echo "Marmelade"?> -- <?php print $name;echo "Marmelade" ?></footer>
<?php endif; ?>
<div<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
<table id="htabelle" border="1">
<tr>
<th>Berlin</th>
<th>Hamburg</th>
<th>München</th>
</tr>
<tr>
<td>Miljöh</td>
<td>Kiez</td>
<td>Bierdampf</td>
</tr>
<tr>
<td>Buletten</td>
<td>Frikadellen</td>
<td>Fleischpflanzerl</td>
</tr>
</table>
<?php
drupal_add_js('sites/all/libraries/datatables/media/js/jquery.dataTables.js','file');
drupal_add_js('sites/all/themes/geoportal_test/js/datatables_monitoring.js', 'file');
?>
</div>
<div class="clearfix">
<?php if (!empty($content['links'])): ?>
<nav class="links node-links clearfix"><?php print render($content['links']); ?></nav>
<?php endif; ?>
<?php print render($content['comments']); ?>
</div>
</article>- Anmelden oder Registrieren um Kommentare zu schreiben

Wenn die beiden JS wirklich
am 22.08.2013 - 10:37 Uhr
Wenn die beiden JS wirklich geladen werden dann eventuell zu spaet. Das Laden selbest kann man ja mit einem Browsertool pruefen.
JS eher laden: Im Template ganz oben.
Wobei aber die Frage entsteht warum Du nicht das Modul verwendest. Dann muesstest Du die JS nicht im Template laden und haettest auch nicht die Fragen ob geladen und zu spaet geladen.
Ich kann das Modul leider
am 22.08.2013 - 10:40 Uhr
Ich kann das Modul leider nicht verwenden, weil ich dazu ein View anlegen muss, wenn ich das richtig verstanden habe. Die Tabelle wird aber über eine php-Funktion generiert (kommt leider nicht aus Drupal und kann auch nicht geändert werden).
mfg
Andy
quiptime schrieb Wenn die
am 22.08.2013 - 10:44 Uhr
Wenn die beiden JS wirklich geladen werden dann eventuell zu spaet. Das Laden selbest kann man ja mit einem Browsertool pruefen.
JS eher laden: Im Template ganz oben.
Sorrie, habe ich vergessen zu
am 22.08.2013 - 11:43 Uhr
Sorrie, habe ich vergessen zu erwähnen ich habe die Einbindung jetzt noch vor
<articel....eingebunden, jedoch ändert das nichts am Resultat.Einbinden der beiden JS
am 22.08.2013 - 11:46 Uhr
Einbinden der beiden JS gecheckt mit Firebug oder Crome Developer Tools?
JS bitte in template.php Datei einbinden
am 22.08.2013 - 11:50 Uhr
Guckst Du bitte hier: http://drupal.stackexchange.com/questions/20520/drupal-add-js-in-html-te...
Guten Morgen Quiptime, ich
am 23.08.2013 - 06:14 Uhr
Guten Morgen Quiptime,
ich habe mir den Link recht ordentlich durchgelesen und Code per Node ausprobiert, führt leider zum gleichen Ergebniss. Bei dem sonst vorgeschlagenen Import in der page.tpl.php gibt es leider das Problem, dass das Omega Theme keine page.php zu haben scheint.
ODer ich habe es doch noch nicht so verstanden.
mit freundlichem Gruß
In der Datei template.php
am 23.08.2013 - 09:15 Uhr
Nicht in der page.tpl.php sondern in der Datei template.php. Diese Datei hat jedes Theme. Im Thread des geposteten Link ist es der Beitrag #4, welcher den Code zum Einfuegen nennt.
<?phpfunction MYTHEME_preprocess_page(&$variables) {
drupal_add_js(drupal_get_path('theme', 'MYTHEME') .'/mytheme.js', 'file');
}
?>
Vermutlich wird diese preprocess-Funktion in Deinem Omega Subtheme bereits verwendet. In diesem Fall die Zeilen mit drupal_add_js() einfach innerhalb der bereits existierenden Funktion einfuegen.
Oh man, natürlich. Vielen
am 23.08.2013 - 09:36 Uhr
Oh man, natürlich. Vielen Dank. Aber leider führt auch das nicht zu dem gewünschten erfolg, ich befürchte fast, dass das Script zu früh geladen wird. Ich lade ja zwei Dateien, einmal die der Bibliothek und einmal die meines Codes, der dem entsprechenden Table-Tag die DataTables zuweisst. Nun ist es so, dass die Tabelle erst aus einem Datenbankrequest aufgebaut wird. Und wenn ich meine Funktion über den Firebug aufsetze, dann funktioniert alles so wie es soll. Ich weiß einfach nicht mehr weiter mir fällt nichts mehr ein, was ich noch tun könnte.
mfg
Andy
Oh Man, das tut mir wirklich
am 23.08.2013 - 09:55 Uhr
Oh Man, das tut mir wirklich leid. ich habe das ganze erst manuell ausgeführt, also gänzlich ohne Drupal und dann importiert. Dabei habe ich natürlich vergessen, die JavaScript-Funktion in eine Drupal.behaviors zu packen.
mit besten Grüßen
Andy
Soll heissen, Problem geloest?
am 23.08.2013 - 10:06 Uhr
Soll heissen, Problem geloest?
Wenn ja poste bitte eine kurze Zusammenfassung der Problem-Loesung (so das Andere es verstehen koennen) und markiere den Thread als geloest.
Ich bin gerade am
am 26.08.2013 - 10:04 Uhr
Ich bin gerade am Zusammenschreiben-Also ein wenig Geduld.
Hier habe ich die Lösung gepostet-es ist erst die erste Version des Themas und auch erst meine erste Homepage (dient mir zur Erinnerung)
mit besten Grüßen
AndyLicht