2008-11-15 29 views
6

Tôi có phần mở rộng TYPO3 đang hoạt động. Nó được đính kèm this wiki page. Làm cách nào tôi có thể thay đổi mã của tiện ích mở rộng này để nó thuộc loại USER_INT? I E. Tôi không muốn TYPO3 lưu vào bộ nhớ cache đầu ra của plugin này và muốn TYPO3 gọi tiện ích mở rộng bao giờ hết thời gian một trang sử dụng phần mở rộng, tức là tắt bộ nhớ đệm cho tiện ích mở rộng này.TYPO3: Thay đổi plugin từ USER thành USER_INT loại

Trả lời

6

Để vô hiệu hóa bộ nhớ đệm cho phần mở rộng của bạn đi đến PIX/file class.tx_XXX_piX.php của bạn và loại bỏ các dòng sau (sau đây khai báo lớp của bạn):

var $pi_checkCHash = true; 

Bạn cũng cần phải thêm dòng sau đây trong phương pháp chính (dưới $ this-> pi_loadLL();):

$this->pi_USER_INT_obj=1; // Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object! 
+0

Tôi hiện đang ở trên một số dự án khác và không có môi trường để kiểm tra điều này, nhưng đây sẽ là thông tin hữu ích cho những người khác có cùng vấn đề. Cảm ơn bạn đã phản hồi. – avernet

+0

Điều này không tắt bộ nhớ đệm, nó chỉ vô hiệu hóa việc kiểm tra thông số cHash. – Sebs

+0

Mặc dù câu trả lời của bạn là chính xác, nó luôn luôn tốt hơn không thay đổi các tập tin lớp php của một phần mở rộng. Hoặc cố gắng sửa đổi nó bằng một hàm XCLASS hoặc sử dụng phương thức (ẩn danh) bên dưới, chỉ thay đổi tệp 'ext_localconf.php'. – Mateng

0

Khi bạn đã tạo ra phần mở rộng của bạn với Kickstarter bạn cũng phải đi đến tập tin [yourextension] /ext_localconf.php và thay đổi dòng này

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',0); 

này:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',1); 
4

grunwalski đó là điều ngược lại bạn phải thay đổi này:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',1); 

này:

t3lib_extMgm::addPItoST43($_EXTKEY,'piX/class.tx_yourextension_piX.php','_piX','list_type',0); 
+0

Chính xác. "Nếu $ cached được đặt làm đối tượng nội dung USER (cObject) được tạo - nếu không thì đối tượng USER_INT được tạo." –

2

Cách đơn giản nhất để giải quyết vấn đề của bạn là để quay lại Tiện ích mở rộng Maganer, hãy chọn tiện ích mở rộng của bạn, chọn "Chỉnh sửa trong Kickstarter" từ người thả xuống u, sau đó chọn plugin Frontend tương ứng để chỉnh sửa các thuộc tính của nó.

Chọn hộp kiểm đầu tiên có nghĩa là bạn muốn plugin của mình được hiển thị dưới dạng USER_INT cObjects. Sau đó, nhấp vào nút Xem kết quả, bỏ chọn tất cả các tệp PHP tùy chỉnh (mã của riêng bạn, như mô-đun và plugin) ở bên phải và nhấp vào nút VIẾT. Hãy cẩn thận. Nếu bạn không bỏ chọn hộp kiểm của các tệp của riêng mình, chúng sẽ bị ghi đè bằng các tệp giả.

1

Cách đúng và comlete để làm điều này là sự kết hợp các câu trả lời của @arturh và @Mehdi Guermazi:

  1. thay đổi các tham số cuối cùng trong addPItoST43() cuộc gọi trong ext_localconf.php 1-0
  2. xóa dòng var $pi_checkCHash = true; khỏi các định nghĩa thuộc tính trong phần đầu của lớp pi1.
  3. thêm dòng $this->pi_USER_INT_obj=1; vào đầu hàm main() trong pi1.

Những thay đổi này giống với những gì bạn sẽ nhận được khi bạn sử dụng phương pháp kickstarter được giải thích trong giải pháp @bencuss.

0

Chỉnh sửa tệp setup.txt của tiện ích "myext" của bạn. Thay đổi "USER" thành "USER_INT".

plugin.tx_myext = USER_INT 
plugin.tx_myxt { 

Tiện ích mở rộng này sẽ không bao giờ được lưu vào bộ nhớ cache.

Các vấn đề liên quan