サポート » 使い方全般 » widget レイアウト

  • 解決済 ysjack

    (@ysjack)


    wp2.7.1を使っています。
    widgetのサイドバーをコラムコンテンツの下に配置してwidgetを横並びにしたいのですが、サイドバー内のwidgetの場合
    <?php if (!art_sidebar(1)): ?>で済まされているようで、これをcssでコントロールするわけには行かないように思っています。

    とにかく今単純にレイアウトでfooter前、ページの最下部にsidebar1.phpを配置してwidgetをadminから選ぶスタイルで選ばれたwidgetが横並びになるようにしたいですが、ご存知の方はご教授お願い致します。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • モデレーター jim912

    (@jim912)

    ysjackさん、こんにちは。

    テンプレートの記述に関係なく、表示はCSSでコントロールできるものですので、基本的には、ソースコードの出力位置の変更とCSSの記述調整で実現可能かと思います。ウィジェットは概ねリスト形式でのソース出力になりますので、liをfloat: leftとするか、display:inline;の指定を追加すれば、横並びになるものと思われます。

    より具体的なアドバイスが必要であれば、ご利用しているテーマ名とその配布場所などを教えてください。

    トピック投稿者 ysjack

    (@ysjack)

    ご指南ありがとうございます。
    私もテンプレート自体は私なりにチョコチョコ勉強しているのですが^^;

    今回は「Artisteer 2」を使ってオリジナルを作ってみました。
    http://pr4u.bz/MNT/
    これがそのテーマです。
    Artisteer は他のブログも発行できることが前提なので各セクションのタグが見慣れないものになっています。
    ページ下部の「Pages」「Archives」がWPのwidgetです。2.7.1の標準装備のものです。
    引き続きアドバイス頂ければうれしいです。

    まだまだ勉強中のものですが、よろしくお願い致します。

    トピック投稿者 ysjack

    (@ysjack)

    難解な原因が判明しました。
    Artisteerの場合widgetの書き出しを独自のファンクションで行っていました。

    <?php if (!art_sidebar(1)): ?>
    <?php endif ?>

    サイドバーへのCSSの管理も「Block」がリードしています。
    !art_sidebar 
    ————————————

    function art_sidebar($index = 1)
    {
    	if (!function_exists('dynamic_sidebar')) return false;
    	ob_start();
    	$success = dynamic_sidebar($index);
    	$content = ob_get_clean();
    	if (!$success) return false;
    	$content = art_normalize_widget_style_tokens($content);
    	$replaces = array(
    		'<!--- BEGIN Widget --->' => "<div class=\"Block\">\r\n    <div class=\"Block-body\">\r\n",
    		'<!--- BEGIN WidgetTitle --->' => "<div class=\"BlockHeader\">\r\n    <div class=\"header-tag-icon\">\r\n        <div class=\"BlockHeader-text\">\r\n",
    		'<!--- END WidgetTitle --->' => "\r\n        </div>\r\n    </div>\r\n    <div class=\"l\"></div>\r\n    <div class=\"r\"><div></div></div>\r\n</div>\r\n",
    		'<!--- BEGIN WidgetContent --->' => "<div class=\"BlockContent\">\r\n    <div class=\"BlockContent-body\">\r\n",
    		'<!--- END WidgetContent --->' => "\r\n    </div>\r\n</div>\r\n",
    		'<!--- END Widget --->' => "\r\n    </div>\r\n</div>\r\n"
    	);
    	$bwt = '<!--- BEGIN WidgetTitle --->';
    	$ewt = '<!--- END WidgetTitle --->';
    	if ('' == $replaces[$bwt] && '' == $replaces[$ewt]) {
    		$startTitle = 0;
    		$endTitle = 0;
    		$result = '';
    		while (true) {
    			$startTitle = strpos($content, $bwt, $endTitle);
    			if (false == $startTitle) {
    				$result .= substr($content, $endTitle);
    				break;
    			}
    			$result .= substr($content, $endTitle, $startTitle - $endTitle);
    			$endTitle = strpos($content, $ewt, $startTitle);
    			if (false == $endTitle) {
    				$result .= substr($content, $startTitle);
    				break;
    			}
    			$endTitle += strlen($ewt);
    		}
    		$content = $result;
    	}
    	$content = str_replace(array_keys($replaces), array_values($replaces), $content);
    	echo $content;
    	return true;
    }

    —————————
    このような感じです。
    私が「!art_sidebar 」をWPのファンクションタグと思って探していた為
    答えが見つからなかったようです。^^;

    なのでこの!art_sidebarを消して通常のWPのwidgetファンクション

    <?php if ( function_exists('dynamic_sidebar')): ?>
    <?php endif ?>

    で書き込んで
    CSSで「display:inline;」としてやればよいのですよね?

    <?php if ( !function_exists('dynamic_sidebar') ||
                      !dynamic_sidebar('1') ) :?>
    <?php endif ?>

    と書き込んでいますが、エラーにはならない物の何も表示されません。^^;
    この書式間違っていますでしょうか?
    引き続きご教授お願い致します。

    モデレーター jim912

    (@jim912)

    ysjackさん、こんにちは。

    サイドバーへのCSSの管理も「Block」がリードしています。

    blockクラスに対して、floatもしくはdisplay指定でも出来るのではないかと思います。

    通常のウィジェットファンクションについては、

    <?php if ( !function_exists(‘dynamic_sidebar’) ||
                      !dynamic_sidebar(‘1’) ) :?>
    <?php endif ?>と書き込んでいますが、エラーにはならない物の何も表示されません。^^;
    この書式間違っていますでしょうか?

    !dynamic_sidebar(1)

    と、シングルクォートを外してください。
    微細な違いですが、dynamic_sidebarは引数を整数型であるかにより、挙動が変わってきます。
    ※ クォートで括ると文字列型として扱われます。

    トピック投稿者 ysjack

    (@ysjack)

    block は都合の悪いことに post content にも coment にも使われています。
    それらのCSSも変更すればよいのですが、こんご効率よくArchivesを生かして行きたいので今回はパート的なカスタマイズを考えています。

    それでwidgetに対しての書き込みなのですが

    sidber1.php
    <div id="sidebar1">
    	<ul>
    <?php if ( function_exists('dynamic_sidebar') &&
                               dynamic_sidebar(1) ) : else : ?>
    <?php endif ;?>
            </ul>
    </div>

    として それに対するfunction.php

    <?php if (function_exists('register_sidebars')
                               register_sidebars(1); ?>
    <?php endif ;?>

    CSS

    #sidbar1 ul{
             display : inline ;
    }

    これで良いはずと思っていますがエラーになります。
    Parse error: syntax error, unexpected ‘<‘
    お恥ずかしいのですが、どこがいけないないのでしょうか?
    アドバイス頂けるとうれしいです。

    また今後の独学のためにも更なる修行を重ねたいのですが、「テーマへのwidget導入方法 または widgetレイアウト 」について参考になるページまたは書籍はありますでしょうか?
    yahooで探してもgoogleで探してもなかなか出てこないのですが
    皆さんはこのことに関してどこで勉強されるのでしょうか?

    モデレーター jim912

    (@jim912)

    ysjackさん、こんにちは。

    block は都合の悪いことに post content にも coment にも使われています。

    では、ウィジェットの出力箇所を含むdivなどのclassもしくはidとの組み合わせで指定し、局部的に適用するようにすれば解決できるかと思いますよ。

    Parse error: syntax error, unexpected '<'

    エラーメッセージが出るなら、発生したファイル名や行番号なども表示されるはずですので、エラーメッセージをよくよく確認することです。
    見た感じ、function.phpでphpの開始タグを使っているので、<?php の中に <?php が存在している状態になってたりしませんか?

    「テーマへのwidget導入方法 または widgetレイアウト 」について参考になるページまたは書籍はありますでしょうか?

    残念ながら、書籍の大半はビギナー向けのものが多く、ウィジェットについても使い方程度の掲載がほとんどです。
    テーマへのwidget導入方法については、webでの検索、wp-includes/widgets.phpのソース解読などで対応、widgetレイアウトについてはCSSの分野になりますので、CSSの解説書などを参考になさるのがよいのではないかと思います。

    トピック投稿者 ysjack

    (@ysjack)

    ウィジェットの出力箇所を含むdivなどのclassもしくはidとの組み合わせで指定し、局部的に適用するようにすれば解決できるかと思いますよ。

    ご指摘にあるように解決いたしました。ただ、function内部でタグが生成されていたのでfunction内部でのclass および id の記述を変更してcssでfloatさせました。

    artisteerはご丁寧にie6.cssがあることに今頃気づいてcheck作業が長引きました。
    ver1 の時にはなかったように思います。^^;これが手こずる原因に・・・

    wp-includes/widgets.phpのソース解読などで対応

    やはり簡単にはいかないようですね。しかし、いつの日にか自分で作ってみたいと思って降りますので一歩ずつ勉強していきたいと思います。

    数々のご丁寧なアドバイスに感謝いたします。こんな初心者ですが、今後もお付き合いよろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「widget レイアウト」には新たに返信することはできません。