2011-07-07 31 views
7

Tôi đang tạo phần mở rộng phụ trợ, thay đổi trang đang hoạt động khi nhấp vào liên kết trong khu vực làm việc ở bên phải của pagetree. Vấn đề là: pagetree không cập nhật theo ID được trình bày trong khu vực làm việc.Cách thay đổi mục đã chọn trong TYPO3 pagetree

ID được thay đổi bằng cách chuyển ID thông số truy vấn sang mô-đun mod.php và hoạt động như mong đợi. Tôi đã cố gắng cập nhật các cây trang thông qua

 t3lib_BEfunc::openPageTree($this->id); 
    t3lib_BEfunc::setUpdateSignal('updatePageTree');

và sau

 <script type="text/javascript">'.t3lib_BEfunc::getUpdateSignalCode().'</script>

để được đưa vào sản xuất. Điều này cũng hoạt động (pagetree được làm mới, và các trang con ẩn của ID được thông qua được tiết lộ), ngoại trừ màu xám cho biết trang hiện tại trong cây trang được để lại ở vị trí trước đó của nó.

Bất kỳ ý tưởng nào về cách làm cho pagetree phản ánh mới $this->id?

+0

Bạn đã tìm thấy giải pháp chưa? Bạn liên quan đến phiên bản TYPO3 nào? – Mateng

+0

Rất tiếc, chưa tìm thấy bất kỳ điều gì. Dự án được đề cập đã bị bỏ quên trong một thời gian, nhưng dường như có được một lần nữa (tùy thuộc vào nguồn tài trợ của khách hàng), vì vậy tôi có thể sẽ xem xét lại nó ở đâu đó trong những tháng tiếp theo. Tôi sẽ chia sẻ bất kỳ giải pháp nào tôi tìm thấy. Cảm ơn bạn đã chạm vào câu hỏi trong đầu tôi. – norwebian

+0

Làm thế nào về việc cung cấp một tiền thưởng? Tôi muốn "tặng" 100 Đại diện nếu bạn duy trì câu hỏi này :). – Mateng

Trả lời

2

Đây là cách tôi đã làm. Trong đoạn mã PHP của module BE của tôi, tôi chỉ gọi openPageTree như vậy:

t3lib_BEfunc::openPageTree(76,false); 

tôi đã không gọi setUpdateSignal vì toàn bộ "cập nhật tín hiệu" quá trình cảm thấy một chút lạ cho tôi. Cũng xin lưu ý rằng openPageTree hiện có tham số thứ hai, bắt buộc.

Để hiểu biết của tôi, cuộc gọi này phải đủ để đặt trạng thái của cây trong phía máy chủ phiên người dùng. Bây giờ đến phía khách hàng.

Trong đoạn mã JavaScript của phần mở rộng của tôi, tôi chỉ cần chọn ID trang thích hợp và đó là nó:

<script type="text/javascript"> 
    if (top && top.TYPO3.Backend.NavigationContainer.PageTree) { 
    top.TYPO3.Backend.NavigationContainer.PageTree.select(76); 
    } 
</script> 

Trong khi tìm kiếm thông qua các nguồn của cây trang, tôi nhận ra rằng nó sẽ luôn luôn chọn top.fsMod.recentIds['web'] sau một Làm tươi. Đáng buồn thay, tôi đã không thể xác định cách tiêm đúng một giá trị ở đó. Dường như với tôi như giá trị chỉ được điều chỉnh thông qua tương tác của người dùng (có nghĩa là, người dùng đã nhấp vào một nút trong cây trang).

+0

OLiver, có thể mất chút thời gian cho đến khi đề xuất của bạn được xác minh. Tôi đoán norwebian sẽ cho chúng tôi biết nếu điều này có hiệu quả. – Mateng

+0

@Mateng: Không sao đâu. Tôi rất muốn biết nếu điều này thực sự giải quyết vấn đề cho anh ta hoặc nếu nó chỉ * trông * đúng :) –

+0

Cảm ơn bạn đã quan tâm đến câu hỏi của tôi! Tôi vừa mới xem xét lại stackoverflow và thấy giải pháp của bạn. Tôi thực sự đánh giá cao nó, và sẽ có cơ hội đầu tiên để kiểm tra nó. – norwebian

0

Trong Typo3 6.1, bạn có một hàm Javascript để chuyển đến một module web:

/** 
* jump the backend to a module 
*/ 
function jump(url, modName, mainModName, pageId) { 
    if (isNaN(pageId)) { 
     pageId = -2; 
    } 
    // clear information about which entry in nav. tree that might have been highlighted. 
    top.fsMod.navFrameHighlightedID = []; 
    top.fsMod.recentIds['web'] = pageId; 

    if (top.TYPO3.Backend.NavigationContainer.PageTree) { 
     top.TYPO3.Backend.NavigationContainer.PageTree.refreshTree(); 
    } 

    top.nextLoadModuleUrl = url; 
    top.TYPO3.ModuleMenu.App.showModule(modName); 
} 

Bạn có thể sử dụng nó như thế này:

<a onclick="jump('alt_doc.php?&edit[pages][\'uid_page\']=edit','web_list', 'web', 'uid_page')" href="#"><span class="t3-icon t3-icon-actions t3-icon-actions-document t3-icon-document-open">&nbsp;</span></a> 

Chỉ cần thay thế "uid_page" bởi uid đúng của bạn :)

+0

Đối với các portability, bạn nên thay thế alt_doc.php để có được url với một số chức năng tiện ích. Ngoài ra, hãy xem https://docs.typo3.org/typo3cms/extensions/core/8.7/singlehtml/Index.html#breaking-72360-removed-deprecated-entry-point-fallback. – wirap

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