こんにちは、読者の皆様。 運命が判明したので、私は私のお気に入りの都市ハバロフスクでインターネット代理店プロジェクトの開発を担当している人の一人です。 そして、プロジェクトの組み立ての速度の要件に影響を与えるロシアの中央部と比較して、かなり低い予算で、顧客のために製品の適切な品質を維持する方法についてお話したいと思います。 そして、私の目標は、開発とさらなるメンテナンスコストを削減することです。これは、管理パネルの編集可能な要素をできるだけ多く使用して、できるだけ早くサイトを作成する必要性につながります。
ほとんどの場合、情報はCMS Worpdressに関する「技術計画」、「最高」です。 テクノロジー、パス、テクニックなどの使用については、私たちのパスについてのみ説明します。 宗教の問題-ホリバーを控えてください。 始めましょう。
小さな余談を開始します。 私たちの一般的な集団では、プロジェクトは開発原則に従っていくつかのタイプに正確に分割されています。
- テーマフォレストを含むHTMLテンプレート-> CMS上のアセンブリ。
- デザイン->レイアウト-> CMS上のアセンブリ。
- 個々のソリューションの開発。
この記事の最初の2つのポイントのみを考慮することをすぐに予約します。3番目のポイントを一般化するのはかなり難しいタスクだからです。 みんなのお気に入り/最高/他のすべての悪いテクノロジーには独自のものがあり、小さな都市ではRoR / Flaskなどの優れた開発者を見つけるのは難しいかもしれません。 そして、それらについて概要を説明します。 このトピックに関心がある場合-詳細な記事チュートリアル「クライアントが喜んでいる4〜8時間でWPにWebサイトを構築する方法」ではありません。
なぜワードプレス?
低予算と世界へのエントロピーを減らしたいという願望は、選択を正当化しました。 詳細:
- 顧客向けの管理パネルの利便性。 真剣に、このCMSの導入後、すべての顧客トレーニングは、管理者パスワードを送信しているという事実に帰着しました。 「ニュースを作成する方法」、「サイトで携帯電話を変更する方法」というビデオを録画した思い出は、私の夢を止めました。
- サイト構築速度。 プロジェクトあたり約4〜8時間は素晴らしいです。 競争上の優位性。
- 開発者を訓練してプロジェクトを構築するための曲線。 これまでのところ、私の記録は、サイトが私に合った期間に完全に組み立てられるまで、最初から1.5週間のトレーニング(つまり、HTMLの省略形はサタンを引き起こす呪文のようです)です。
- CMS評価の顧客向けの美しいグラフィック:)
- フリーウェア、ライセンスを購入する必要はありません。
はい、パンフレットを手に持ってドアをノックして「WPについて話をしませんか?」と言いません。 このCMSを使用するだけで、これに関する注意事項があります。 実際、これは私たちがやってくるすべての新しいウェブマスターに私が発音した印刷形式の独白です。
プロジェクトを設計するとき、どのようなニュアンスを考慮する必要がありますか?
この段階ですでにサイトを構築することの微妙な違いについて考えるべきだと思います。 ここに、私が使用するプラグインとスニペットのセットからの一般的および具体的な推奨事項、おそらく明白な推奨事項を示します。
テンプレートは、「サイトヘッダー」、実際のコンテンツ、および「フッター」に簡単に分割する必要があります。 ヘッダー/フッターの一部の要素を非表示にする必要がある場合、WPは非常に多くの素晴らしい機能条件を提供します。 ( フロントページ()、is_404()など)。 外観を変更する必要がある場合-CSSは、 body_class()を使用できます。
外観->サイトメニューで制御されるさまざまなメニューをタイプセットするときは、次の構造に従う必要があります。
<ul> <li> <a href=""> </a> </li> <li> <a href=""> </a> <ul class="sub-menu"> <li> <a href=""> </a> </li> <li> <a href=""> </a> </li> </ul> </li> <li> <a href=""> </a> </li> </ul>
ここでのニュアンスのうち、サブメニューにcssクラスのサブメニューがあることが重要です。 これにより、 wp_nav_menu($ args)関数のために、サイトの構築時にカスタムウォーカーを記述する必要がなくなります。
私はキャプテンとして明らかですが、レイアウト内のすべての動的な位置は、プレースホルダーをさらに置換するために、個別の要素(電話の場合、たとえば+ 7 XXX XXXなど)、または次の論理構造のいずれかでなければなりません:
リストへのレイアウト
リストアイテムのレイアウト
...
リストアイテムのレイアウト
リストの後のレイアウト
クライアントが管理パネルのwysiwygを介して貼り付けるコンテンツに対して、CSSで別のルールを作成することが不可欠です。 次のようなもの(それをLESSにします):
.user-content{ ... a{ &:hover{ ... }; &:active{ ... }; &:focus{ ... }; } p{ ... } table{ thead { ... th { ... } } tbody { tr{ ... td{ ... } } } } h1, h2, h3, h4, h5, h6, h7{ … } h1{ ... } ... h7{ ... } ul{ ... li{ ... } } img{ … } }
将来的には、「なぜ写真を挿入したのにすべてがうまくいったのか」というような電話からあなたを救うでしょう。
サイトに画像ギャラリーがある場合(3行、6行など)、これらのギャラリーのレイアウトを、ギャラリーショートコードを使用してWPが生成するレイアウトに組み込む必要があります。 または、列数などのWP機能が冗長な場合は、このショートコードを再定義し、「リストの前のレイアウト、リストアイテムのレイアウト、リストの後のレイアウト」のルールに従ってレイアウトを作成します。
WPによって生成されるページネーションのレイアウトは、次の形式を取ります。
<div class="pagination"> <a class="prev page-numbers" href="#"> </a> <a class="page-numbers" href="#">1</a> <span class="page-numbers current">2</span> <a class="page-numbers" href="#">3</a> <a class="next page-numbers" href="#"> </a> </div>
「パンくずリスト」のレイアウトは簡単です。 ul liリスト、または<>>で区切られた<a/>またはそれらのような他のリスト。
また、上記のブロック全体が1つのフレーズに収まることを言いたい-WP / plugins / snippets-functionsが生成するマークアップをスタイリングすると、幸福があります。
html / css / jsファイルのセットを入手しました。次は何をしますか?
この時点では、kosher_wordpressと呼ばれるリポジトリがあるため、すべてのプロジェクトで毎回多くのプラグインをインストールする必要はありません。 その中に何があり、私の意見では、現時点では何が十分ですか:
- WPの最新バージョン。
- 管理者のデフォルトのパスワードではありません;)。
- 管理パネルからのカスタムフィールドを持つ新しいタイプの投稿のビルダー。 マジックフィールド2を使用します 。 リストの要素リスト->個別の要素ページの要素を作成するために使用します。 archive- $ type.phpおよびsingle- $ type.php形式のテンプレート、またはWP_Queryを使用した出力。
- Tax-Meta-Classを使用した分類の新しいフィールドのビルダー
- 画面を編集するためのカスタマイザー。 Advanced CustomFieldsを使用します 。 次のケースには不可欠です。 テンプレート名が指定されたtpl-contacts.phpなどの連絡先テンプレートがあります:連絡先ページテンプレート 。 また、管理パネルの連絡先編集ページでこのテンプレートを選択するときは、マップの座標、添付されたフィードバックフォームなどの追加フィールドが表示される必要があります。 そして、ここで彼は私たちを助けます。
- チャイム、フィードバック、注文などの作成者 お問い合わせフォーム7
- グローバルサイト設定のビルダー。 帽子をかぶった電話、ソーシャルネットワーク、およびこのタイプのその他の情報に使用されます。 テーマオプション 。
- 残りのほとんどすべての機能をカバーする関数を含むFunctions.php :
- テーマメニューをサポートします。 register_nav_menus();
- 投稿のサムネイルサポート。 add_theme_support( 'post-thumbnails');
- less-> moreおよびキャッシングからのサポートにより、画像のサイズを変更します。 resize_image($ attach_id = null、$ img_url = null、$ width、$ height、$ crop = false)
- パンくずジェネレータ。 the_breadcrumb() 。
- ページナビゲーションジェネレーター。 wp_corenavi($ wp_query)
- 展開するwp_nav_menu()のカスタムウォーカー。 クラスMy_WalkerはWalker Navメニューを拡張します{ 元のWPコード }
- ギャラリーのショートコードを変更するにはタッチします。 remove_shortcode( 'gallery'、 'gallery_shortcode'); add_shortcode( 'gallery'、 'my_gallery_shortcode'); function my_gallery_shortcode($ attr){}
- ページナビゲーションジェネレーター。 wp_corenavi($ wp_query)
- 通知用のスニペット付きファイル。
そして、プロジェクトアセンブリ全体は次のようになります。
- コンピューター上に仮想ホストを作成する
- git clone ...
- インポートdb、3つのSQLコマンドを入力して、WPに現在のURLを伝えます( gist )
- 2番目のモニターからスニペットをコピーし、レイアウトを意味で埋めます。
- サーバーと1杯のコーヒーに展開する
スニペット付きのファイルのおおよその内容:
<?php /* * Template Name: */ ?> <?php /* * . */ ?> <?php /* * header.php */ get_header(); ?> <?php /* * */ ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php /* * , $image['url'] */ $url = wp_get_attachment_url(get_post_thumbnail_id($post->ID)); $image = vt_resize(null, $url, 220, 220, true); if (!$image['url']) $image['url'] = 'http://placehold.it/220x220&text=NO IMAGE'; ?> <?php the_title(); ?> <?php the_content(); ?> <?php endwhile; ?> <?php else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> <?php /* * WP_Query */ ?> <?php /* */ $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'news', 'posts_per_page' => '3', 'paged' => $paged ); /* WP_Query */ $the_query = new WP_Query($args); ?> <?php if ($the_query->have_posts()) : ?> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <?php /* * , $image['url'] */ $url = wp_get_attachment_url(get_post_thumbnail_id($the_query->post->ID)); $image = vt_resize(null, $url, 220, 220, true); if (!$image['url']) $image['url'] = 'http://placehold.it/220x220&text=NO IMAGE'; ?> <?php echo $image['url']; ?> <?php /* * , ( more). * , $the_query->the_post(); global $more;$more=0; * WP . */ ?> <?php the_title(); ?> <?php the_content(' ...'); ?> <?php endwhile; ?> <?php /* * */ wp_corenavi($the_query); ?> <?php /* * */ wp_reset_postdata(); ?> <?php else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> <?php /* * footer.php */ get_footer(); ?>
このアルゴリズムによると、過去1年間に100以上のサイトを収集しました。設計の複雑さやさまざまなモーションエフェクトに応じて、平均で1〜3営業日かかります。 アセンブリ自体は約4〜8時間かかります。 おそらくこれは結果ではありませんが、これまでのところ私は比較するものが何もありません、私は対話に感謝します。