Wayfinderでmega menu  【解決済み】

質問全般・改善要望
返信する
Ryo
メンバー
メンバー
記事: 24
登録日時: 2009年8月25日(火) 13:19

Wayfinderでmega menu  【解決済み】

投稿記事 by Ryo »

こんにちわ。

本家フォーラムのこちらを見て、mega menuの導入に挑戦しています。
http://modxcms.com/forums/index.php?topic=50255.0

環境
MODx 1.05J-r3
Wayfinder 2.0.2
サーバー ローカル環境(MacでMAMP)

目標はこのように動作させることです。
http://www.howsoon.co.uk/products.html

テンプレートHTML

コード: 全て選択

<script src="[(site_url)]assets/js/jquery-1.5.2.min.js" type="text/javascript"></script>
<script src="[(site_url)]assets/js/jquery.hoverIntent.minified.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
    function megaHoverOver(){
        $(this).find(".sub").stop().fadeTo('fast', 1).show();          
        //Calculate width of all ul's
        (function($) {
            jQuery.fn.calcSubWidth = function() {
                rowWidth = 0;
                noColumns = 4;
                //Calculate row
                $(this).find("ul").each(function() {   
                    maxWidth = ($(this).width() * noColumns);           
                    rowWidth += $(this).width();
                                      if(rowWidth > maxWidth) {
                                     rowWidth = maxWidth;
                                     }
                });   
            };
        })(jQuery);       
        if ( $(this).find(".row").length > 0 ) { //If row exists...
            var biggestRow = 0;   
            //Calculate each row
            $(this).find(".row").each(function() {                              
                $(this).calcSubWidth();
                //Find biggest row
                if(rowWidth > biggestRow) {
                    biggestRow = rowWidth;
                }
            });
            //Set width
            $(this).find(".sub").css({'width' :biggestRow});
            $(this).find(".row:last").css({'margin':'0'});         
        } else { //If row does not exist...        
            $(this).calcSubWidth();
            //Set Width
            $(this).find(".sub").css({'width' : rowWidth});    
        }
    }
  
    function megaHoverOut(){
      $(this).find(".sub").stop().fadeTo('fast', 0, function() {
          $(this).hide();
      });
    }
    var config = {   
         sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)   
         interval: 100, // number = milliseconds for onMouseOver polling interval   
         over: megaHoverOver, // function = onMouseOver callback (REQUIRED)   
         timeout: 500, // number = milliseconds delay before onMouseOut   
         out: megaHoverOut // function = onMouseOut callback (REQUIRED)   
    };
    $("ul#topnav li .sub").css({'opacity':'0'});
    $("ul#topnav li").hoverIntent(config);
});
</script>
CSS
http://www.sohtanaka.com/web-design/meg ... ss-jquery/
こちらのCSSを追加

Wayfinderのconfig
上記の本家フォーラムの#5にあるzipファイルの中にあるものです。
もちろん、#2にある設定も試しました。

コード: 全て選択

<?php
	$startId = 0;
	$level = 3;
	$selfClass = ''; 
	$firstClass = '';
	$hereClass = ''; 
	$lastClass = '';
	$parentClass ='';
	
	$outerTpl = '@CODE: <ul id="topnav">
    [+wf.wrapper+]
	</ul>';
	$innerTpl = '@CODE:[+wf.wrapper+]';
    $categoryFoldersTpl = '@CODE:<li><a href="[+wf.link+]" class="[+wf.description+]" title="[+wf.title+]">[+wf.linktext+]</a>
    <div class="sub">
    [+wf.wrapper+]
    </div>
    </li>';
	$parentRowTpl = '@CODE:<ul>
	<li><h2><a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a></h2></li>
	[+wf.wrapper+]
	</ul>';
	$innerRowTpl = '@CODE:<ul><li><h2><a href="[+wf.link+]" class="[+wf.description+]" title="[+wf.title+]">[+wf.linktext+]</a></h2></li></ul>';
	$rowTpl = '@CODE:<li><a href="[+wf.link+]" class="[+wf.description+]" title="[+wf.title+]">[+wf.linktext+]</a></li>';	
?>
ドキュメントの構造
画像

HOME、Products、SALE、4th page、5th contentのリンク属性にrel="category"を追加

出力されるhtmlの該当部分

コード: 全て選択

<ul id="topnav">
	<li><a href="http://localhost/modx/" class="" title="HOME">HOME</a></li>
	<li><a href="/modx/index.php?id=2" class="" title="Products">Products</a>
		<div class="sub">
			<ul>
				<li>
					<h2><a href="/modx/index.php?id=12" title="Desktop">Desktop</a></h2>
				</li>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=13" class="" title="Link One">Link One</a></h2>
					</li>
				</ul>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=14" class="" title="Link Two">Link Two</a></h2>
					</li>
				</ul>
			</ul>
			<ul>
				<li>
					<h2><a href="/modx/index.php?id=20" title="Server">Server</a></h2>
				</li>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=21" class="" title="子2-1">子2-1</a></h2>
					</li>
				</ul>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=22" class="" title="子2-2">子2-2</a></h2>
					</li>
				</ul>
			</ul>
			<ul>
				<li>
					<h2><a href="/modx/index.php?id=16" title="Laptop">Laptop</a></h2>
				</li>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=17" class="" title="子2-1">子2-1</a></h2>
					</li>
				</ul>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=18" class="" title="子2-2">子2-2</a></h2>
					</li>
				</ul>
			</ul>
			<ul>
				<li>
					<h2><a href="/modx/index.php?id=25" class="" title="apple">apple</a></h2>
				</li>
			</ul>
		</div>
	</li>
	<li><a href="/modx/index.php?id=3" class="" title="SALE">SALE</a>
		<div class="sub">
			<ul>
				<li>
					<h2><a href="/modx/index.php?id=24" title="SALE ITEMS">SALE ITEMS</a></h2>
				</li>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=6" class="" title="子ドキュメント1">子ドキュメント1</a></h2>
					</li>
				</ul>
				<ul>
					<li>
						<h2><a href="/modx/index.php?id=7" class="" title="子ドキュメント2">子ドキュメント2</a></h2>
					</li>
				</ul>
			</ul>
		</div>
	</li>
	<li><a href="/modx/index.php?id=4" class="" title="4th page">4th page</a></li>
	<li><a href="/modx/index.php?id=5" class="" title="5th content">5th content</a></li>
</ul>
項目LinkOneの<ul>が不要なのですが、innerRowTplの<UL>を削るわけにもいかないし、なぜRowTPLではなく、innnerRowTplが適用されているかも謎です。
うまく動作しているDEMOがあるだけに、なぜ動かないのか・・・

ぜひ原因を教えてください!
よろしくお願いします。
Ryo
メンバー
メンバー
記事: 24
登録日時: 2009年8月25日(火) 13:19

Re: Wayfinderでmega menu

投稿記事 by Ryo »

自己解決しました。

wayfinder本体のファイルに修正が必要でした。
Readmeに書いてありました。

お騒がせしました。
返信する