Gibt es eine "If auf Homepage" -Typ bedingt? oder zwingen Sie einen Block, um nur auf der Homepage anzuzeigen

magento.stackexchange https://magento.stackexchange.com/questions/12011

  •  16-10-2019
  •  | 
  •  

Frage

Ich entscheide mich zu verwenden Benachrichtigungsleiste Erweiterung, um eine Benachrichtigung nur auf der Startseite anzuzeigen. Diese Erweiterung zeigt jedoch die Benachrichtigung auf allen Seiten.

Ich habe festgestellt, dass es eine Benachrichtigung.Phtml -Datei in gibt app\design\frontend\base\default\template\notificationbar\html\Mit diesem Inhalt:

    <?php
/**
 * Datepicker adminhtml configuration control based on the 
 * Mage_Adminhtml_Block_Report_Config_Form_Field_YtdStart control.
 *
 * @author Justin Stern (www.foxrunsoftware.net)
 * @copyright  Copyright (c) 2012 All Rights Reserved, http://www.foxrunsoftware.net
 * @license    FoxRunSoftware License Agreement
 * 
 * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 
 * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
 * PARTICULAR PURPOSE.
 * 
 * @category design
 * @package  base_default
 */
?>
<?php
/**
 * @see FoxRunSoftware_NotificationBar_Block_Html_Notifications
 */
?>
<?php if ($this->displayNotifications()): ?>
    <div id="notification-bar"><div id="notification"><span class="notification-content"><?php echo $this->getNotificationContent(); ?></span><?php if($this->allowClearControl()) : ?><span class="notification-close"><a title="dismiss this notification">×</a></span><?php endif; ?></div></div>
    <?php if($this->allowClearControl()) : ?>
    <script type="text/javascript">
        $$('#notification-bar .notification-close').first().observe('click',function(event) { var callback = <?php echo ($this->isFixed() ? "function() { \$\$('body').first().setStyle({marginTop:0}); }" : "function(){}") ?>; event.element().up('#notification-bar').fade({duration:0.5, afterFinish:callback}); Mage.Cookies.set("<?php echo $this->getNotificationClearCookieName() ?>","1",new Date((new Date()).getTime() + 365*24*60*60*1000),"/"); });
    </script>
    <?php endif; ?>
<?php endif; ?>

Ich fand, dass ich diese Zeile ändern sollte:

<?php if ($this->displayNotifications()): ?>

Gibt es eine Möglichkeit, zu bestimmen, ob die servierte Seite eine Homepage ist?

War es hilfreich?

Lösung

Der einfachste Weg ist, diese Form zu tun, die local.xml. Auf diese Weise werden wir sicher wissen, dass unsere Änderungen zuletzt enthalten sein werden.

Fügen Sie also Folgendes in die hinzu local.xml Entfernen Sie es von allen Seiten und addieren Sie es speziell nur dem CMS -Index (der Homepage).

<default>
  <remove name="notificationbar_notifications"/>
</default>

<cms_index_index>
   <reference name="after_body_start">
      <block type="notificationbar/html_notifications" name="custom_notificationbar_notifications" template="notificationbar/html/notifications.phtml" />
   </reference>
</cms_index_index>

Andere Tipps

$routeName = Mage::app()->getRequest()->getRouteName();
$identifier = Mage::getSingleton('cms/page')->getIdentifier();

if($routeName == 'cms' && $identifier == 'home') {
    // for code
}

Versuch es!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top