過去数日間解決しようとしてきたこの問題について、誰かが私を助けてくれることを願っています。Magento のレイヤード ナビゲーションを検索エンジンから完全に隠したいが、ユーザーは利用できるようにしたい。SEO 上の理由から、すべてのリンクを NoFollowing にしたり、noindex フォロー メタ タグを使用したり、Robots.txt で完全にブロックしたりすることで妥協したくありません。これを処理する最も効果的な方法は、Google は Cookie を使用しないため、Cookie が有効になっているユーザーにのみ階層化されたナビゲーションを表示することです。おそらく JavaScript でも同じ効果が得られるでしょうが、私は Cookie メソッドを選択しました。
これまでのところ、ページが読み込まれた後に Cookie が有効になっているかどうかを確認するために、JS の大まかな部分を実装することができました (このフォーラムの別のスレッドから適応)。Cookie が有効になっている場合は何もせず、階層化されたナビゲーションが表示されますが、Cookie が有効でない場合は、「catalog.leftnav」ブロックを削除したいと考えています。私のJSスクリプトからこれを行う方法を理解することはできません。私が達成できたのは、div要素を削除するか、style.displayをnoneに設定することだけです。これらの手法はすべてフロントエンドからリンクを削除しますが、Googleはそれらをすべて見ることができます. これまでに template/catalog/layer/filter.phtml にあるコードの例を次に示します。
<div id="shop-by-filters">
<ol>
<?php foreach ($this->getItems() as $_item): ?>
<li>
<?php if ($_item->getCount() > 0): ?>
<a href="<?php echo $this->urlEscape($_item->getUrl()) ?>" rel="nofollow"><?php echo $_item->getLabel() ?></a>
<?php else: echo $_item->getLabel() ?>
<?php endif; ?>
<?php if ($this->shouldDisplayProductCount()): ?>
(<?php echo $_item->getCount() ?>)
<?php endif; ?>
</li>
<?php endforeach ?>
</ol>
</div>
<script type="text/javascript">
if (navigator.cookieEnabled) {
return true;
} else if (navigator.cookieEnabled === undefined) {
document.cookie = "testcookie";
if (cookie_present("testcookie"))
return true;
} else {
var elem = document.getElementById('shop-by-filters');
elem.parentNode.removeChild(elem);
}
</script>
誰かがこれを手伝ってくれますか、それとももっと良い方法がありますか? 私はまだ Magento について理解しようとしているので、実装が複雑な場合は、いくつかの指示が必要になる可能性があることを覚えておいてください。
ありがとうございました。
ブレンドン