2010-07-03 37 views
11

雖然它最典型的特點是功能齊全的購物車系統,但Magento是一個非常棒的框架。特別令人敬畏的是佈局系統。本質上,一個頁面是由「塊」創建的,它們都是從一個抽象類繼承而來的,它不假定使用模板文件。這些塊根據一個佈局進行彙編,該佈局是一組XML文件被合併在一起以描述每個頁面的塊的分層結構(DRY支持的繼承)。我喜歡這個系統,但Magento是一個非常沉重的框架。任何使用Magento等佈局和塊系統的PHP框架?

有沒有其他的框架使用類似的系統?即如上所述在模板文件之外定義的佈局。 PHP 5.3是可取的,但會考慮其他語言的框架。

+0

每個MVC框架有一個「查看」類某種,但大多數量基本上PHP的「包括」與一些輔助方法的方法。 Magento的佈局和區塊系統遠遠超出這個範圍。是否真的沒有其他的框架甚至接近? – ColinM 2010-07-08 15:05:31

+0

我也想關於像magento這樣的靜態和非靜態塊的問題......我找不到任何其他框架具有類似的後端面板和這些不錯的功能。 – Nasaralla 2012-04-02 11:02:16

+0

唯一的背景是,magento真的很重。 – Nasaralla 2012-04-02 11:05:17

回答

3

如果你已經設法讓你的頭靠近它,我會堅持使用magento。爲什麼浪費時間學習其他系統?如果速度是問題,那麼花點時間優化magento(關於這個主題的whitepaper,這是一個很好的開始),並考慮安裝apc。它給我的magento裝置一個提升。

+1

我已經做了很多系統優化,甚至在生產中使用了apc.stat = 0,但它是仍然非常緩慢。這是我想的一個好框架的價格。 -謝謝! – ColinM 2010-07-07 20:48:12

1

看看Symfony 2.0,它仍處於測試階段。 http://symfony-reloaded.org/

+0

Symfony 2似乎基本上是像Kohana 3這樣的HMVC,這很好,但是HMVC並不處理像Magento的塊系統那樣的擴展和注入。此外,Symfony的「 - >擴展」方法緊密地將視圖耦合到佈局,這有點違背了HMVC的目的... – ColinM 2010-07-08 14:39:52

0

我目前正在CakePhp上工作。它使用佈局系統。此外還有可以在佈局上創建塊的元素。它可能適合你。也沒那麼難學。

+0

他們被稱爲「元素」,但想法是一樣的。 – Kalium 2010-07-05 23:25:26

+0

CakePHP看起來和其他人一樣..一個視圖類本質上是一個榮耀的「包含」 – ColinM 2010-07-08 14:52:11

+0

但與Magento不同,CakePHP將無法使用佈局XML控制模板文件。如果我錯了,請糾正我。 – 2010-07-08 16:09:56

1

Zend Framework是一個這樣的框架,它具有幾乎與Magento相同的結構,並且使用正確的MVC架構(因爲許多其他版本的MVC架構存在,這些架構在許多可用的PHP框架中實現)。

但是,Magento框架已經被Varien大大修改,以適應其需求,從而爲使用XML配置文件控制模板&模塊提供支持。另外我認爲這是Magento框架的獨特特徵。

所以,總而言之,我認爲Magento(及其準系統)必須使用,因爲您已經在使用&「silvo」。

希望它有幫助。

+0

獨立的Zend絕對不會接近Magento的佈局和塊系統,但到目前爲止它看起來像你是對的,Magento必須以這種方式獨一無二。不過,我會暫緩接受一段時間的答案,希望還是有一些好的建議。 – ColinM 2010-07-08 15:08:26

0

Magento構建於Zend Framework。所以,你可以使用這個框架。但是現在,幾乎所有的PHP框架都使用佈局系統。

你也可以考慮Yii FrameworkDoo PHP

+0

典型的MVC框架佈局系統(包括Zend,Yii和Doo)甚至不接近Magento的佈局系統。 – ColinM 2010-07-07 20:49:56

0

建議你看一看的Agavi http://www.agavi.org,因爲它聽起來就像你想要做什麼。

+1

Agavi的圖層和佈局非常接近,但是一旦定義,它們就顯得非常靜態。此外,似乎嵌套的意見只能「拉進來」,而不是注入,除非我錯過了一些東西。 Magento的佈局可以實時擴展和修改,而側欄等塊可以通過佈局系統輕鬆擴展。 – ColinM 2010-07-08 14:28:13

+1

您也可以在運行時定義它們。佈局只是預先定義最常見用例的一種便捷方式。應用程序在不同視圖中定義不同插槽是非常正常的,特別是在最內層(通常稱爲「內容」);用一堆小部件或其他東西來想象儀表板。 這當然也意味着您可以隨時通過關於要執行的插槽渲染哪些子插槽的說明。 – dzuelke 2010-07-14 14:20:26

2

看看Symfony Templating組件。它速度快,重量輕,功能強大。

如果您不喜歡模板內的PHP代碼,請嘗試Twig

這兩個庫都是獨立的,支持模板的繼承並且易於擴展。

+0

Symfony Templating非常好..但是,似乎沒有指定的方式將內容插入到模板文件外部的插槽中(例如,將控制塊添加到側欄中)。看起來像$ this-> add('sidebar','更多內容在這裏')會做的伎倆,所以可能很容易擴展。 – ColinM 2010-07-22 08:58:43

+0

您可以從任何地方嵌入插槽內容:在模板$ this-> set('sidebar','sidebar content ...')和控制器$ engine-> set('sidebar','sidebar content ...' )。但是,如果您想將內容添加到側邊欄,只需將其連接起來,例如:$ engine-> set('sidebar',$ engine-> get('sidebar')。'added content'); – Serg 2010-07-22 22:29:16

+0

Symphony沒有後端面板和靜態塊等... AFAIK – Nasaralla 2012-04-02 11:02:58

3

不是嚴格的框架,但Drupal假裝是一個Web應用程序框架。你可以剝離Drupal到它的裸骨,並在它上面開發自己的模塊。使用它的模塊系統和模板引擎。

3

是的,Zend Framework絕對可以修改爲允許使用Magento風格的佈局引擎,並且它不必像Magneto那樣複雜定製。事實上,我自己也不得不這樣做,並且不讓它打敗我,我決定開始在Zend自己的庫中開始實現同樣的佈局引擎。

從這來到我的新博客我的第一篇博客文章,和我第一次張貼在SO

順便說一句,謝謝你帶ModMan爲Magento的生活科林。

Building a Magento-style Layout Engine for your Zend Framework Library

+0

很酷,您有可能將您的工作放在github上,以便我可以觀看它嗎? – ColinM 2011-07-06 22:40:20