Làm thế nào để bạn bùng nổ trong Smarty?

Ngôn ngữ tạo khuôn mẫu Smarty được sử dụng để xuất HTML cho các mẫu của CiviCRM theo cách riêng của nó khá mạnh, nhưng đôi khi nó không thể làm mọi thứ bạn muốn. Smarty có thể được mở rộng bằng cách sử dụng "plugin" -- bạn có thể tìm thấy một số ví dụ và tài liệu trực tuyến tại trang web của Smarty hoặc bằng cách tìm kiếm trên web. Lõi CiviCRM cũng cung cấp một số plugin của riêng nó cho các chức năng và công cụ sửa đổi tiện dụng mà bạn có thể sử dụng trong tiện ích mở rộng của mình [có thể bạn đã sử dụng {ts}]. Để xem những gì có sẵn, bạn có thể duyệt qua thư mục CRM/Core/Smarty/plugin và nếu bạn tìm thấy một thứ mà bạn quan tâm, bạn có thể grep thư mục mẫu để biết các ví dụ về cách sử dụng nó

Để cài đặt plugin Smarty mà không cần chỉnh sửa lõi CiviCRM [rất khó bảo trì], bạn sẽ phải triển khai hook_civicrm_config

Khi bạn đã tạo mô-đun hoặc tệp hook, bạn có thể truy xuất đối tượng Smarty và đăng ký đường dẫn plugin tùy chỉnh của mình

function yourmodule_civicrm_config[&$config] {
  $smarty = CRM_Core_Smarty::singleton[];
  array_push[$smarty->plugins_dir, __DIR__ . '/relative/path/to/custom/plugin/directory'];
}

Sau đó, trong thư mục plugin tùy chỉnh đó, bạn có thể đặt bất kỳ plugin Smarty nào bạn cần

Bạn cũng có thể sử dụng thủ thuật này để thay đổi hành vi khác của Smarty, chẳng hạn như liệu nó có thể đánh giá PHP được đặt trực tiếp trong mẫu hay không. Ví dụ

function yourmodule_civicrm_config[&$config] {
  $smarty = CRM_Core_Smarty::singleton[];

  // allow the explode[] php function to be used as a "modifier" in Smarty templates
  array_push[$smarty->security_settings['MODIFIER_FUNCS'], 'explode']; 
}

Tuy nhiên, hãy hết sức cẩn thận với các cài đặt này – nếu bạn không biết mình đang làm gì, bạn có thể mở các lỗ hổng bảo mật hoặc tạo ra một mớ mã khó bảo trì

Bạn có thể trích xuất các ngày thành biến riêng của họ sau đó không
$foo = substr["3_2007-07-17;5_2007-07-17;2_2007-07-17;…] ",0,35];
$dates = mảng[];

$encoded_dates = phát nổ[ “;”, $string_to_parse ];

foreach[ $encoded_dates là $date ] {

$dates[] = substr[$date, 3 ];

}

Đây không phải là một blog về lập trình, nhưng dạo này tôi làm việc rất nhiều với PHP và Smarty, và bất cứ khi nào tôi giải quyết được một vấn đề, tôi lại có cảm giác thành tựu kỳ lạ. Sau đó, tôi đến đây để khoe khoang

Dù sao đi nữa, ở đây đi

«Làm cách nào để tách một chuỗi trong công cụ mẫu Smarty?»

Thưa ngài, đó là một nhiệm vụ khá dễ dàng. Đây là một ví dụ

{gán var=”teststring” value=”31. 32″}
{gán var=”testsplit” value=”. ”. phát nổ. $teststring}
{$testsplit[0]}

{$testsplit[1]}

Ví dụ: giả sử bạn có một loạt Từ khóa Meta được nhóm lại với nhau trong cơ sở dữ liệu [trò chơi, trò chơi, trực tuyến, đang chơi] – và bạn muốn tách chúng ra để bạn có thể tạo các trang đích dành riêng cho từ khóa để tối ưu hóa tìm kiếm tại chỗ

Đây là cách bạn làm điều đó
[chúng tôi giả định rằng bạn có một biến tên là $MetaKeywords. ]

{* Tách một chuỗi dài thành nhiều mảng khác nhau *}

{gán var=”từ khóa” value=”,”. phát nổ. $Meta Từ khóa}

{foreach from=$keywords item=keyword}

{$keyword|trim}

{/cho mỗi}


Xem những gì chúng tôi đã làm ở trên? . Sau đó, chúng tôi tiếp tục bằng cách nói rằng giá trị mà chúng tôi muốn tách là “,” và cuối cùng chúng tôi cho nó biết chuỗi nào sẽ sử dụng [trong trường hợp này là $MetaKeywords]

Điều này dẫn đến chuỗi được lưu trữ trong $MetaKeywords bị chia thành các mảng khác nhau có tên $keyword[1], $keyword[2], $keyword[3], v.v.

poster jmcgin51Power

bài viết. 1899Tham gia. Thứ hai ngày 12 tháng 6 năm 2006 9. 02 giờ chiều

  • Trích dẫn

bởi jmcgin51 » CN ngày 05 tháng 7 năm 2009 10. 14 giờ chiều

Xin lỗi vì đã đăng nội dung nào đó không liên quan cụ thể đến CMSMS, nhưng tôi đã tìm kiếm từ đầu đến cuối trong hướng dẫn sử dụng Smarty cũng như các nơi khác trực tuyến và không thể tìm thấy câu trả lời. Như tiêu đề bài viết đã nói, tôi đang tìm cách tách chuỗi bằng Smarty. Tôi có một chuỗi "abc,def,ghi,jkl" và tôi muốn tách nó ở dấu phẩy thành một mảng

Tôi chắc chắn điều này là có thể, vì vậy tôi phải tìm kiếm bằng từ khóa sai

Tôi nghĩ nó có lẽ là một cái gì đó giống như
$var = abc,def,ghi,jkl
myArray = split{",", $var}
myArray[0] = 1
vân vân

Bất kỳ giúp đỡ?

Sửa lần cuối bởi jmcgin51 vào Chủ nhật 05/07/2009 11. 00 chiều, đã chỉnh sửa tổng cộng 1 lần

Chủ Đề