We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
  • http://www.etomite.org/browsesnippets.html?int_snipid=95

    上記のEtomiteスニペットをMODxでも使ってみたく、改造を加えているところです。
    簡単に手を加えることですぐに動くようにはなりましたが、肝心のところがおかしいです。
    たとえばsitemap.xml自体までサイトマップに含めてしまいます。これはGoogleから
    イレギュラーな記述としてハネられます。RSSフィードなんかも含まれてしまいますね。

    Etomiteではたぶん、「メニューインデックス」がゼロ(0)のドキュメントはマップに表示しないと
    いう考え方でこのスニペットは組まれているように思います。ドキュメントで表現できる
    ことがMODxでは増えているので、この種のスニペットは同じ考え方は通用しない
    のかもしれませんね。

    MODxでは「メニューに表示」があるので、これを利用するのが分かりやすいと思い、
    それならhidemenuだろうというところまで推測がつきましたが、さてこれをどう
    組み込むかが分かりません。アドバイスいただけると助かります。

    http://kyms.ne.jp/modx/googlesitemap
    (現状)
      • 33488
      • 429 Posts
      自分のスニペットの中身をみたらやたら改造しちゃってましたので、参考にならないので
      オリジナルからメニューをチェックして出す場合のサンプルとして以下に
        $children = $funcEtomite->getActiveChildren($listParent, "menuindex", "ASC", "id, editedon,hidemenu");
              foreach($children as $child)
                  {
      if ($child['hidemenu'] != 0) continue;
      


      って感じでどうでしょ?
      hidemenuをチェックして、非表示なら表示しないというガードを入れただけですが・・
      hidemenuの値 逆かも知れません(ちゃんと調べてないっす) undecided
      ちなみに、ぷちやではsearchableを見てます。
      検索対象であればサイトマップに出すという形式です。プラス、ちょっと専用な部分も入っていますけど

      参考までにどーぞ♪
      • $children = $funcEtomite->getActiveChildren($listParent, "menuindex", "ASC", "id, editedon, searchable, hidemenu");
        foreach($children as $child)
          {
              if ($child['searchable'] = 0) continue;
              if ($child['hidemenu'] != 0) continue;

        このようにしてみたところ、期待どおりに表示されました。ありがとうございます!
        PHPプログラミングはほとんど分かってなくて、continueってこういうふうに
        使うのか便利だなと勉強になりました。(レベル低っ)

        searchableだけで十分だと思ってたのですが、「検索」の値をnoにしていても
        メニューインデックスに0以外の値が入っていると表示対象になってしまいました。
        それで結局、hidemenuも併用。