Блог
Главные вкладки
Вторичные вкладки
-
... (Object) stdClass
-
vid (String, 3 characters ) 411
-
uid (String, 1 characters ) 1
-
title (String, 107 characters ) Drupal 7: Программно вывести меню со всеми клас...
-
Drupal 7: Программно вывести меню со всеми классами и уровнями
-
-
log (String, 0 characters )
-
status (String, 1 characters ) 1
-
comment (String, 1 characters ) 2
-
promote (String, 1 characters ) 0
-
sticky (String, 1 characters ) 0
-
nid (String, 3 characters ) 407
-
type (String, 4 characters ) blog
-
language (String, 2 characters ) ru
-
created (String, 10 characters ) 1490001357
-
changed (String, 10 characters ) 1490019574
-
tnid (String, 1 characters ) 0
-
translate (String, 1 characters ) 0
-
revision_timestamp (String, 10 characters ) 1490019574
-
revision_uid (String, 1 characters ) 1
-
body (Array, 1 element)
-
und (Array, 1 element)
-
0 (Array, 5 elements)
-
value (String, 4228 characters ) <p>На одном из проектов возникла необходимость ...
-
<p>На одном из проектов возникла необходимость вывести меню в шапке сайта со всеми вложенными пунктами. Изначально меню было выведено с помощью кода в page.tpl:</p> <pre> <code class="language-php"><?php print theme( 'links__system_main_menu', array( 'links' => $main_menu, 'attributes' => array( 'id' => 'main-menu-links', 'class' => array('links', 'clearfix'), ), ) ); ?></code></pre> <p>Но с этим кодом одна проблема - меню выводится только первого уровня. В целом такую задачу можно было бы решить просто выводом меню блоком в новый регион. Но не хотелось менять классы, поэтому нашёл другое решение. Оно выводит меню сайта со всеми уровнями вложенности, классами(active-trail, active), в заданное место сайта.</p> <pre> <code class="language-php"><?php function _menu_tree_full_data($menu_name) { $tree = &drupal_static(__FUNCTION__, array()); // Check if the active trail has been overridden for this menu tree. $active_path = menu_tree_get_path($menu_name); // Generate a cache ID(cid) specific for this page $item = menu_get_item($active_path); $cid = "links:$menu_name:full:{$item['href']}:{$GLOBALS['language']->language}"; // Did we already build this menu during this request? if(isset($tree[$cid])) return $tree[$cid]; // If the static variable doesn't have the data, check {cache_menu}. $cache = cache_get($cid, 'cache_menu'); if($cache && isset($cache->data)) { $tree_params = $cache->data; if(isset($tree_params)) return $tree[$cid] = menu_build_tree($menu_name, $tree_params); } $tree_params = array( 'min_depth' => 1, 'max_depth' => null, ); // Parent mlids; used both as key and value to ensure uniqueness. // We always want all the top-level links with plid == 0. $active_trail = array(0 => 0); // Find a menu link corresponding to the current path. If $active_path // is NULL, let menu_link_get_preferred() determine the path. $active_link = menu_link_get_preferred($active_path, $menu_name); // The active link may only be taken into account to build the // active trail, if it resides in the requested menu. Otherwise, // we'd needlessly re-run _menu_build_tree() queries for every menu // on every page. if(@$active_link['menu_name'] == $menu_name) { // Use all the coordinates, except the last one because there // can be no child beyond the last column. for($i = 1; $i < MENU_MAX_DEPTH; $i++) { if($active_link['p' . $i]) $active_trail[$active_link['p' . $i]] = $active_link['p' . $i]; } } $parents = $active_trail; do { $result = db_select('menu_links', NULL, array('fetch' => PDO::FETCH_ASSOC)) ->fields('menu_links', array('mlid')) ->condition('menu_name', $menu_name) //->condition('expanded', 1) ->condition('has_children', 1) ->condition('plid', $parents, 'IN') ->condition('mlid', $parents, 'NOT IN') ->execute(); $num_rows = FALSE; foreach($result as $item) { $parents[$item['mlid']] = $item['mlid']; $num_rows = TRUE; } } while($num_rows); $tree_params['expanded'] = $parents; $tree_params['active_trail'] = $active_trail; // Cache the tree building parameters using the page-specific cid. cache_set($cid, $tree_params, 'cache_menu'); // Build the tree using the parameters; the resulting tree will be cached by _menu_build_tree(). return $tree[$cid] = menu_build_tree($menu_name, $tree_params); } ?></code></pre>
-
-
summary (String, 0 characters )
-
format (String, 9 characters ) full_html
-
safe_value (String, 14005 characters ) <p>На одном из проектов возникла необходимость ...
-
<p>На одном из проектов возникла необходимость вывести меню в шапке сайта со всеми вложенными пунктами. Изначально меню было выведено с помощью кода в page.tpl:</p> <pre> <div class="geshifilter"><div class="php geshifilter-php"><pre class="de1"><span class="kw2"><?php</span> <span class="kw1">print</span> theme<span class="br0">(</span> <span class="st_h">'links__system_main_menu'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span> <span class="st_h">'links'</span> <span class="sy0">=></span> <span class="re0">$main_menu</span><span class="sy0">,</span> <span class="st_h">'attributes'</span> <span class="sy0">=></span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span> <span class="st_h">'id'</span> <span class="sy0">=></span> <span class="st_h">'main-menu-links'</span><span class="sy0">,</span> <span class="st_h">'class'</span> <span class="sy0">=></span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="st_h">'links'</span><span class="sy0">,</span> <span class="st_h">'clearfix'</span><span class="br0">)</span><span class="sy0">,</span> <span class="br0">)</span><span class="sy0">,</span> <span class="br0">)</span> <span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?></span></pre></div> </div> </pre><p>Но с этим кодом одна проблема - меню выводится только первого уровня. В целом такую задачу можно было бы решить просто выводом меню блоком в новый регион. Но не хотелось менять классы, поэтому нашёл другое решение. Оно выводит меню сайта со всеми уровнями вложенности, классами(active-trail, active), в заданное место сайта.</p> <pre> <div class="geshifilter"><div class="php geshifilter-php"><pre class="de1"><span class="kw2"><?php</span> <span class="kw2">function</span> _menu_tree_full_data<span class="br0">(</span><span class="re0">$menu_name</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$tree</span> <span class="sy0">=</span> <span class="sy0">&</span>drupal_static<span class="br0">(</span><span class="kw4">__FUNCTION__</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Check if the active trail has been overridden for this menu tree.</span> <span class="re0">$active_path</span> <span class="sy0">=</span> menu_tree_get_path<span class="br0">(</span><span class="re0">$menu_name</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Generate a cache ID(cid) specific for this page</span> <span class="re0">$item</span> <span class="sy0">=</span> menu_get_item<span class="br0">(</span><span class="re0">$active_path</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$cid</span> <span class="sy0">=</span> <span class="st0">"links:<span class="es4">$menu_name</span>:full:<span class="es4">{$item['href']}</span>:<span class="es4">{$GLOBALS['language']->language}</span>"</span><span class="sy0">;</span> <span class="co1">// Did we already build this menu during this request?</span> <span class="kw1">if</span><span class="br0">(</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">(</span><span class="re0">$tree</span><span class="br0">[</span><span class="re0">$cid</span><span class="br0">]</span><span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> <span class="re0">$tree</span><span class="br0">[</span><span class="re0">$cid</span><span class="br0">]</span><span class="sy0">;</span> <span class="co1">// If the static variable doesn't have the data, check {cache_menu}.</span> <span class="re0">$cache</span> <span class="sy0">=</span> cache_get<span class="br0">(</span><span class="re0">$cid</span><span class="sy0">,</span> <span class="st_h">'cache_menu'</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><span class="re0">$cache</span> <span class="sy0">&&</span> <a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">(</span><span class="re0">$cache</span><span class="sy0">-></span><span class="me1">data</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$tree_params</span> <span class="sy0">=</span> <span class="re0">$cache</span><span class="sy0">-></span><span class="me1">data</span><span class="sy0">;</span> <span class="kw1">if</span><span class="br0">(</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">(</span><span class="re0">$tree_params</span><span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> <span class="re0">$tree</span><span class="br0">[</span><span class="re0">$cid</span><span class="br0">]</span> <span class="sy0">=</span> menu_build_tree<span class="br0">(</span><span class="re0">$menu_name</span><span class="sy0">,</span> <span class="re0">$tree_params</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="re0">$tree_params</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span> <span class="st_h">'min_depth'</span> <span class="sy0">=></span> <span class="nu0">1</span><span class="sy0">,</span> <span class="st_h">'max_depth'</span> <span class="sy0">=></span> <span class="kw4">null</span><span class="sy0">,</span> <span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Parent mlids; used both as key and value to ensure uniqueness.</span> <span class="co1">// We always want all the top-level links with plid == 0.</span> <span class="re0">$active_trail</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="nu0">0</span> <span class="sy0">=></span> <span class="nu0">0</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Find a menu link corresponding to the current path. If $active_path</span> <span class="co1">// is NULL, let menu_link_get_preferred() determine the path.</span> <span class="re0">$active_link</span> <span class="sy0">=</span> menu_link_get_preferred<span class="br0">(</span><span class="re0">$active_path</span><span class="sy0">,</span> <span class="re0">$menu_name</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// The active link may only be taken into account to build the</span> <span class="co1">// active trail, if it resides in the requested menu. Otherwise,</span> <span class="co1">// we'd needlessly re-run _menu_build_tree() queries for every menu</span> <span class="co1">// on every page.</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">@</span><span class="re0">$active_link</span><span class="br0">[</span><span class="st_h">'menu_name'</span><span class="br0">]</span> <span class="sy0">==</span> <span class="re0">$menu_name</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// Use all the coordinates, except the last one because there</span> <span class="co1">// can be no child beyond the last column.</span> <span class="kw1">for</span><span class="br0">(</span><span class="re0">$i</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="re0">$i</span> <span class="sy0"><</span> MENU_MAX_DEPTH<span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span><span class="br0">(</span><span class="re0">$active_link</span><span class="br0">[</span><span class="st_h">'p'</span> <span class="sy0">.</span> <span class="re0">$i</span><span class="br0">]</span><span class="br0">)</span> <span class="re0">$active_trail</span><span class="br0">[</span><span class="re0">$active_link</span><span class="br0">[</span><span class="st_h">'p'</span> <span class="sy0">.</span> <span class="re0">$i</span><span class="br0">]</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$active_link</span><span class="br0">[</span><span class="st_h">'p'</span> <span class="sy0">.</span> <span class="re0">$i</span><span class="br0">]</span><span class="sy0">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="re0">$parents</span> <span class="sy0">=</span> <span class="re0">$active_trail</span><span class="sy0">;</span> <span class="kw1">do</span> <span class="br0">{</span> <span class="re0">$result</span> <span class="sy0">=</span> db_select<span class="br0">(</span><span class="st_h">'menu_links'</span><span class="sy0">,</span> <span class="kw4">NULL</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="st_h">'fetch'</span> <span class="sy0">=></span> PDO<span class="sy0">::</span><span class="me2">FETCH_ASSOC</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">-></span><span class="me1">fields</span><span class="br0">(</span><span class="st_h">'menu_links'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="st_h">'mlid'</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">-></span><span class="me1">condition</span><span class="br0">(</span><span class="st_h">'menu_name'</span><span class="sy0">,</span> <span class="re0">$menu_name</span><span class="br0">)</span> <span class="co1">//->condition('expanded', 1)</span> <span class="sy0">-></span><span class="me1">condition</span><span class="br0">(</span><span class="st_h">'has_children'</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">)</span> <span class="sy0">-></span><span class="me1">condition</span><span class="br0">(</span><span class="st_h">'plid'</span><span class="sy0">,</span> <span class="re0">$parents</span><span class="sy0">,</span> <span class="st_h">'IN'</span><span class="br0">)</span> <span class="sy0">-></span><span class="me1">condition</span><span class="br0">(</span><span class="st_h">'mlid'</span><span class="sy0">,</span> <span class="re0">$parents</span><span class="sy0">,</span> <span class="st_h">'NOT IN'</span><span class="br0">)</span> <span class="sy0">-></span><span class="me1">execute</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$num_rows</span> <span class="sy0">=</span> <span class="kw4">FALSE</span><span class="sy0">;</span> <span class="kw1">foreach</span><span class="br0">(</span><span class="re0">$result</span> <span class="kw1">as</span> <span class="re0">$item</span><span class="br0">)</span> <span class="br0">{</span> <span class="re0">$parents</span><span class="br0">[</span><span class="re0">$item</span><span class="br0">[</span><span class="st_h">'mlid'</span><span class="br0">]</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$item</span><span class="br0">[</span><span class="st_h">'mlid'</span><span class="br0">]</span><span class="sy0">;</span> <span class="re0">$num_rows</span> <span class="sy0">=</span> <span class="kw4">TRUE</span><span class="sy0">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw1">while</span><span class="br0">(</span><span class="re0">$num_rows</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$tree_params</span><span class="br0">[</span><span class="st_h">'expanded'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$parents</span><span class="sy0">;</span> <span class="re0">$tree_params</span><span class="br0">[</span><span class="st_h">'active_trail'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$active_trail</span><span class="sy0">;</span> <span class="co1">// Cache the tree building parameters using the page-specific cid.</span> cache_set<span class="br0">(</span><span class="re0">$cid</span><span class="sy0">,</span> <span class="re0">$tree_params</span><span class="sy0">,</span> <span class="st_h">'cache_menu'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Build the tree using the parameters; the resulting tree will be cached by _menu_build_tree().</span> <span class="kw1">return</span> <span class="re0">$tree</span><span class="br0">[</span><span class="re0">$cid</span><span class="br0">]</span> <span class="sy0">=</span> menu_build_tree<span class="br0">(</span><span class="re0">$menu_name</span><span class="sy0">,</span> <span class="re0">$tree_params</span><span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span> <span class="sy1">?></span></pre></div> </div> </pre>
-
-
safe_summary (String, 0 characters )
-
-
-
-
field_blog_image (Array, 0 elements)
-
field_razdel (Array, 1 element)
-
field_teg (Array, 0 elements)
-
field_video (Array, 0 elements)
-
field_image_view (Array, 1 element)
-
field_source (Array, 0 elements)
-
field_image_view_tiles (Array, 1 element)
-
path (Array, 1 element)
-
pathauto (String, 1 characters ) 1
-
-
cid (String, 1 characters ) 0
-
last_comment_timestamp (String, 10 characters ) 1490001357
-
last_comment_name (NULL)
-
last_comment_uid (String, 1 characters ) 1
-
comment_count (String, 1 characters ) 0
-
name (String, 8 characters ) Саша
-
picture (String, 1 characters ) 0
-
data (String, 189 characters ) a:6:{s:16:"ckeditor_default";s:1:"t";s:20:"cked...
-
a:6:{s:16:"ckeditor_default";s:1:"t";s:20:"ckeditor_show_toggle";s:1:"t";s:14:"ckeditor_width";s:4:"100%";s:13:"ckeditor_lang";s:2:"en";s:18:"ckeditor_auto_lang";s:1:"t";s:7:"overlay";i:1;}
-
-
-
Krumo version 0.2.1a
| http://krumo.sourceforge.net
