2010-08-21 31 views
6

Tôi có chế độ xem Drupal nên xuất trình phát video bằng flash. Tôi đang cố gắng tạo ra một tập lệnh sẽ gọi bộ phim flash. Vấn đề là Chế độ xem áp dụng một số loại bộ lọc chặn các thẻ <script> của tôi, mở và đóng. Tôi đang tìm kiếm một giải pháp (một số thiết lập trong quan điểm sẽ vô hiệu hóa bộ lọc đó), nhưng dường như không thể tìm thấy câu trả lời. Các thẻ HTML khác hoạt động, nhưng có vẻ như thẻ script bị tước bỏ, có thể vì lý do bảo mật nào đó.Chế độ xem là tước thẻ từ đầu ra

tôi đã chọn tùy chọn để viết lại đầu ra của lĩnh vực này và tôi đang sử dụng các thẻ một cách chính xác

xem sẽ loại phong cách thuộc tính từ thẻ của tôi. Ví dụ:

<h3 style="border-bottom: solid 1px #ffcc99;">Some text here</h3> 

xuất hiện như thế này:

<h3>Some text here</h3> 

Có một giải pháp cho việc này? Cảm ơn bạn.


Begin sửa


Tôi đang dán bên dưới mã Tôi đang sử dụng trong quan điểm của tôi.

<div class="bloco-filme"> 
    [title] 
    <div class="field-imagem"> 
    [field_imagem_fid] 

    <script type='text/javascript' src='sites/default/files/js/swfobject.js'></script> 

    <div id='mediaspace[nid]'>Se você estiver visualizando esta mensagem, significa o Flash Player não está instalado em sua máquina. Para assistir ao vídeo é preciso instalar o Flash player</div> 

    <script type='text/javascript'> 
     var so = new SWFObject('sites/default/files/plugins/jqplayer/player.swf','mpl','205','undefined','9'); 
     so.addParam('allowfullscreen','true'); 
     so.addParam('allowscriptaccess','always'); 
     so.addParam('wmode','transparent'); 
     so.addVariable('file','[field_video_fid]'); 
     so.addVariable('quality','false'); 
     so.write('mediaspace[nid]'); 
    </script> 
    [field_video_fid] 
    </div> 
    <div class="field-resumo"> 
    <p>[body]</p> 
    </div> 
</div> 

Sửa lại


Đoạn mã trên được beinng posted theo quan điểm của tôi. Tôi đã tạo chế độ xem để xử lý việc này. Đây là khu vực lĩnh vực quan điểm của tôi:

Fields Node: Nid Node: Título (tiêu đề, đó là trong pt-br) Node: Link "EDITAR" (chỉnh sửa) Node: Link "apagar" (xóa) Conteúdo: Imagem hình ảnh thu nhỏ Conteúdo: video URL làm arquivo (URL tập tin video) Node: Corpo (Body)

tôi đã vô hiệu hóa màn hình của tất cả các lĩnh vực trên và đã đóng gói tất cả các mã trong cơ thể cánh đồng. Ở đó tôi đã chọn tùy chọn mà tôi muốn viết lại đầu ra của trường.

+0

Video là gì? Đây có phải là video youtube được nhúng không? Nếu nó được nhúng vào đâu? Nó có sử dụng trình phát được lưu trữ trên trang web của bạn như Wimpy không? Có phải tệp video được tải lên trường tệp CCK không? Bạn có dán HTML vào một nút được cho là để hiển thị video hay không và liệu video có được tải lên/hiển thị không? Nếu chúng được tải lên các nút, chúng có hiển thị khi xem trực tiếp nút không? – CitrusTree

+0

Xin chào, nó là một tập tin flv. Tôi đang sử dụng JWPlayer. Tôi đang sử dụng mã javascript để nhúng nó (swfobject.swf) như được đề xuất ở đây: http://www.longtailvideo.com/support/jw-player-setup-wizard. Video đã được tải lên thông qua trường tệp CCK.Trong trường video, tôi yêu cầu URL thô và sau đó tôi viết lại đầu ra để sử dụng tập lệnh để kéo video bằng URL thô của nó. Khi xem trực tiếp các nút, các video được hiển thị dưới dạng các liên kết để tải xuống, đó là mặc định cho các trường tệp có liên kết tải xuống. –

