Magento-从管理文件链接到前端皮肤js文件

Magento-从管理文件链接到前端皮肤js文件,magento,Magento,我已经在前端皮肤文件中使用jQuery了。我现在在管理phtml文件中添加了一些额外的功能,这也需要使用jQuery。我不想包含它两次,但假设我不知道前端使用的是什么主题包名称,我如何动态链接到现有的jQuery文件(因为很明显,这可能会改变,所以我不希望它硬编码) 例如,我尝试了这个,但它给了我管理主题包的名称,而不是前端包: <?php // Get the package name $configData = Mage::getStoreConfig('design'

我已经在前端皮肤文件中使用jQuery了。我现在在管理phtml文件中添加了一些额外的功能,这也需要使用jQuery。我不想包含它两次,但假设我不知道前端使用的是什么主题包名称,我如何动态链接到现有的jQuery文件(因为很明显,这可能会改变,所以我不希望它硬编码)

例如,我尝试了这个,但它给了我管理主题包的名称,而不是前端包:

<?php
    // Get the package name
    $configData = Mage::getStoreConfig('design');
    $package = $configData['package']['name'];
?>


有人吗?

好的,这似乎起作用了。我可以直接访问db,在core_config_数据表中查找“design/package/name”,然后使用以下内容构建js文件的url:

<?php // Get the current theme being used, so we can build the url link to our jQuery file
$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
$tablename = Mage::getSingleton('core/resource')->getTableName('core_config_data');
$results = $connection->fetchAll("SELECT * FROM $tablename WHERE path='design/package/name';");
foreach($results as $row) { $theme = $row['value']; };
?>
<script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'frontend/'.$theme; ?>/default/js/jquery.min.js"></script>

好的,这似乎起作用了。我可以直接访问db,在core_config_数据表中查找“design/package/name”,然后使用以下内容构建js文件的url:

<?php // Get the current theme being used, so we can build the url link to our jQuery file
$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
$tablename = Mage::getSingleton('core/resource')->getTableName('core_config_data');
$results = $connection->fetchAll("SELECT * FROM $tablename WHERE path='design/package/name';");
foreach($results as $row) { $theme = $row['value']; };
?>
<script type="text/javascript" src="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN).'frontend/'.$theme; ?>/default/js/jquery.min.js"></script>

帮助我将$storeId设置为1而不是0

$package = Mage::getStoreConfig('design/package/name', 1);
$theme   = Mage::getStoreConfig('design/theme/default', 1);

对于我,帮助将$storeId设置为1而不是0

$package = Mage::getStoreConfig('design/package/name', 1);
$theme   = Mage::getStoreConfig('design/theme/default', 1);

为什么你把javascript放在
/skin
而不是
/js
中?因为它是特定于主题的,所以它在skin/frontend/themename/js中,因为jQuery是一个库,我会忍不住把它放在generic
/js
文件夹中。否则我会把它放在我认为需要的每个主题中,毕竟它只有50KB。我在有近50GB图片的网站上工作过!相比之下,一点javascript看起来并没有那么糟糕。或者你可以直接从code.google.com中包含它。为什么你把javascript放在
/skin
而不是
/js
中?因为它是特定于主题的,所以它在skin/frontend/themename/js中,因为jQuery是一个库,我会忍不住把它放在generic
/js
文件夹中。否则我会把它放在我认为需要的每个主题中,毕竟它只有50KB。我在有近50GB图片的网站上工作过!相比之下,一点javascript看起来并没有那么糟糕。或者你可以直接从code.google.com中包含它。如果你必须这样做,请不要直接查询数据库,有很多事情可能会发生意外的变化,而且效率很低。改为使用
$theme=Mage::getStoreConfig('design/package/name',$storeId)
,其中
$storeId
为已知存储。Magento可能已经在缓存整个配置,这为您节省了很多工作。这是我首先尝试的,但正如我所说的,它总是返回管理员包名,这是默认的,而不是前端皮肤包名。如果必须这样做,请不要直接查询数据库,有许多事情可能会发生意外的变化,而且效率低下。改为使用
$theme=Mage::getStoreConfig('design/package/name',$storeId)
,其中
$storeId
为已知存储。Magento可能已经在缓存整个配置,这为您节省了很多精力。这是我首先尝试的,但正如我所说的,它总是返回管理员包名,这是默认的,而不是前端皮肤包名。