tagadelic tags mit title attributen versehen
Eingetragen von dude (338)
am 04.03.2009 - 15:15 Uhr in
am 04.03.2009 - 15:15 Uhr in
hallo forum,
ist es möglich terms "alt" attribute hinzuzufügen?
grüsse vom dude
- Anmelden oder Registrieren um Kommentare zu schreiben
Müsstest Du mit ner
am 04.03.2009 - 15:28 Uhr
Müsstest Du mit ner geänderten function taxonomy_link anstellen können. Aber im Regelfall ist doch der "alt"-Titel bereits aus der "description" enthalten?
Drupal 7 Screencasts in deutsch!
"alt"-Attribute für Terms?
am 04.03.2009 - 15:29 Uhr
Hallo dude,
wie meinst du das? Und wozu soll das dienen?
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
kein php
am 04.03.2009 - 15:58 Uhr
Müsstest Du mit ner geänderten function taxonomy_link anstellen können. Aber im Regelfall ist doch der "alt"-Titel bereits aus der "description" enthalten?
die description ist im "alt" bei mir nicht enthalten. und leider spreche ich auch kein php für irgendwelche funktionsänderungen.
weil
am 04.03.2009 - 16:03 Uhr
Hallo dude,
wie meinst du das? Und wozu soll das dienen?
Gruß
Frank
ich meine z.b.:
<a href="/?q=taxonomy/term/100" class="tagadelic level5" title="hier könnte eine erklärung stehen" rel="tag">beispiel-tag</a>
ich brauche das weil sich der kunde zu den terms noch einen kurzen erklärungssatz in eben so einem title-attribut wünscht.
edit: sorry! ich meinte ein "title-attribut". "alt" is ja nur für bilder.
Also wenn Du es nicht
am 04.03.2009 - 16:06 Uhr
Also wenn Du es nicht bewusst geändert hast in Deinem verwendeten Theme, dann sollte es durch das Core Taxonomie Modul auch bei Dir vorhanden sein:
function taxonomy_link($type, $node = NULL) ...
if (!empty($node->taxonomy)) {
foreach ($node->taxonomy as $term) {
// During preview the free tagging terms are in an array unlike the
// other terms which are objects. So we have to check if a $term
// is an object or not.
if (is_object($term)) {
$links['taxonomy_term_'. $term->tid] = array(
'title' => $term->name,
'href' => taxonomy_term_path($term),
'attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description))
...
Drupal 7 Screencasts in deutsch!
staun
am 04.03.2009 - 16:14 Uhr
Also wenn Du es nicht bewusst geändert hast in Deinem verwendeten Theme, dann sollte es durch das Core Taxonomie Modul auch bei Dir vorhanden sein:
function taxonomy_link($type, $node = NULL) ...
if (!empty($node->taxonomy)) {
foreach ($node->taxonomy as $term) {
// During preview the free tagging terms are in an array unlike the
// other terms which are objects. So we have to check if a $term
// is an object or not.
if (is_object($term)) {
$links['taxonomy_term_'. $term->tid] = array(
'title' => $term->name,
'href' => taxonomy_term_path($term),
'attributes' => array('rel' => 'tag', 'title' => strip_tags($term->description))
...
krass! aber ich hab da ganz bestimmt nichts geändert! trotzdem fehlt bei mir das title attribut, auch wenn ich etwas in die description schreibe. ich habe zwar ein eigenes theme, aber das zen-theme als ausgangsbasis benutzt. kann es daran liegen?
und wo sind denn diese code-zeilen her die du gepostet hast? (also bitte den namen der php-datei) damit ich das mal bei mir checken kann.
taxonomy.module
am 04.03.2009 - 16:16 Uhr
wo sind denn diese code-zeilen her die du gepostet hast? (also bitte den namen der php-datei) damit ich das mal bei mir checken kann.
modules/taxonomy/taxonomy.module, Zeile 47 ff
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hier klappt's mit Zen
am 04.03.2009 - 16:19 Uhr
Hallo dude,
bei mir klappt's, auch mit einem Zen-Subtheme:
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
tagadelic schuld?
am 04.03.2009 - 16:26 Uhr
Hallo dude,
bei mir klappt's, auch mit einem Zen-Subtheme:
Gruß
Frank
ok, ich lasse mir die terms hier von tagadelic in so einer tag-cloud ausgeben. dann scheint also tagadelic die title attribute nicht zu übernehmen? jemand ne idee wie ich das noch ändern könnte?
die php-datei hab ich gecheckt. die code-zeilen sind da.
Ja, tagadelic schuld!
am 04.03.2009 - 17:54 Uhr
Ja, tagadelic ist schuld, und zwar die folgende Funktion (tagadelic.module, Zeile 304) :
<?php
/**
* theme function that renders the HTML for the tags
* @ingroup themable
*/
function theme_tagadelic_weighted($terms) {
$output = '';
foreach ($terms as $term) {
$output .= l($term->name, taxonomy_term_path($term), array('attributes' => array('class' => "tagadelic level$term->weight", 'rel' => 'tag'))) ." \n";
}
return $output;
}
?>
Die bastelt das HTML zusammen, baut aber die title-Attribute nicht ein. Das müsste man nachholen.
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
?
am 04.03.2009 - 18:05 Uhr
Ja, tagadelic ist schuld, und zwar die folgende Funktion (tagadelic.module, Zeile 304) :
<?php
/**
* theme function that renders the HTML for the tags
* @ingroup themable
*/
function theme_tagadelic_weighted($terms) {
$output = '';
foreach ($terms as $term) {
$output .= l($term->name, taxonomy_term_path($term), array('attributes' => array('class' => "tagadelic level$term->weight", 'rel' => 'tag'))) ." \n";
}
return $output;
}
?>
Die bastelt das HTML zusammen, baut aber die title-Attribute nicht ein. Das müsste man nachholen.
Gruß
Frank
ähem, *räusper* .. ist das schwer? es müsste doch irgendwas wie
'title' => ($descripion-variable)
genügen, oder?aber wie heisst nur diese variable?
Lösung: title-Attribut auch mit tagadelic
am 04.03.2009 - 18:58 Uhr
Die Funktion findet man - wie oben erwähnt - in:
modules/taxonomy/taxonomy.module, Zeile 47 ff.
Daher muss die Funktion in tagadelic.module jetzt so lauten:
<?php
**
* theme function that renders the HTML for the tags
* @ingroup themable
*/
function theme_tagadelic_weighted($terms) {
$output = '';
foreach ($terms as $term) {
$output .= l($term->name, taxonomy_term_path($term),
array(
'attributes' => array(
'class' => "tagadelic level$term->weight",
'rel' => 'tag',
'title' => strip_tags("$term->description"),)
)
) ." \n";
}
return $output;
}
?>
Leider ruft tagadelic die "description" standardmäßig auch nicht aus der Datenbank ab. Daher muss man weiter oben (Zeile 228) auch das SQL entsprechend um d.description ergänzen:
$result = db_query_range('SELECT COUNT(*) AS count, d.tid, d.name, d.vid, d.description FROM {term_data} d INNER JOIN {term_node} n ON d.tid = n.tid WHERE d.vid IN ('. substr(str_repeat('%d,', count($vids)), 0, -1) .') GROUP BY d.tid, d.name, d.vid ORDER BY count DESC', $vids, 0, $size);
Dann sollte es funzen:
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
DANKE!!
am 04.03.2009 - 23:19 Uhr
super! vielen, vielen dank!! :-)
Thread-Titel anpassen
am 05.03.2009 - 08:26 Uhr
Gern geschehen, wenn du jetzt noch den Titel des gesamten Threads entsprechend anpasst, wird die Lösung von anderen auch leichter gefunden.
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Modulentwicklung
am 05.03.2009 - 08:42 Uhr
Moin!
Die Funktion findet man - wie oben erwähnt - in: modules/taxonomy/taxonomy.module, Zeile 47 ff.
... und wird dort nicht (soll heissen: unter keinen Umständen) verändert!
Wenn die Ausgabe Deinen Wünschen entsprechend angepasst werden soll, kann die Funktion in der Datei template.php Deines Themes überschrieben (!= geändert) werden:
<?php
**
* theme function that renders the HTML for the tags
* @ingroup themable
*/
function phptemplate_tagadelic_weighted($terms) {
$output = '';
foreach ($terms as $term) {
$output .= l($term->name, taxonomy_term_path($term),
array(
'attributes' => array(
'class' => "tagadelic level$term->weight",
'rel' => 'tag',
'title' => strip_tags("$term->description"),)
)
) ." \n";
}
return $output;
}
?>
Zusätzlich dazu kannst Du einen Patch schreiben und diesen dann an einen entsprechenden FeatureRequest des Moduls anhängen.
Wenn Du Änderungen direkt im Modul machst, sind diese beim nächsten Update weg und Du wunderst Dich, warum es plötzlich nicht mehr funktioniert.
Also: bestehender Code wird nur geändert, damit man einen Patch daraus bauen kann. Ansonsten gibt es theme-Funktionen, die man überschreiben kann.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Modifiationen in template.php des Themes
am 05.03.2009 - 08:57 Uhr
Hallo Stefan,
du hast natürlich Recht, das war nur ein schneller Hack als "Proof on Concept". Das kanonische Vorgehen ist natürlich so, wie von dir beschrieben ;-)
Die Idee mit einem offiziellen Patch ist nicht schlecht, aber da kenn' ich mich leider nicht so aus. Kennst du eine Anleitung, wie man das unter Windows elegant hinkriegt? Ich hab WinMerge 2.8 auf meinem Rechner, hab mich damit aber noch nicht sonderlich viel beschäftigt.
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Patch
am 05.03.2009 - 09:03 Uhr
Kennst du eine Anleitung, wie man das unter Windows elegant hinkriegt?
Aber klar doch: Erstellen von Patches.
viel Spass,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Vielen Dank!
am 05.03.2009 - 11:19 Uhr
Aber klar doch: Erstellen von Patches.
Da hab ich ja genau den Richtigen gefragt ;-) Vielen Dank für den Hinweis und erst recht die Übersetzung! Das ist auf Deutsch doch etwas zugänglicher. Nun hab ich ja keine Ausrede mehr...
Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
man müsste php sprechen können ..
am 05.03.2009 - 15:00 Uhr
Moin!
Zusätzlich dazu kannst Du einen Patch schreiben und diesen dann an einen entsprechenden FeatureRequest des Moduls anhängen.
kann ich eben leider nicht. drum muss ichs bei der modifikation des moduls selbst belassen und darf halt nicht updaten.
Patch: title-Attribute für Tagadelic
am 06.03.2009 - 22:45 Uhr
So, der Patch ist da: http://drupal.org/node/393494 - und die Info auch hier http://drupal.org/node/390870 für his_dudeness ;-)
Und nochmals Dank an Stefan für den kleinen Schubser - war gar nicht so schlimm :-)
Gruß
Frank
Patch-Erstellen und Patchen hab ich übrigens mit NetBeans gemacht, geht sehr komfortabel (http://www.netbeans.org/features/php/). Nur die UNIX-Anpassung der Zeilenumbrüche (http://www.drupalcenter.de/handbuch/14910) muss man mit einem anderen Editor machen.
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
patch
am 07.03.2009 - 09:39 Uhr
Moin Frank.
Mal ein paar Hinweise zu Deinem Patch.
strip_tags("$term->description")
finde ich irgendwie seltsam.Es gibt die Funktion , wenn DU HTML bereinigen möchtest. Und die Anführungeszeichen sind auch überflüssig. :-)
Und die Einrückungen der Klammern sind unten nicht richtig.
Ansonsten: gut gemacht :-)
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Patch as patch can...
am 07.03.2009 - 13:34 Uhr
Hallo Stefan,
danke fürs Durchschauen und für die Tipps. Hab' ich eingebaut (http://drupal.org/node/393494#comment-1326354) und werd' ich mir fürs nächste Mal merken.
Die Funktion
strip_tags($term->description)
hatte ich einfach aus dem Taxonomy-Kernmodul kopiert (modules/taxonomy/taxonomy.module, Zeile 64). Da scheint sie dann wohl auch noch ein Überbleibsel aus alten Tagen zu sein...Gruß
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!