+0

"Trong trường video, tôi yêu cầu URL thô của nó và sau đó tôi đang viết lại đầu ra để sử dụng tập lệnh" - Bạn đang xử lý điều này ở đâu? Trong một mod tùy chỉnh? – CitrusTree

Trả lời

5

kiamlaluno xác định vấn đề cơ bản, nhưng để giải quyết nó, bạn sẽ phải sử dụng mẫu trường sẽ tránh sử dụng hệ thống lọc Chế độ xem sử dụng. Group 42 has a great guide để hướng dẫn bạn qua các khái niệm cơ bản về lượt xem, vì vậy tôi sẽ chỉ chú ý đến các chi tiết đó và nói về trường hợp cụ thể của bạn.

Trước tiên, bạn cần phải xác định trường nào bạn muốn viết lại: Tôi tin rằng bạn đang làm điều đó bằng cách sử dụng Cấu hình trường, nhưng không rõ trường nào bạn đang viết lại. Tôi sẽ giả định đó là lĩnh vực cơ thể. Xem qua hướng dẫn của Nhóm 42 để tạo một tệp mẫu mới cho trường nội dung trong chủ đề của bạn.

Trong file template mới, sử dụng đoạn mã sau:

<div class="bloco-filme"> 
    <?php print $view->field['title']->render($row) ?> 
    <div class="field-imagem"> 
    <?php print $view->field['field_imagem_fid']->render($row) ?> 

    <script type='text/javascript' src='sites/default/files/js/swfobject.js'></script> 

    <div id="mediaspace<?php print $view->field['nid']->render($row) ?>">Se você estiver visualizando esta mensagem, significa o Flash Player não está instalado em sua máquina. Para assistir ao vídeo é preciso instalar o Flash player</div> 

    <script type='text/javascript'> 
     var so = new SWFObject('sites/default/files/plugins/jqplayer/player.swf','mpl','205','undefined','9'); 
     so.addParam('allowfullscreen','true'); 
     so.addParam('allowscriptaccess','always'); 
     so.addParam('wmode','transparent'); 
     so.addVariable('file','<?php print $view->field["field_video_fid"]->render($row) ?>'); 
     so.addVariable('quality','false'); 
     so.write('mediaspace<?php print $view->field["nid"]->render($row) ?>'); 
    </script> 
    <?php print $view->field['field_video_fid']->render($row) ?> 
    </div> 
    <div class="field-resumo"> 
    <p><?php print $output ?></p> 
    </div> 
</div> 

Lưu tập tin mẫu mới của bạn, và bây giờ là lĩnh vực cơ thể sẽ được thay thế bằng sản lượng chính xác. Chỉ cần đảm bảo rằng tất cả các trường bạn đã tham chiếu trong mẫu đều trước trường nội dung trong danh sách Trường khi bạn chỉnh sửa Xem.

Bạn có thể thấy rằng đây chủ yếu là HTML với một vài bit PHP. Mã số như thế này:

<?php print $view->field['title']->render($row) ?> 

xuất nội dung của trường khác với trường hiện tại (tức là bạn sử dụng mã này khi bạn muốn tham chiếu các trường khác với Nội dung). Nó tham chiếu cùng một hàng và tìm giá trị của trường.

Và mã như thế này:

<?php print $output ?> 

Đầu ra giá trị của lĩnh vực hiện tại, trong trường hợp này, cơ thể.

+0

