Taxonomy szótár HTML listába

knorbi képe

A következővel küzdök már napok óta.
D7-en szeretnék egy blokkot létrehozni, amelyik egy teljes taxonomy szótárat kilistáz hierarhikusan.
Tehát a következőt szeretném látni:

  • Kifejezés 1
  • Kifejezés 2
    • Kifejezés 2.1
    • Kifejezés 2.2
    • Kifejezés 2.3
  • Kifejezés 3
  • Kifejezés 4
    • Kifejezés 4.1
    • Kifejezés 4.2
    • Kifejezés 4.3
  • Kifejezés 5

A kifejezések linkek lennének egyben, amik egy views oldalra mutatnak.

Eddig a views modullal próbálkoztam, de sehogy sem sikerült rábírni, hogy egy hierarhikus html listát adjon.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
vajdasági képe

Ezeket mar nezted?

Taxonomy Block

Taxonomy menu

0
0
knorbi képe

Taxonomy menu-t már próbáltam, de az a gond, hogy nem tudom a linket módosítani, tehát nem tudom megoldani, hogy a views oldalra mutasson.
A Taxonomy Blockot még nem próbáltam, megnézem.

Igazából azért a views-sal küzdök, mert szeretnék szűrni is. De már ott tartok, hogy bármi jó lesz első körben.

0
0

Kiss Norbert
adatmentespecs.hu

vajdasági képe

Lehet tevedek en most valami hasonlot csinalok, igaz meg nekem sem kesz teljesen. En a taxonomy menut hasznalom es ha nem tevedek akkor majd a taxonomy views nezetet kell klonoznom es az uj Views ben meg majd kialakitom a nezetet ...

Szoval a taxonomy menuben nem a linket kell modositani hanem azon az oldalon ahova a lined mutat ott egy "gyarilag" beepitett view van, szoval azt kell modositani vagyik klonozni es ugy modositani es mar meg is kapjuk azt amit akarunk. Nekem a menu mukodik a klonozashoz meg nem jutottam el ott nekem is vannak gondjaim, ha letrehozom a viewst akkor nekem minden mas taxonomy nezetnel is lecsereli, viszont nekem csak annal az egy szotarnal/menunel kellene lecserelnem. Ezt valahol a Viewsben kel baallitani de meg nem jotem ra :)

1
0
knorbi képe

Na ja csak olvasnom kellett volna! A readme.txt-ben ott van.
Na mindegy, ennek most nekiesek ennek a modulnak.
Azt hiszem sok lehetőség van benne -ha már a views vezérli...

0
0

Kiss Norbert
adatmentespecs.hu

vajdasági képe

Mindenesetre hatha valaki tolem okosabb is hozzaszol es helyesel vagy racafol arra amit irtam ...

0
0
knorbi képe

Most próbáltam a Taxonomy Block-ot. Szép szép, de itt sem tudom a linket módosítani.

0
0

Kiss Norbert
adatmentespecs.hu

dj képe

egy egyszintűre valami ilyesmit kéne egy blokkban php módban elkövetni, vagy ha ezt nem akarod akkor egy kis modulban egy blokk kimeneteként:

$vid = 1; // a szótár azonosítója NEM 1 lesz nálad valszeg!
$terms = taxonomy_get_tree($vid); // load terms as tree
$items = array();
foreach($terms as $term) {
    if (! $term->parents[0]) {
        // haven't parent
        $item = array('data' => l($term->name, 'ide/olyan/linket/csinalsz/amilyet/akarsz/' . $term->tid));
        $children_items = array();
        $children = taxonomy_get_children($term->tid); // load children of term
        foreach($children as $child) {
            // get children items
            $children_items[] = l($child->name, 'ide/olyan/linket/csinalsz/amilyet/akarsz/' . $child->tid);
        }
        if (! empty($children_items)) {
            $item['children'] = $children_items; // add children items to parent item
        }
        $items[] = $item; // adding prepared item to list items
    }
}
if (! empty($items)) {
    print theme('item_list', array('items' => $items)); // printing the list
}
1
-2

Üdv!
Dudás József

knorbi képe

Tetszik ez a megoldás, csak egy baj van vele. Nem tudok a későbbiekben ráépíteni egy dhtml vagy simple menüt.

0
0

