0

请你帮我做一个小功能 - 我不擅长 JS / Jquery。我需要滚动到 Prestashop 中的锚点,所有代码仅在 index.php 中起作用,而不是在其他页面(产品页面、类别页面 ..)..

所以我需要这个函数的规则只能在 index.php 页面上激活..但是下面的代码不是函数:(

jQuery(function($) {
    var url = window.location.pathname;
    var string = "index.php";
    if(url.indexOf(string) !== -1) {  
       $("a.linkscroll").live('click',function(event){
          event.preventDefault();
          var target_offset = $(this.hash).offset() ? $(this.hash).offset().top : 0;       
          var customoffset = 120;
          $('html, body').animate({scrollTop:target_offset - customoffset}, 2000);
        });
    }   
    else {
       echo "nothing there?"
    }
    }(jQuery));

拜托,你能帮帮我吗?(在菜单链接中,我有类 a.linkscroll = a href="index.php#some-anchor",所以我可以使用这个 = 我不需要使用的另一个锚)..scroll 函数我只在 main 中使用过页面 (index.php),锚点有 ID(例如 id="some-anchor")。

谢谢您的帮助!

4

2 回答 2

0

可能没有任何覆盖的最简单方法是从 tpl 文件定位 index.php 页面。

您可以将其添加到任何文件中,例如在页脚中。

所以我将开始定位 index.php 页面,它很简单。

{if $page_name =='index'}
    <script type="text/javascript">
        $(document).ready(function() {
            $("a.linkscroll").on('click',function(event){
                event.preventDefault();
                var customoffset = 120;
                $('html, body').animate({
                    scrollTop: $($.attr(this, 'href')).offset().top - customoffset,
                }, 2000);
            });
        });
    </scrpt>
{/if}

你可以在这里看到一个活生生的例子:JS Fiddle Example

这样,您的代码应该可以工作并且只能在主页中工作。

于 2018-01-07T11:50:31.953 回答
0

你好吉里

<body>在 Prestashop 中,您可以在id中找到页面名称及其关联控制器。

您可以通过将$pagename控制器文件分配给 smarty 变量来传递它。

获取页面名称的代码如下:

$pagename = Dispatcher::getInstance()->getController();

您可以覆盖您的classes/controller/FrontController.php文件并在其中查找setMedia功能。

在那里,您可以编写代码以仅为主页添加 JS。

$pagename = Dispatcher::getInstance()->getController();
if ($pagename  == 'index') {
$this->addJS(_THEME_JS_DIR_.'custom.js');
}

将您的 JS 添加到您的主题 JS 文件夹中,您将仅在主页中看到您的 JS。

如果找不到加载的 JS,请删除cache/class_index.php文件。

之后就会显示出来。

于 2018-01-07T04:08:35.263 回答