Xin chào, Mark, cảm ơn bạn rất nhiều, đó là một lời khuyên tuyệt vời, tôi hoàn toàn đi đúng hướng ngay bây giờ !! Vấn đề duy nhất tôi phải đối mặt bây giờ là khi tôi nhận được dữ liệu thô cho các trường tệp của mình, tất cả những gì tôi có thể nhận được là ID của các tệp. Thay vì URL (đầu ra được xử lý của các trường của tôi), tôi có thể nhận được dữ liệu thô. Điều tôi muốn là đầu ra $ của hình ảnh và các trường video. Bạn có bất kỳ ý tưởng làm thế nào tôi có thể làm điều đó? Cảm ơn. –

+1

Ah, xin lỗi về điều đó; '$ row' trả về kết quả thô. Tôi đã chỉnh sửa câu trả lời của mình để sử dụng '$ view-> field ['field_name'] -> render ($ row)', nó sẽ xuất ra các nội dung được trả về. –

+0

Xin chào, Mark, cảm ơn. Tôi đã giải quyết mọi thứ. Cuối cùng, tôi đã quyết định sử dụng các trường xem-view mà dường như với tôi như một cách tiếp cận tốt hơn một chút. Tôi chưa bao giờ có sự kiên nhẫn để thực sự xem xét tài liệu về quan điểm của họ. Nó rất lặp lại. Mặc dù tôi đã dành một số giờ vào ngày hôm nay, nó có thể sẽ rất hữu ích trong tương lai. –

2

Tôi không nghĩ rằng chế độ xem đang gây ra sự cố. kiamlaluno khá chính xác là định dạng đầu vào sẽ tách ra khỏi mã của bạn, trừ khi bạn thay đổi định dạng đầu vào, tuy nhiên tôi không chắc bạn sẽ thực sự có thể đạt được những gì bạn đang cố gắng sử dụng trường nội dung trong bất kỳ kiểu cách duyên dáng.

Sử dụng chế độ xem để xuất nội dung bạn cần từ từng loại nút, nhưng tôi không bao giờ sử dụng chế độ xem để xác định cách hiển thị này (ngoài các trường đặt hàng v.v.). Tôi có xu hướng làm điều này bằng cách sử dụng tùy chọn hiển thị trường (/ admin/content/node-type/[của bạn-node-type]/display) hoặc trong chủ đề. Nói cách khác, tôi chủ đề nút (loại nội dung) hoặc chính trường đó.

Tôi sẽ xem xét tìm kiếm ở đây - http://drupal.org/node/206980 - để xem cách chủ đề các trường riêng lẻ. sử dụng field_ (tiền tố tên trường) khi bắt đầu một bản sao của content-field.tpl.php trong thư mục chủ đề của bạn (bạn sẽ tìm thấy nó trong thư mục chủ đề của thư mục cck của bạn), và sử dụng nó để chủ đề trường cách bạn muốn nó được trình bày (sử dụng mã của bạn ở trên). Vì vậy, khi chế độ xem chọn nó để hiển thị nó, nó sẽ chủ đề nó bằng cách sử dụng mã của bạn ở trên.

Điều này, tất nhiên, có thêm lợi thế mà bạn không cần phải thêm vào bất kỳ mã nào vào phần tử nội dung của trang, đây không phải là cách có thể mở rộng để thực hiện điều này.

Hoặc, bạn có thể write a small module sử dụng hook_field() (link 1, link 2) để viết lại hiển thị trường, trừ khi bạn muốn có thể tùy chỉnh bất kỳ điều này trong khu vực quản trị của trang web, tùy chọn tốt nhất của bạn có thể để chủ đề chính trường như trên.

0

Tôi đã gần như chính xác vấn đề này (cảm ơn bạn đã đăng nó!), Nhưng một vài điều đã thay đổi (rõ ràng) trong ba năm kể từ khi đăng bài này. Trong trường hợp của tôi, sử dụng Views 3 và D7, tôi có thể dán tất cả các mã swfobject có liên quan vào Header hoặc Footer của tôi, đảm bảo sử dụng kiểu Text Area với Full HTML làm bộ lọc đầu vào văn bản .

Không cần chỉnh sửa template.php. Tôi thậm chí còn sử dụng thay thế mã thông báo để cung cấp các đối số lọc theo ngữ cảnh cho các lần quay phim của tôi.

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