Kiss Norbert
adatmentespecs.hu

dj képe

az első hozzászólásodban.

Ez már kicsit bonyolultabb, modul nélkül nem lehet.

Kicsit masszírozd a megfelelő állandókat az elején, aztán működni fog.

Ha kipróbáltad és működik akkor a mymodule nem a legjobb elnevezés, kevés módosítással rendes nevet tudsz adni neki.

Az info fájl - mymodule.info

name = mymodule
description = Mymodule create menu items from term elements
package = other
version = 7.x-0.1
core = 7.x
 
 
; Base module files
files[] = mymodule.module

A modul - mymodule.module

<?php
 
define(MYMODULE_VID, 1); // Ide a szótár azonosítója kell
define(MYMODULE_MENU, 'menu-mymodule'); // Ide kerül a menü neve amit létrehozol neki
 
/**
 *  Implements hook_menu()
 *
 *  A megadott útvonalon (admin/menu-mymenu/rebuild) lehet újraépíteni a menüt
 *
 */
function mymodule_menu() {
    $items['admin/menu-mymenu/rebuild'] = array(
        'title' => t('Rebuild mymenu'),
        'page callback' => 'mymodule_set_menu',
        'access arguments' => array('administer taxonomy'),
        'type' => MENU_CALLBACK,
    );
    return $items;
}
 
/**
 *  Implements hook_taxonomy_term_insert()
 *
 *  Ez csak akkor kell, ha a term létrehozásakor automatikusan akarsz menüelemet generálni
 */
function mymodule_taxonomy_term_insert($term) {
    if ($term->vid == MYMODULE_VID) {
        mymodule_set_menu($term);
    }
}
 
/**
 *  Prepare menu items
 *
 *  @param taxonomy term object $term_item
 */
function mymodule_set_menu($term_item = NULL) {
    if (! $term_item) {
        // Delete all items from menu
        menu_delete_links(MYMODULE_MENU);
        menu_cache_clear_all();
        $terms = taxonomy_get_tree(MYMODULE_VID);
        foreach ($terms as $term) {
            mymodule_create_item($term);
        }
    } 
    else {
        mymodule_create_item($term_item);
    }
    menu_cache_clear_all();
}
 
/**
 * Create and save menu item
 *
 * @param taxonomy term object $term
 */
function mymodule_create_item($term) {
    $base_path = 'ide-olyan-linket-csinalsz-amilyet-akarsz-de-illeszkedjen-a-viewben-megadott-router-path-ra/';
    $path = $base_path . $term->tid;
    $mlid = mymodule_find_menu($path);
    $title = $term->name;
 
    $plid = 0;
    if ($term->parents[0]) {
        $plid = mymodule_find_menu($base_path . $term->parents[0]);
    }
 
    // Prepare menu item
    $item = array(
        'menu_name' => MYMODULE_MENU,
        'weight' => $term->weight,
        'link_title' => $title,
        'link_path' => drupal_get_normal_path($path, LANGUAGE_NONE),
        'module' => 'mymodule',
        'mlid' => $mlid,
        'plid' => $plid,
    );
    // Save menu item
    if (!menu_link_save($item)) {
        drupal_set_message('Menu item not saved: ' . $title);
    }
}
 
/**
 * Find menu mlid from path
 *
 * @param string $link_path
 *
 * @return int
 */
function mymodule_find_menu($link_path = '') {
    $result = db_select('menu_links', 't0', array('fetch' => PDO::FETCH_ASSOC))
                    ->fields('t0', array('mlid'))
                    ->condition('t0.menu_name', MYMODULE_MENU)
                    ->condition('t0.link_path', $link_path)
                    ->execute()
                    ->fetchColumn(0);
    return (!$result) ? 0 : (int) $result;
}

Én ilyesmivel oldottam meg amikor kellett hasonló.

0
0

Üdv!
Dudás József

pityu73 képe

Én ezzel raktam össze a saját katalógusomat:

+ a 'term' nézetet leklónozni egy 'page' nézettel saját útvonallal.

Itt pont ezt próbáltam megoldani.
El lehet készíteni még ctools-al is, de ott én elvéreztem :)
Várom Ádám videóját, próbálta nekem összerakni, de vizuális típus vagyok...így maradt egyelőre a saját megoldásom.

1
0