Magento建站部分问题解答
的有关信息介绍如下:列举几个magento建站过程常遇到的问题及解答
Q1:怎么修改Magento顶部链接
A1:需要编辑两个文件
1.app/design/frontend/default/default/layout/checkout.xml
2.app/design/frontend/default/default/layout/customer.xml
在这些文件中可以看到链接被加了as=“top.links”简单来说,需要用常见的标签把它们注释出来
删除高速缓存的var->cache文件夹
A2:你可以在你的主题的layout file page。xml发现顶部链接是由块生成的,然后在header block(在默认主题中,这是它的名字)中搜索名为“topLinks”的模块,你会找到
举个消费者模块的例子,在布局文件夹中的文件customer。xml
module="customer">
你需要找到多个运用相同方法的xml要素,注意,addlink方法也可称为编程(为PHP代码),不止在布局文件中。
Q2:在Magento中怎么建立一个简单的“Hello World”模型
下列在Magento中怎样完成?
使用控制器/视图/模型方法显示“Hello World”信息,所以如果我进入http://example。com/myController网站,它能显示“Hello World”字符串,能够在我的网站上显示模板内的字符串(例如:在页眉、页脚等等)将是一件高兴的事
如何在控制器中添加方法(或如果有必要一个新的控制器),该模型与模型交互,并相互查询,选择FROM articles where id='10'并且回到行(包含列id,title,content)
到控制器?然后使用该控制器包含一个视图,这个视图能显示行,所以前往http://example。com/myController/show_row(或一些相似的可以显示视图中的行。不需要设想,就用一个或者一些相似的echo $row->id就可以工作。)
任何其他关于Magento的代码结构的信息都会非常有帮助
A:
创建一个模块
所有添加和自定义Magento都是通过模块来实现的,所以,你需要做的第一件事就是创建一个新模块,在app/modules中创建一个XML文件,命名如下:
cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld。xml
MyCompanyName对你的修改是一个独特的名称空间,它不需要你公司的名称,但建议约定为my Magento。HelloWorld 是您的模块的名称。
清除应用程序缓存
现在的模块文件,我们需要让Magento了解(并检查我们的工作)。 再管理应用程序
1.系统- >缓存管理
2.选择所有缓存刷新菜单
3.单击Save缓存设置
现在,我们确保Magento知道模块
1.系统- >配置
2.单击高级
3.在“禁用模块输出”设置框中,寻找你的新模块命名为“MyCompanyName_HelloWorld”
如果你可以忍受性能慢下来,你可能会想关掉在开发应用程序缓存/学习。 没有什么是更令人沮丧然后忘记清理缓存,想知道为什么您的更改并没有出现。
设置目录结构
接下来,我们需要设置一个模块的目录结构。 你不需要所有这些目录,但现在设置所有并没有害处。
mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql
并添加一个配置文件
touch app/code/local/MyCompanyName/HelloWorld/etc/config。xml
里面的配置文件,添加以下,这本质上是一个“空白”配置。
这个配置文件会让你告诉Magento您想要运行的代码。
设置路由器
接下来,我们需要设置模块的路由器。 这将让系统知道如何处理任何url的形式
http://example。com/magento/index。php/helloworld
因此,在配置文件,添加以下部分。
这是“任何URL的frontName helloworld……
http://example。com/magento/index。php/helloworld
应该使用frontName控制器MyCompanyName_HelloWorld”。
因此,与上面的配置相结合,当你负载上面的helloworld页面中,你会得到一个404页面。 那是因为我们没有为我们的控制器创建一个文件。
touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController。php
现在尝试加载页面。 Progress! 而不是404,你会额外得到一个PHP /Magento
Controller file was loaded but class does not exist
所以,打开我们刚刚创建的文件,粘贴在下面的代码中。 类的名称需要根据你提供的路由器的名称。
classMyCompanyName_HelloWorld_IndexControllerextendsMage_Core_Controller_Front_Action{
publicfunctionindexAction(){
echo "We're echoing just to show that this is what's called,normally you'd have some kind of redirect going on here";
}}
刚刚设置的是module/ frontName控制器。这是默认的控制器和模块的默认动作。 如果你想添加控制器或操作,你必须记住,Magento的URL的第一部分是不可变的
http://example。com/magento/index。php/frontName/controllerName/actionName
所以如果你想匹配这个url
http://example。com/magento/index。php/helloworld/foo
你必须有一个FooController,你可以这样做:
touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController。php
classMyCompanyName_HelloWorld_FooControllerextendsMage_Core_Controller_Front_Action{
publicfunctionindexAction(){
echo 'Foo Index Action';
}
publicfunctionaddAction(){
echo 'Foo add Action';
}
publicfunctiondeleteAction(){
echo 'Foo delete Action';
}}
请注意,默认控制器IndexController和默认动作indexAction可以通过隐式但必须明确之后是否有东西。 所以http://example。com/magento/index。php/helloworld/foo 将匹配控制器FooController indexAction和行动,而不是行动fooAction IndexController中。 如果你想有一个fooAction,在控制器IndexController你必须显式地调用这个控制器,像这样:http://example。com/magento/index。php/helloworld/index/foo 因为url的第二个部分是总是会出现controllerName。 这种行为是一种继承Magento的Zend框架捆绑。
现在,您应该能够点击下面的url并且看到你的echo语句的结果
http://example。com/magento/index。php/helloworld/foo
http://example。com/magento/index。php/helloworld/foo/add
http://example。com/magento/index。php/helloworld/foo/delete
Q3:
1.从Magento管理面板第一页可以找到一个列表 如Mage_Newsletter和Mage_poll的Magento模块。我想知道,这些来自哪里?
例如,如果我创建文件,如:
/var/www/magento/app/design/frontend/[design_package]/[layout_name]/{layout,templates}
要什么模块定义我在admnistrative页面指出的存储在这样一个目录中出现的Magento模块列表的这一组文件?
2.设计包下的皮肤目录,有一个图片目录,然后一个单独的图像/媒体目录这是什么目的。 如何直接决定什么图片放在图片目录下而不是在图像/媒体下? 这里使用的约定是什么?
A:
1.每个模块都有一个模块注册文件。 这些存在于登记文件
app/etc/modules/
这些是用来激活或禁用模块。 例如Mage_Newsletter 注册文件Mage_Newsletter。xml
如果你想创建一个模块注册文件,创建Namespace_Module。xml 在app/etc/modules与
local
这个模块将出现在管理面板。
2.目录,静态块和图片上传下media。 在主题特定的图像下skin/frontend/[design_package]/[layout_name]/images
Q4:昨天我的应用程序工作正常,今天当我打开电脑试图开始Magento时得到了这个错误消息
ServiceTemporarilyUnavailable
Theserver istemporarily unable to service your request due to maintenance downtimeorcapacity problems. Pleasetryagain later.
我甚至无法打开管理页面,而且我甚至无法在页面上看见任何形式的错误,如果我给我的Magento输入任何URL得到上面的输出,我该怎么解决?
A:检查你的Magento root中是否存在一个名为maintenance.flag的文件,如果是,删掉它。Magento在执行某些任务时暂时创建这个文件,Magento检查它的存在时,如果它存在便会让用户转到你描述的页面。它应该在完成后自动删除这个文件而不管有什么任务正在执行。
Q5:getChildHtml(“content”)在Magento的哪里?
A:看到
编写上面的代码将会在内容页面的一部分中显示_nav.phtml(php+html[view part])左边的所有内容,主要有:
getChildHtml('content')--->将会显示声明的
Q6:在Magento管理中,“刷新Magento缓存”和:“刷新缓存存储”有什么区别?
A:有时缓存位置(如:/tmp/)或服务(如Memcache)与其他应用程序共享,“刷新Magento缓存”只删除这些Magento内部的可靠的跟踪条目,“刷新缓存存储”清除任何它们使用的时候影响其他应用程序的事物。通常的位置是Magento中的“var/cache/”,所以不是共享文件夹,使用任何一个按钮都是安全的。有时(很少)条目标记不清楚或Magento失去跟踪目标,那么第二个按钮有影响。
Q7:如何安装Magento BitCoin扩展
A:复制文件从/lib/ 到/lib/.
然后一切从/ app / 到/ app /。
确保上传/design/到正确的模板使用。
进入/community/代码,而不是核心或地方。
最后,ScaleWorks_Bitcoin.xml进入/ app / etc /modules。
验证线上购物可以看到the module in Admin- >Config- >Advanced
Q8:Magento缓存没有Magento文件夹和文件吗?
A:Magento缓存是基于对象而不是文件夹
Magento如何实现缓存的类的代码
Mage_Core_Model_Config//CONFIG
Mage_Core_Model_Layout_Update// LAYOUT_GENERAL_CACHE_TAG
Mage_Core_Block_Abstract// BLOCK_HTM
LMage_Core_Model_Translate// TRANSLATE
Mage_Core_Model_Resource_Db_Collection_Abstract// COLLECTION_DATA
Mage_Eav_Model_Entity_Attribute// EAV_ATTRIBUTE
Enterprise_PageCache_Model_Processor// FPC
Q9:一个或多个索引器无效,确保你的Magento cron在运行中
A:使用CLI导航到Magento安装根证书和重建索引
php magento indexer:reindex
或
php bin/magento indexer:reindex
Q10:“最近查看的”、“相关项目”和“特色项目”块从网站消失
A:重建索引-我的产品固定
system > index management
Q11:
在上面的代码中,目录/ product_compare_sidebar和目录/ product_list应该是一块类,所以宣布这些块的php文件的位置在哪里
有很多块类型,我怎么知道哪块类型是可用的和如何选择哪一块类型适用于现有块?
A:catalog/product_compare_sidebar => /app/code/core/Mage/Catalog/Block/Product/Compare/Sidebar.php
catalog/product_list => app/code/core/Mage/Catalog/Block/Product/List.php
如果运用eclipse PDT,只需要按下Ctrl+Shift+T和类型:*Catalog* Product_ Compare_ Sidebar 来找到第一类
UPDATE:搜索“classBlock”将会给你所有可用类型。如果使用eclipse PDT,只需要按下Ctrl+Shift+T和类型:Block。 段落结束时你的链接描述最重要的一个相当好。 我经常从Mage_Core_Block_Template创建自己的类型和继承,或直接使用它。
UPDATE_2:Mage_Core_Block_Abstract中,可以看到这个方法
/**
* Set block attribute value
*
* Wrapper for method "setData"
*
* @param string $name
* @param mixed $value
* @return Mage_Core_Block_Abstract
*/publicfunctionsetAttribute($name, $value=null){
return$this->setData($name, $value);}